Campaign performance daily
Daily campaign performance with the rates Ads Manager shows: CTR, CPC, CPM, cost per conversion and Complete payment ROAS.
- Grain
- date_day x account_id x campaign_id
- Built from
- 5Raw tables
- 5Staging
- 2Core
- 1Analytics
- Reads from Tiktok Ads
- adad_daily_reportad_groupadvertisercampaign
- Ships as
- Weld and dbt SQL, open source on GitHub
1-- core.tiktok_ads.campaign_performance_daily
2-- Daily campaign performance with the rates Ads Manager shows: CTR, CPC, CPM,
3-- cost per conversion and Complete payment ROAS.
4--
5-- Grain: date_day x account_id x campaign_id. Currency: the advertiser's.
6-- Depends on: core.tiktok_ads.ad_performance_daily
7--
8-- Built by summing ads; spend, impressions, clicks and conversions add up from
9-- ad to campaign in TikTok's own reports. Reach does not (one person can see two
10-- ads), so it is left out here rather than summed into a wrong number.
11--
12-- conversions add up the optimisation events of each ad group. In a campaign
13-- whose ad groups optimise for different events, that total mixes event types,
14-- exactly as the campaign row in Ads Manager does. Use
15-- ad_group_performance_daily to keep them apart.
16--
17-- Rates are ratios of sums at this grain. To report a week or a month, re-sum the
18-- base columns and divide again; averaging the daily rates weights a quiet day the
19-- same as a busy one.
20
21SELECT
22 date_day,
23 account_id,
24 account_name,
25 currency,
26 campaign_id,
27 campaign_name,
28 campaign_objective,
29
30 SUM(spend) AS spend,
31 SUM(impressions) AS impressions,
32 SUM(clicks) AS clicks,
33 SUM(conversions) AS conversions,
34 SUM(conversion_value) AS conversion_value,
35 SUM(complete_payments) AS complete_payments,
36 SUM(app_purchases) AS app_purchases,
37 SUM(app_purchase_value) AS app_purchase_value,
38 SUM(video_views) AS video_views,
39 COUNT(DISTINCT ad_id) AS active_ads,
40This model and the 7 it depends on. Deploy them together; refs like {{staging.…}} resolve to the matching folders in Weld, and the dbt view uses source() and ref().
How it counts. And where it stops.
Built by summing ads; spend, impressions, clicks and conversions add up from ad to campaign in TikTok's own reports. Reach does not (one person can see two ads), so it is left out here rather than summed into a wrong number. conversions add up the optimisation events of each ad group. In a campaign whose ad groups optimise for different events, that total mixes event types, exactly as the campaign row in Ads Manager does. Use ad_group_performance_daily to keep them apart. Rates are ratios of sums at this grain. To report a week or a month, re-sum the base columns and divide again; averaging the daily rates weights a quiet day the same as a busy one.
Raw tables it reads
- raw.tiktok_ads.ad
- raw.tiktok_ads.ad_daily_report
- raw.tiktok_ads.ad_group
- raw.tiktok_ads.advertiser
- raw.tiktok_ads.campaign
More Tiktok Ads models
Put Tiktok Ads in front
of your agents.
Connect Tiktok Ads, deploy the models, and ask questions in Claude, Cursor or ChatGPT. Free for 14 days, no credit card.