Skip to content

Tracking

Read the attribution reports

Find which sources bring you customers and what they are worth — and know exactly what each number counts before you act on it.

The reports answer one question: which sources bring you customers, and what those customers are worth. They are built from the events your sites and your backend already send — there is nothing to configure and nothing to schedule.

Four surfaces make up the reporting layer.

SurfaceWhereWhat it answers
Revenue by sourceReportsWhich channels and campaigns earned the money
People behind a sourceReports, View people on a rowWho those customers are
The attributed journeyPeople, open a personWhy this person was credited to that source
ROAS and You vs GoogleGoogle AdsReportsWhat Google spend earned back

MCP. tracking_reports_revenue_by_source, tracking_reports_source_people and tracking_reports_attributed_journey return the first three to an agent.

Set the four controls

Reports has four controls, and every number on the page depends on all four. They are kept in the address of the page, so a report you are looking at can be sent to a colleague as a link.

ControlOptionsDefaultWhat it decides
Attribution modelLast Click, First ClickLast ClickWhich touchpoint of a journey gets the credit
Lookback window7, 14, 30, 60, 90 days30 daysOnly touchpoints inside this window before the conversion can be credited
Date rangeLast 7 days, Last 30 days, Last 90 days, CustomLast 30 daysWhich customers are in the report — not which money is counted
Domain filterAll domains, or one of yoursAll domainsWhich touchpoints are considered at all

Nothing is frozen. Attribution is recomputed from the same stored history every time you change a control, so a report is an answer to a question you asked rather than a decision taken at the time of the sale.

Read revenue by source

The main table: one row per channel, with the money and the number of customers credited to it.

A row counts customers whose first ever paid conversion falls in the date range, and shows their lifetime net revenue. Both halves of that sentence matter:

  • The date range selects people, not payments. Someone whose first paid conversion was in the range is in the report, and everything they have paid before or since — later renewals included — is in their number.
  • Someone whose first ever paid conversion was before the range is not in the report at all, even if they paid you during it. A customer who churned and came back is counted once, in the range of their original conversion.

A paid conversion is the start of a subscription: a person enters the report from the date of a subscription_started event carrying a subscription_ref. Payments on their own give a person money and Customer status but create no conversion, so a product that sends only payment events has nobody to credit — see Send revenue from your backend.

Revenue is net: refunds are subtracted, and the amount refunded is shown next to the figure rather than hidden. Money is kept per currency and never converted — a row that earned dollars and euros shows two lines, and there is no total across currencies anywhere, because no exchange rates are held.

The four channels

Every credited touchpoint is classified into exactly one channel, by the first rule that matches:

  1. Paid — the landing URL carried an advertising click id (gclid, fbclid, msclkid, ttclid, twclid, li_fat_id, dclid, gbraid or wbraid), or its utm_medium was cpc, ppc, paid, paidsocial or display. A URL carrying more than one click id keeps the first of that list, so a Google click that has both gclid and gbraid is a gclid.
  2. Emailutm_medium was email.
  3. Organic — the visit had a referrer on a host that is not one of your own.
  4. Direct — no referrer at all, or a referrer from a domain the same person was already browsing on.

A visit from one of your own sites to another is direct, not organic: internal navigation is never counted as a new source.

Expand a channel row to see it split by the campaign tagging of the winning touchpoint — utm_source / utm_medium / utm_campaign. A touchpoint with no tagging at all appears as (no UTM). Rows that arrived on an advertising click id are kept separate from rows that did not, even when their tagging matches, so a Google click never merges into an untagged one. The tagging shown is that of the one winning touchpoint, not of every visit the person made.

Unattributed

Unattributed is its own row and its meaning is exact: a conversion for which no touchpoint fell inside the lookback window, plus money that could not be tied to any person at all. Nothing in that row is ever spread over the other rows.

A large unattributed row usually means one of four things:

  • your lookback window is shorter than your sales cycle;
  • your traffic arrives on pages the script does not run on;
  • the events that carry your revenue reach Tracking without anything that ties them to a browser;
  • a large share of your visitors decline consent.

Consent is the one no setting can fix. A visitor who declines is still counted as traffic, but their events never create a person and never carry a click id, so they cannot be credited to a source and their money — if they buy — lands here. See What tracking does with a consent answer.

When a domain filter is applied, the row holds only conversions with no qualifying touchpoint on that domain; money that belongs to no person is left out of the filtered view.

Match rate

The badge above the table is the share of conversions in the range that were credited to a touchpoint. The rest are the Unattributed row. It is a count of conversions, not an amount of money — one large unattributed customer can leave a high match rate looking better than the revenue split does.

What the numbers do not mean

  • They are not the revenue you received during the date range. They are the lifetime revenue of the customers who first converted during it.
  • They are not a share of credit. One touchpoint takes all of it; there is no split across a journey and no fractional model.
  • They are not comparable across currencies, and two currencies are never added together for you.
  • A channel is not a claim about intent. It is a classification of the tagging and the referrer of one visit, no more.

Follow a row down to one person

View people on any row — a channel, or a campaign under it — opens the list of the people credited to it, under the same model, window, date range and domain filter. The page shows each person, their status and the revenue credited to them, 50 at a time with Load more. The revenue against a person here is the same lifetime net revenue the row above is made of, which is why the people on the page add up to the row.

Open a person to see their journey and an Attribution card beside it. The card names the conversion, the model and the window in force, the channel and source that were credited, and the reason in plain words — for example last qualifying paid touchpoint within 30d. The event that won is marked in the journey itself, so you can see what the decision was made on.

Two things are worth knowing:

  • A person gets a decision for their originating conversion — the earliest paid conversion they ever had. Later ones do not produce a second decision.
  • Someone with no paid conversion yet reads No paid conversion yet for this person. That is not a failure; it is an anonymous or identified visitor who has not bought anything.

The model and window are taken from the link you arrived by, so a journey opened from a report is explained under the same settings as the report.

Put Google spend against it

Google AdsReports has two views over the same date range, model and lookback controls:

  • ROAS — your Google Ads accounts, campaign by campaign, with Cost, Attributed revenue, Conversions, ROAS and CPA. Campaigns expand into ad groups and ads; cost is shown at every level, and attributed revenue and the two ratios at campaign level.
  • You vs Google — the same campaigns with your attributed revenue and conversions beside the conversions and conversion value Google reports itself.

Three cautions about reading them:

  • Each account is shown in its own account currency, and only revenue you recorded in that currency counts towards its ROAS. A euro account earning dollars shows those dollars nowhere in its ratio.
  • Cost is whatever was last synced from Google. A badge marks an account whose cost has not been refreshed, and stale cost makes ROAS look better than it is.
  • Attributed conversions and Google’s own conversions count different things and will not agree. The comparison shows the size of the gap; it is not something to reconcile to zero.

How much of your paid traffic cannot be tied to a person at all — because those visitors declined consent — is on the same page, under paid tracking health.

How to trust a report

  1. Check the match rate before reading the split.
  2. Read one currency at a time.
  3. Compare like with like: a report under Last Click / 30 days and one under First Click / 90 days are answers to different questions.
  4. If a row looks wrong, open View people and then a person. The journey and the reason line show exactly what the decision was made on.

Next steps

Was this page helpful?
Esc

Start typing to search the docs.

navigateselect