Attribution report

What the platforms claim — and what actually happened

Ad platforms grade their own homework. This report puts each platform's claimed revenue, ROAS and conversions next to what RoasProof measured from your own tracked conversions — and the gap between them.

The report blends ad spend pulled hourly from Meta, Google Ads and TikTok with revenue computed entirely from first-party data: your own conversions and click records. No third-party analytics call is involved.

RoasProof's Reported vs measured panel: the ad platforms claim €34,900.73 revenue and 1.44× ROAS, RoasProof measured €56,892.56 and 2.35× — +63.0% vs platform, shown side by side

Reported vs. measured

Two ROAS columns, one honest gap

For revenue, ROAS and conversions, every row shows the platform's figure next to RoasProof's, with the signed gap. When a platform claims 25% more — or less — than you measured, the cell tints.

RoasProof's Performance table for eight campaigns across Meta, Google Ads and TikTok: spend, platform-reported and RoasProof-measured conversion value, both ROAS columns, conversions, CPA, AOV, conversion rate and clicks — the TikTok row shows a dash where the platform reports no value
  • Measured spend, not estimated spend

    Spend syncs hourly from Meta, Google Ads and TikTok — the only three spend sources. Platforms restate recent days, so a trailing ~3-day window is re-pulled, and a re-synced day replaces its rows, never sums them.

  • Five attribution models, everywhere

    First click, last click, linear, time decay with a 7-day half-life, and position-based 40/20/40. The lookback window is configurable per workspace; the default is 30 days.

  • “—” is not 0.00×

    TikTok reports no revenue claim at all, so that cell renders “—”, never a fake 0.00× ROAS. And revenue in two currencies is never blended into one total: two currencies means two rows.

One report, three levels

Campaigns, ad sets and ads — down to the creative

Three tabs share one filter layer: attribution model, date range with presets and custom, store, ad account, platform, and a switch that hides rows with no spend or revenue.

  • The columns media buyers actually use

    Spend, both revenue and ROAS figures, conversions, CPA, AOV, conversion rate, Clicks, Impressions, CTR, CPC, CPM, and a new-customer block: count, revenue, share, AOV. Hide or reorder columns; search finds the row.

  • The creative behind the number

    Ad rows carry a creative thumbnail with a preview, so you check the asset without leaving the table.

  • Tagging health, diagnosed

    The report separates “nothing is tagged” from “only campaign IDs are tagged” — fixed by adding utm_content — shows a coverage bar, and flags campaigns spending with no attributed revenue.

RoasProof's Tagging health panel: a coverage bar splitting €81,643.17 of tracked revenue into 86.9% fully tagged, 9.4% campaign IDs only and 3.7% untagged, with the fix — add utm_content to the ad URLs — spelled out beneath

Per-creative totals across every campaign live in the Creatives report.

Revenue by channel

The revenue no ad explains, counted too

Every conversion lands in a channel, with visitors, conversions and revenue per channel, per currency.

PaidOrganic searchOrganic socialEmailReferralDirectUntracked
  • Visitors and conversions, not just revenue

    Each channel shows its visitors, conversions and revenue — where the volume comes from, not just the money.

  • Klaviyo revenue, highlighted

    Email revenue attributed to Klaviyo gets its own highlight: you know what your flows earn before an ad takes the credit.

For the click-by-click story behind one purchase, open its journey; for delivery health, the dashboard.

Export & share

Reports clients can open without a login

CSV that honors your filters

Export campaigns, ad sets, ads or channels — the file matches what the filters show.

A digest on a schedule

A weekly or monthly email digest goes to the recipients you choose.

Read-only share links

Unbranded and revocable, with relative date ranges — a bookmarked link stays current instead of freezing on last month.

Start sending signals your ad platforms can actually use.

Connect your store, verify your events, and watch match quality climb. Free 14-day trial, no credit card required.