Reporting
Which TikTok Ads metrics actually predict results
Most TikTok reports contain forty columns and answer no questions. A short hierarchy of metrics, in the order a decision actually needs them.
Three tiers of metric
It helps to sort every metric into one of three groups before it ever reaches a dashboard.
- Outcome metrics — what the business cares about: conversions, cost per result, ROAS, revenue. They are the truth, and they arrive late and noisily.
- Leading metrics — things that move before outcomes do: hold rate, CTR, frequency, CPM, conversion rate by step. They are how you act in time.
- Descriptive metrics — impressions, reach, video views, engagement counts. They describe scale. They rarely change a decision on their own.
The common failure is a report built almost entirely from the third group, with one outcome metric at the end and nothing from the middle.
The metrics worth watching, and what each one is for
| Metric | Tier | What it actually tells you |
|---|---|---|
| Cost per result / CPA | Outcome | The scoreboard. Useless on its own for diagnosis — it tells you something is wrong, never what. |
| ROAS | Outcome | Essential where order values vary. Watch it alongside CPA, since a stable CPA with a falling average order value looks fine until revenue does not. |
| Conversion rate (click → result) | Leading | Separates a traffic-quality problem from a landing-page or offer problem. If CTR is up and CVR is down, you bought worse clicks. |
| CTR | Leading | Interest in the offer given the creative. The single best early indicator of creative decline, when compared to the creative's own baseline. |
| 3s / 6s hold rate | Leading | Hook strength. Moves before CTR does, and separates a bad opening from a bad offer. |
| Frequency | Leading | Saturation pressure. Rising frequency with falling CTR is the classic fatigue signature. |
| CPM | Leading / context | Auction pressure and audience quality. A CPM jump with unchanged creative usually means competition or a targeting change, not your ad. |
| Spend pace by hour | Leading | Whether budget is landing in the hours that convert. See the pacing guide. |
| Impressions, reach, video views | Descriptive | Scale context. Necessary for computing the metrics above, rarely a decision on their own. |
| Likes, shares, comments | Descriptive | Useful as a creative signal and for organic spillover; a poor optimization target for direct response. |
Attribution: why your numbers disagree
Platform-reported conversions and the conversions in your own database will not match. That is normal, and it has boring reasons: attribution windows, view-through settings, modelled conversions, deduplication between pixel and server-side events, cross-device behaviour, and the simple fact that the platform restates figures for several days after the event.
Practical rule: use platform numbers to compare things inside the platform — this ad group against that one — and use your own database to decide how much the channel is worth in total. Trying to make the two agree exactly is a research project, not a reporting task.
One consequence matters for automation: because figures restate, any rule that reacts to cost-per-result should look at a window that has had time to settle, and should require a minimum number of events before acting.
Significance, briefly
A great deal of daily optimization is reacting to noise. An ad group with four conversions and a CPA of $12 has not proven anything; the same ad group tomorrow can show $40 without anything having changed.
Two guards remove most of the damage:
- Minimum spend: do not judge an ad group until it has spent a meaningful multiple of your target CPA — three times is a reasonable working floor.
- Minimum events: do not judge cost per result on single-digit conversion counts.
Both belong in your reporting and in every automated rule you write.
A report a buyer can act on
The most useful daily view we have found has four blocks:
- The scoreboard: spend, CPA, ROAS versus target, for the account and the period. Four numbers, no more.
- Exceptions: ad groups that broke a threshold — CPA drift, pacing anomaly, zero delivery, ad rejection. Sorted by wasted spend, not alphabetically.
- Creative status: which assets are declining against their own baseline, and which new ones are outperforming what they replaced.
- Opportunities: ad groups that are budget-capped while beating target — the list of cheap decisions available today.
Everything else belongs in a drill-down, reachable in one click and read only when a question demands it.
Workspace overview
The same four blocks in the Freshlytics overview — illustrative sample data.
What to stop reporting
- Metrics nobody has ever made a decision from — if a column has never changed an action, cut it
- Account-level averages presented as if they described individual creatives
- Week-over-week comparisons where one week contained a structural change nobody noted
- Any number without the target it is supposed to be measured against
In Freshlytics: targets, significance guards and exception-first sorting are built into the reporting layer, so the daily view starts from what needs a decision rather than from everything the API returned. Request beta access.