At a glance
TikTok-attributed purchase value across every campaign in the selected ad account, summed over the period. The numerator of ROAS. NOT order revenue from the commerce platform, this is what TikTok says it drove, which differs from what Shopify or BigCommerce will count under TikTok-tagged orders. Caveat: post-iOS 14.5, expect TikTok-claimed revenue to over-state UTM-truth Shopify revenue by 30, 60% on iOS-heavy audiences without Events API.
| What it counts | total_complete_payment_value (formerly purchase_value) from the TikTok Ads Reporting API, advertiser-level. Includes Pixel-confirmed purchases, Events API server-side events, and TikTok’s modeled-conversion fill. |
| Reporting API level | Advertiser-level. Per-campaign / per-adgroup / per-ad revenue rolls up to this card weighted by attributed conversions. |
| Cost basis | N/A, this is the revenue side. (CPC, CPM, CPA appear in Total Spend and ROAS context.) |
| Currency | Account currency, single-currency per account. |
| Conversion attribution | 7-day click + 1-day view (post-iOS 14.5 default). Configurable per ad account to 1d, 7d, 14d, 28d for click and 1d, 7d for view. |
| Attribution window | Default 7d/1d. Lengthening to 14d or 28d typically lifts revenue 5, 12% but TikTok has flagged longer windows as deprecating. |
| iOS 14.5+ ATT impact | Material but smaller than Meta’s gap. TikTok skews younger and Android-heavier in US Gen-Z (typical iOS share 35, 45%, vs 55, 65% on Meta). Without Events API, expect TikTok-reported revenue to over-state UTM-truth by 30, 60% on iOS-heavy audiences. With Events API live, narrows to 10, 25%. |
| Events API vs Pixel-only | Pixel-only: ATT-blocked iOS purchases missing → revenue under-states (real higher); TikTok then auto-fills with modeled conversions → revenue over-states (modeled differs from real). Net: noisy. Events API live: tighter, less modeled fill, more reliable. |
| Modeled conversions | TikTok auto-fills attribution gaps. Modeled fill typically runs 12, 22% of total_complete_payment_value on Pixel-only DTC accounts; drops to 5, 12% post-Events-API. You cannot opt out. |
| View-through revenue | Included in the total_complete_payment_value field by default within the configured view window (typically 1 day). Pure click-only revenue is in a separate metric (payment_value_in_click). |
| Bot / invalid traffic | TikTok filters detected bot impressions and pre-billing fraud. Filtered traffic does not produce attributed revenue. |
| Time window | T/7D/30D vsP. Today’s value updates with 2, 6 hour ingest lag plus a small attribution tail (modeled-conversion fill takes 24, 72 hours to converge). |
| Alert trigger | drop >20% vsP. A revenue drop of more than 20% versus the prior period fires the card. |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your TikTok Ads data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK Gen-Z streetwear brand on Shopify. 30-day window 02 Apr 26 to 01 May 26. Account currency GBP. Events API live since 22 Mar 26. iOS share 41%.| Campaign | Spend (£) | TikTok-attributed revenue (£) | Per-campaign ROAS | Notes |
|---|---|---|---|---|
| Conversions, cold prospect (CBO, In-Feed) | 11,200 | 38,400 | 3.43x | 8 creatives, fortnightly refresh |
| Conversions, retargeting 7d | 2,400 | 18,200 | 7.58x | warm pool, smaller creative set |
| Catalog Sales (DSA) | 4,800 | 22,600 | 4.71x | feed-driven, top-30 SKUs |
| Spark Ads (creator boost) | 1,800 | 4,800 | 2.67x | direct read, ignores brand-lift |
| Account total (this card) | £20,200 | £84,000 | 4.16x |
- The headline £84k is honest by TikTok’s measurement, but the business-truth TikTok-driven revenue is closer to £45, 55k. TikTok inflates by ~60, 90% versus UTM-truth Shopify. Events API narrowed this from a pre-rollout 90, 130% gap to today’s 60, 90% gap; further closure depends on Pixel + Events API dedup quality and modeled-conversion behaviour.
- Retargeting at 7.58x ROAS is cookie-pool revenue you mostly would have captured anyway. The retargeting audience is people who already visited the site in the last 7 days; TikTok is taking last-click credit for buyers who would have come back via direct, email, or organic. The “true acquisition” ROAS is closer to the cold-prospect 3.43x.
- Modeled fill is running 14% of
total_complete_payment_valuethis period. Reasonable, indicates Events API is healthy (modeled fill dropped from ~26% pre-rollout). If you see modeled fill above 22% on an Events-API-live account, dedup is broken; checkevent_idmatching and event coverage. - Spark Ads ROAS at 2.67x looks underwhelming but the cost line here doesn’t include the creator partnership fee (~£600 for the 4 boosted posts). Real Spark cost is £2,400, real Spark ROAS is 2.0x on direct attribution. Spark is an awareness + UGC-rights play, not a direct-response winner.
- Revenue dropped 14% versus prior 30D. Below the 20% trigger, but trending. Spend held flat, ROAS dropped 4.78 → 4.16. Creative fatigue signature, the cold-prospect pool has seen 5 of the 8 creatives 4+ times each. Refresh the cold-prospect creative within 7 days to avoid a >20% drop next window.
- Revenue up + spend up = healthy scaling, watch ROAS to confirm.
- Revenue flat + spend up = scaling beyond efficient frontier (creative-fatigue signature on TikTok).
- Revenue down + spend up = creative is exhausted, refresh now.
- Revenue down + spend flat = something changed in the funnel, check Conversions Trend and Clicks vs Conversions.
- Revenue up + ROAS up = winning. Push budget if pacing allows.
Sibling cards merchants should reference together
| Card | Why pair it with Total Revenue | What the combination tells you |
|---|---|---|
| Total Spend | The denominator of ROAS. | Whether revenue moved on cost-side or revenue-side. |
| ROAS | The efficiency ratio. | Revenue up alone is healthy only if ROAS held. |
| Revenue by Campaign | Per-campaign split. | Whether revenue is concentrated in one campaign (single-point-of-failure risk) or spread. |
| Conversions Trend | The volume side of revenue. | Revenue down + conversions down = real channel deterioration. Revenue down + conversions flat = AOV problem. |
| Conversion Lag | TikTok’s 7d/1d window means today’s revenue is incomplete. | Use the lag card to gauge how much of “today’s” revenue is still inbound. |
| Wasted Spend | Adsets that produced no revenue. | If revenue is flat but spend is rising, wasted-spend share is climbing. |
| GA4 Revenue by Channel | Independent attribution check on TikTok’s self-reported total_complete_payment_value. | TikTok typically reports 30, 60% higher than GA4. The ratio is a proxy for your iOS gap. |
| Shopify Total Revenue | The truth side. UTM-tagged TikTok revenue in Shopify is the lower bound; TikTok’s claim is the upper bound. | The “true” TikTok revenue sits between, weighted toward Shopify (typically 40 TikTok / 60 Shopify blend for the CFO read). |
| Meta Ads Total Revenue | Peer paid-social revenue. | Compare share-of-paid-social revenue. Brands skewing TikTok-heavy on revenue (not just spend) typically have a younger ICP. |
Reconciling against the vendor’s own dashboard
Where to look in TikTok Ads Manager: TikTok Ads Manager > Campaign > Total complete payment value column. Set the date range to match this card’s window. The footer total should reconcile to within sub-percent rounding. Other Ads Manager columns that look similar but aren’t:- Complete payment (count, not value): the number of attributed purchases, not their revenue.
- Total purchase value (deprecated alias): in older accounts, may still surface. Same field, different label.
- Conversion value (CPA-objective campaigns): lead-gen value, not revenue. Don’t conflate.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days off | TikTok uses ad-account TZ (immutable). This card uses UTC. For 30D windows the gap averages out; for “today” or “yesterday” it can shift the number meaningfully on US Pacific accounts. |
| Attribution window changes | Direction depends | If your account changed from 7d/1d to 14d/1d mid-window, TikTok retroactively reflows the data; this card matches whatever you’ve configured. A 7d→14d switch typically lifts revenue 5, 12%. |
| Modeled conversions | Both inflate equally | TikTok blends modeled into total_complete_payment_value; this card reads the same blended field. |
| Ingest lag | Lower for “today” | 2, 6 hour ingest lag, plus 24, 72h modeled-conversion convergence. Today’s value reads low until catchup. |
| Currency | None expected | Both UI and card use the ad-account base currency. Multi-currency advertisers operate per-account. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_revenue_by_channel | GA4 Paid Social TikTok revenue ÷ this card ≈ 0.6, 0.85 | TikTok uses last-click within 7d/1d; GA4 uses last-non-direct click. TikTok inflates by 30, 60% versus GA4 structurally on iOS-heavy accounts. |
shopify.total_revenue filtered to TikTok UTM | This card claims 1.4, 2.0x the UTM-truth Shopify number | Pixel + Events API + modeling all credit conversions Shopify cannot UTM-attribute back. Use a 40/60 TikTok / Shopify blend for the CFO read. |
facebook_ads.fac_total_revenue | Independent paid social revenue | No overlap. Compare share-of-paid-social revenue, not absolute. |
google_ads.gads_roas | Independent paid channel | Different ecosystem. |
Known limitations / merchant FAQs
Why does TikTok claim £84k of revenue but Shopify only shows £43k from TikTok-tagged orders? Same question as Meta vs Shopify: three layers stack.- Different denominator definitions. TikTok’s revenue uses
total_complete_payment_value= TikTok-claimed revenue including modeled conversions and 7d-click + 1d-view attribution. Shopify’s “TikTok-source revenue” uses UTM-tagged orders only. They measure different sets of orders. - iOS 14.5 ATT. Even on the same orders, TikTok has Pixel + Events API + modeling; Shopify has only what’s tagged with the right UTM. iOS users without ATT consent often strip UTMs at link-click; Shopify counts those orders as Direct, TikTok still claims them.
- Last-click vs UTM-truth. TikTok credits any purchase that touched a TikTok click within 7 days. Shopify only credits orders where the customer arrived via a UTM-tagged TikTok link as their last referrer.
- Shopify: TikTok official Sales Channel app > enable Events API > “Maximum” data sharing. 30, 60 minute setup. Auto-deduplicates Pixel + Events via
event_id. Easiest path. - BigCommerce: TikTok Pixel app + manual Events API via Tag Manager + custom event_id. 2, 4 hours.
- Adobe Commerce / Magento: TikTok extension + custom server endpoint. 1, 3 days.
- Custom / headless: Build a server-side proxy mirroring Pixel events. 1, 2 weeks.
- In all cases: deduplicate via
event_id(unique per purchase) and matching event timestamps. Test in TikTok Events Manager > Test Events. Allow 7, 14 days for retraining before judging the revenue lift.
total_complete_payment_value), typically 12, 22% of total revenue for Pixel-only DTC accounts. Patterns:
- Pre-Events-API: modeled fill ~20, 30%. Inflated.
- Post-Events-API clean: modeled fill ~5, 12%. Healthy.
- Post-Events-API still high (>20%): implementation gaps. Audit
event_iddeduplication and event coverage.
- Ingest lag (2, 6 hours typical on TikTok, slower than Meta or Google).
- Modeled-conversion convergence (24, 72h after the conversion event).
- Attribution tail (a click that happens today can credit revenue up to 7 days later).
total_complete_payment_value field. The card includes Spark Ads revenue alongside In-Feed automatically. What it doesn’t include: organic revenue from the creator’s own audience that didn’t click the boosted ad. That organic spillover is a separate measurement question (use UTM tags or attributed-link tracking).
Hashtag Challenge revenue, how is it counted?
BHC support spend (running auction-bought reach support) shows revenue if Pixel / Events API fired on a click. Most BHC value, however, is awareness-tier and shows up later as branded search lift on Google or organic site traffic, not as direct attributed revenue here. Don’t expect BHC ROAS to read accurately on direct attribution.
Should I trust TikTok more than Meta on revenue?
Slightly. TikTok’s iOS share is structurally lower, modeled fill is similar to Meta’s, and the attribution window is the same default (7d/1d). The structural over-claim is smaller. But the volatility is higher (creative fatigue is faster, algorithm is more reactive). Use the same 40/60 platform / Shopify blend on both; just expect TikTok’s number to be slightly closer to truth than Meta’s on a like-for-like basis.
Can I use TikTok’s revenue number for tax / accounting?
No. Use Shopify (or your commerce platform) revenue, never the platform-attributed claim. TikTok’s revenue is a measurement of TikTok-driven business; the commerce platform is the source of truth for what was actually paid. This card is for marketing performance reads, not finance reconciliation.