Measurement · Attribution

Marketing attribution: why every tool gives you a different number

Marketing attribution is the set of rules that decides which touchpoint gets credit for a conversion, and every platform ships different ones. Google Ads credits the date of the click. Analytics credits the date of the conversion. Before you argue about models, check that you aren't comparing two rulers and calling it a discrepancy.

See it read your own accounts, free

Almost nobody has an attribution problem.

Almost everybody has a definition problem.

The meeting sounds the same either way: the number moved, somebody asks why, and three tools give three answers. So the conversation goes straight to the model (last click, data-driven, should we test something else). It skips the four settings underneath, which are what produced the gap.

What is marketing attribution, actually?

Marketing attribution is how a platform decides which touchpoint gets credit for a conversion. That's the textbook line, and it's the reason people think attribution is a model you pick once. It isn't. It's four dials, and the model is only the second one.

Two platforms can agree perfectly on dial 2 and still disagree by 40% because they differ on 1, 3 and 4. That's most "attribution discrepancies" I've ever been asked to explain.

Why do Google Ads and Analytics never show the same number?

Because they are not answering the same question. Google says so itself, in plain language, in its own help documentation. This is the single most useful paragraph in the whole topic:

“Google Ads reports conversions against the date/time of the click that led to the conversion. Analytics uses the date/time of the conversion itself.” And: “Google Ads uses the last Google Ads click, but Analytics uses the last click across all channels.”

Google Analytics Help, Data discrepancies between Ads and Analytics (retrieved 29 July 2026)

Read that twice, because it has a consequence people miss. A sale on Tuesday that came from a Friday click is on Friday in Google Ads and on Tuesday in Analytics. Not a rounding error. A different row of your chart.

A one-week timeline with a click on Friday and the sale it produced on the following Tuesday. Underneath, two report rows: Google Ads places the conversion on Friday, the day of the click, while Google Analytics places the same conversion on Tuesday, the day it happened, so a single sale appears on two different days in two tools.
One click, one sale, two dates. Neither tool is wrong and neither is broken. They are answering different questions, and only one of them tells you on the report.

It also explains something that gets blamed on tracking every quarter: Google Ads figures for the last few days keep going up after the fact. They have to. A conversion that happens next week gets credited back to a click that already happened, so recent days are always incomplete until the window closes. Anything you decide on a two-day-old number is a decision on a partial number.

See which of your conversions land on which date, on your own accounts

Where does the gap actually come from?

Here are the four dials side by side, so you can see where a gap comes from before you go looking for a bug.

The dial Google Ads Google Analytics 4 What a gap here usually means
What counts Conversion actions marked primary and included in the account's default goals The events marked as key events in the property Check this first. Two systems counting different events will never reconcile, and no model change will fix it
Who gets credit Last click or data-driven. Google states first click, linear, time decay and position-based are no longer supported Data-driven, paid and organic last click, or Google paid channels last click. Direct visits get no credit unless the whole path is direct Expect a permanent gap on non-Google traffic. One tool can only see Google clicks; the other sees every channel
How long it lasts Click-through window default 30 days (settable 1–90), view-through default 1 day, engaged-view default 3 days Its own windows, plus conversions can be reattributed for up to 7 days after the fact A long window flatters the last 30 days. Changing it applies going forward only, so before and after are not comparable
Which date it lands on The date of the click The date of the conversion The one nobody checks. Same sale, two days, two charts, and the daily shapes never line up
Want those two numbers reconciled on your own accounts? We read both and show you where they split

Which attribution model should you actually use?

Short answer: the model matters far less than the three dials around it, and the honest options are fewer than they were two years ago. Google removed most of them.

Model What it does Where it misleads you Best for
Last click (Google Ads) All credit to the last-clicked ad and keyword Systematically starves everything upstream: awareness, broad terms, anything that starts a journey it doesn't finish Short, single-touch buying cycles. Also a stable baseline you can explain to anyone
Data-driven (Google Ads) Splits credit using your own past data for that conversion action You cannot audit it. It's the default and it's usually the better call, but you're trusting a model you can't inspect, on data the same company sells you Most accounts, most of the time, provided you never use it to settle a channel-versus-channel argument
Paid and organic last click (GA4) All credit to the last channel clicked, across every source Direct gets nothing unless the whole path is direct, so "direct" traffic quietly subsidises whatever came before it Cross-channel reporting where you need one rule that treats every channel the same way
Google paid channels last click (GA4) All credit to the last Google Ads channel clicked Deliberately blind to non-Google channels. Useful for reconciling with Ads, useless as a view of the business Reconciling GA4 against Google Ads when you're chasing a discrepancy, not reporting performance
A holdout or geo test Withholds ads from a comparable group and measures the difference Slow, needs real budget and real discipline, and it dies the moment someone senior switches the ads back on early The only thing that answers "did the ad cause it?" No model can
Your own before-and-after log You write what you changed, what you expected, and when you'll check Records intent, not truth. Only as good as your discipline, and it proves nothing on its own Judging whether the decision was any good. The one thing no platform stores for you

If you take one thing from that table: changing the model changes the story, never the sales. The business did what it did. The model only decides who in your spreadsheet gets the applause.

See which model and which window your account is running right now, free

What breaks first: the model, or the definition?

The definition. Every time. And I'm not the only one who thinks so, which is the part worth showing rather than asserting.

And it is not just my opinion

We run a small research engine that reads public discussions where operators and analysts talk shop, and keeps what they say in their own words. Over the last two weeks the most repeated problem in that bank wasn't a model. It was a version of: the number moved and I can't tell whether the business changed or the measuring stick did.

Two lines from the field

Two lines from r/analytics in late July say it better than a paragraph of mine could. One person points out that half the "why did revenue drop" threads are really why did our definition of revenue change. Another warns that once a definition shifts underneath you, the chart silently compares two different rulers. The same thread lands on a fix I've since stolen: treat a metric definition change as a release gate, not a memory test. Something announced and dated, not something one person is expected to remember in a meeting.

What this evidence is, and what it isn't. It comes from people who post publicly about their work. Not a sample of the market, and not the same thing as our own clients. We haven't interviewed anyone, so we can't ask a follow-up question. The counts behind "most repeated" come from a few weeks of one engine, not a historical dataset. It's a signal about what practitioners are wrestling with. It is not a statistic, and we won't dress it up as one.

What we found reading real conversion setups

I'm building an open-source console that reads my Meta and Google accounts and changes nothing I haven't approved. One of its screens does nothing but answer a single question: can you trust the conversion counter? Building it meant reading conversion configuration out of real accounts through the API, and that turned up things I had genuinely assumed were rare.

The lesson that outlives this page

That last one is the general lesson, and it applies to every reporting tool you'll ever buy: a screen that renders cleanly is not a screen that has the data. Ask any vendor what their tool does when a field is missing. If the answer is "it hides it", ask how you're supposed to know.

One more piece of honesty from our own build. The flag we show as "included in account goals" is inferred from what the API returns, not read as a single field. Our code records that it was inferred. It would have been easier to just print it. Recording where a value came from is the difference between a report and a claim.

The same read, on your accounts: which conversion actions actually count

How do you read your own attribution setup in one query?

If you have Google Ads API access, this pulls the four dials for every conversion action in the account. It's the same query our own importer runs, and it is yours, no email required.

Google Ads Query Language: the attribution setup of every conversion action

SELECT conversion_action.name, conversion_action.category, conversion_action.status, conversion_action.primary_for_goal, conversion_action.include_in_conversions_metric, conversion_action.counting_type, conversion_action.attribution_model_settings.attribution_model, conversion_action.click_through_lookback_window_days, conversion_action.view_through_lookback_window_days, conversion_action.value_settings.always_use_default_value, conversion_action.value_settings.default_value, conversion_action.value_settings.default_currency_code FROM conversion_action ORDER BY conversion_action.name ASC LIMIT 200

Three things that will save you an hour

Three things that will save you an hour. Some accounts will not return the optional fields (attribution model, value settings, lookback windows). The whole query then fails rather than returning partial rows, so keep a stripped-back version as a fallback. And counting_type tells you whether an action counts every conversion or one per click. That distinction matters enormously for lead gen. And read primary_for_goal together with include_in_conversions_metric, never separately: that pair is what decides whether an action is actually driving the number.

No API access? The same four dials are readable by hand, in about ten minutes. The conversion actions list in Google Ads (Goals → Conversions) gives you what counts, the model and both windows per action. GA4's key events list and its attribution settings give you the other side.

Or skip the query and get the four dials back as an answer, free

The definition sheet

This is the artefact that ends the argument, and it's eight lines. Write it once per account, keep it next to the report, and update it with a date whenever a dial moves. It costs ten minutes and it converts "the number looks wrong" from a debate into a lookup.

Measurement definition sheet: one per account

ACCOUNT: Example Ltd - Google Ads + GA4 UPDATED: 2026-07-29 counted: Lead form submit (primary, in account goals) not counted: Phone click, Newsletter (secondary - observation only) model: Google Ads data-driven | GA4 paid & organic last click window: click 30 d | view 1 d | engaged-view 3 d date basis: Google Ads = click date | GA4 = conversion date value: fixed 45 EUR per lead, agreed with client 12 May currency: EUR on every action - checked 29 Jul reported from: Google Ads (single source; GA4 for cross-channel only) CHANGED: 14 Jul - view window 1 d -> 7 d. Before/after not comparable.

The line that earns its keep

The last line is the one that earns its keep. A dial change makes every earlier month a different measurement, and six weeks later nobody remembers. Writing it down is the release gate those analysts were asking for. It is the same argument I made in you're deciding from memory. The looking-back is the only job in ad ops with no owner, so it only happens if you make it cheap.

What attribution still can't tell you

Three limits I'd want stated on any page that sells you a measurement tool, including mine.

Start where attribution stops: what your accounts can and cannot answer

What I'd do differently, in one sentence

Audit what counts before touching how it's credited.

I spent years being the person who changed the attribution model when a report looked wrong. The model was almost never the problem. Six conversion actions measuring one form was the problem. A currency nobody set was the problem. A window someone widened in March was the problem.

Pick one source of truth. Write down its four dials. Date every change to them. Then, and only then, argue about models. You will find you barely need to.

Related reading. Google Ads change history: how to prove when a dial moved. What is a good ROAS: whether your volume can read the ratio at all. Marketing report template: where these four dials get written down so a client can check them. You're deciding from memory: the looking-back nobody owns. What not to automate: the three jobs the platform did not take.

What is marketing attribution?

Marketing attribution is the set of rules that decides which touchpoint gets credit for a conversion. In practice it is four settings, not one. Which conversions are counted at all. Which model shares the credit. How long after a click or view it still counts. And which date the credit lands on. Change any one and the number changes.

What attribution models does Google Ads offer?

Two: last click and data-driven. Google states that first click, linear, time decay and position-based are no longer supported, and that conversion actions using them were upgraded to data-driven. GA4 is separate, with data-driven, paid and organic last click, and Google paid channels last click.

Why do Google Ads and Analytics conversions never match?

Mainly because they credit different dates and different clicks. Google documents both. Ads reports conversions against the date of the click that led to them; Analytics uses the date of the conversion itself. And Ads uses the last Google Ads click, while Analytics uses the last click across all channels.

What is a conversion window?

The period after an ad interaction during which a conversion still counts for that ad. Google's defaults are 30 days click-through, 1 day view-through and 3 days engaged-view, and click-through can be set from 1 to 90 days depending on the source. Changes apply going forward only, so before and after a change are not comparable.

Is attribution the same as incrementality?

No. Attribution divides credit for conversions that already happened among the touchpoints it can see. Incrementality asks whether the conversion would have happened anyway without the ad, and only a holdout or geo test answers that. No attribution model proves causation, whichever one you pick.

Which conversion actions actually count?

Only the ones marked primary and included in the account's default goals drive optimisation and the headline conversions column. An action can be primary and still sit outside the account goals, and secondary actions are recorded for observation only. Auditing that list usually beats changing the model.

Which conversion number should I report to a client?

Pick one source, write down its four settings, and report the same one every month. The number you can define beats the number that looks best. If you switch source, model, window or date basis, say so on the report - otherwise the chart compares two different rulers without telling anyone.

Last updated:

Still unsure which number to report? We will tell you which one your account can defend

Who wrote this

I'm Manu. Eight years buying media, and enough hours lost to "these two tools disagree" that I started building something. An open-source console that reads my Meta and Google data and never changes anything I have not approved. The screen that audits conversion setup exists because of the six-actions-one-form account described above. It's Apache-2.0, with a runnable demo on synthetic data.