← All Guides

analytics

Ads Attribution & ROAS

Attribution as causal inference: signal taxonomy, measurement bias, window mechanics, and margin-adjusted ROAS derivation for TikTok Shop GMV Max campaigns.

Attribution as a Causal Inference Problem

Attribution is not measurement — it is causal inference under incomplete information. The fundamental question is: did this ad cause this purchase, or did the purchase happen despite the ad?

TikTok’s attribution system cannot answer that question. It answers a weaker one: did this buyer interact with this ad within a defined window before purchasing? The gap between those two questions is the measurement bias baked into every ROAS figure.

Known structural biases:

  • Organic cannibalization: View-through attribution captures buyers already in the purchase funnel via organic search, affiliate, or direct. The ad gets credited for a conversion it did not cause.
  • Selection bias in click-through: Buyers who click ads skew toward higher purchase intent. Click-attributed ROAS overstates the causal lift from the ad itself.
  • No holdout control: TikTok Ads Manager provides no built-in incrementality testing. Attributed revenue cannot be isolated from counterfactual revenue without running manual holdout experiments.

Use attributed revenue as a directional signal. Treat it as an upper bound on incremental revenue, not a measurement of it.

Click-Through vs View-Through Signal Taxonomy

SignalTriggerAttribution WindowCausal FidelityOver-Attribution Risk
Click-throughBuyer clicks ad unit7 days post-clickHigher — explicit intent signalModerate
View-throughBuyer views ad, no click1 day post-viewLower — passive exposure onlyHigh

View-through attribution is the primary source of inflated ROAS. A buyer who viewed an ad and purchased the next day through organic search is attributed to the ad. The 1-day window is narrow by design, but on high-frequency categories (consumables, replenishment SKUs) the overlap with organic purchase cycles is significant.

View-through attribution on replenishment SKUs with purchase cycles under 30 days produces systematically inflated ROAS. Cross-reference attributed revenue against settlement revenue for the same SKU cohort to size the overcount.

Fixed Attribution Windows — Platform Constraints

TikTok’s attribution windows are fixed at the platform level:

  • Click-through: 7 days post-click
  • View-through: 1 day post-view

These are not configurable in TikTok Ads Manager or in AxonRow. All campaign comparisons must use the same attribution window. Switching windows retroactively changes every historical metric.

Last-touch model mechanics: When multiple qualifying interactions exist within their respective windows, TikTok assigns 100% credit to the most recent one. A buyer who clicked Ad A on day 1 and viewed Ad B on day 6 — Ad B receives full attribution. First-touch and linear models are not available.

ROAS and Margin-Adjusted True ROAS

Nominal ROAS measures attributed revenue efficiency against spend:

ROAS = Attributed Revenue / Ad Spend

Nominal ROAS is directionally useful for campaign-to-campaign comparison within the same product category. It is not a profit signal. A ROAS of 4.0 on a 15% gross margin product generates less profit than a ROAS of 2.0 on a 60% gross margin product.

True ROAS incorporates COGS and platform fees to produce a profit-adjusted return:

True ROAS = (Attributed Revenue - COGS - Platform Fees) / Ad Spend

Where platform fees = TikTok commission + fulfillment fees + returns, sourced from settlement transaction data (Finance API, not Order API).

True ROAS breakeven = 1 / Gross Margin %

At 30% gross margin, True ROAS breakeven is 3.33. Campaigns below this threshold are destroying margin regardless of nominal ROAS.

True ROAS below 1.0 means ad spend exceeds gross profit generated. Nominal ROAS can be above 2.0 simultaneously if margins are thin. Never optimize on nominal ROAS alone for low-margin SKUs.

Over-Attribution Bias — Sizing the Error

Organic cannibalization produces systematic over-attribution. Estimation approach:

  1. Identify SKUs with significant organic traffic (bestselling rank, affiliate creator volume)
  2. Compare attributed revenue (Ads Manager) against settlement revenue (Finance API) for the same SKU + time window
  3. The delta = over-attributed revenue from organic buyers captured in the attribution window

This does not produce an incrementality estimate — it sizes the ceiling of the measurement error. Actual incrementality requires holdout experiments.

Period comparison distortion: if attributed revenue for a given campaign is still accumulating (buyers within the 7-day click window have not yet completed their purchases), the period is not closed. Comparing a closed period against an open one will show the open period as underperforming. Allow 7 days of attribution lag before treating a campaign’s ROAS as final.

Attribution Lag Effects on Period Comparisons

Attribution lag is deterministic, not random:

  • Click-through window: up to 7 days of lag
  • View-through window: up to 1 day of lag

Operational consequences:

ScenarioEffect
Campaign paused todayContinues accumulating attributed revenue for 7 more days from prior clicks
Week-over-week comparison on MondayCurrent week is 0–1 days closed; prior week is fully closed — asymmetric comparison
Budget cut mid-monthMonth ROAS will rise in the following 7 days as deferred attribution resolves against lower spend

Always add a 7-day attribution buffer before declaring a campaign’s performance period closed.

GMV Max Campaign Reporting Dimensions

GMV Max campaigns have no ad group layer. Reporting dimensions available:

  • Campaign — top-level spend, attributed revenue, ROAS
  • Product — per-SKU attributed revenue and ROAS within a campaign
  • Creative — video and image asset performance
  • Livestream — live shopping session attribution
  • Duration — time-slot breakdown within a campaign period

Ad group-level reporting does not exist for GMV Max. Granularity below campaign level is product and creative dimensions only. Queries expecting ad group IDs will return null.

AxonRow surfaces campaign and product dimensions. Product-level True ROAS is computed by joining campaign attributed revenue with settlement transaction SKU data — the only path to per-product margin-adjusted ROAS without manual export.

See these metrics live for your shop

Start Free Trial