Skip to content

Marketing Attribution for GA4: Beyond Last-Click

Learn how to interpret GA4 attribution models, their limits, and when to use experiments for true marketing incrementality. Move beyond last-click reporting.

Three platforms, three answers, one budget to defend. Your GA4 export already holds the answer, and the first finding is free and never leaves your browser. Get your first finding free

By , Founder & CEOUpdated 12 min read

Run the numbers for your store: the free attribution window calculator.

How to read GA4 attribution models correctly, why they still cannot prove causation, and when to trust experiments instead.

Updated on: 2026-09-08

Picture a marketing lead arguing for cutting Meta because GA4's last-click report shows branded search doing most of the work. The problem: branded search is often harvesting demand created by everything upstream. Nobody in the room can say whether cutting Meta would drop revenue, because the report they trust answers a different question than the one they are asking.

That gap sits at the center of GA4 attribution. GA4 can move past last-click by spreading conversion credit across the path. It still cannot tell you which conversions would not have happened without your marketing. Attribution measures association. Incrementality measures causation. Those are two different jobs.

The practical version: use GA4 attribution to understand observed journeys and decide where to look. Use experiments or causal models to move real budget with confidence.

What GA4 attribution actually gives you

As of September 2026, GA4's Attribution reports offer three reporting models:

  1. Paid and organic channels last click
  2. Google paid channels last click
  3. Data-driven attribution

If you still see guides listing first-click, linear, time-decay, and position-based as GA4 options, that content is stale. Those rule-based models were removed from the current reporting model selection.

Paid and organic channels last click assigns 100% of the key-event value to the last eligible channel the customer clicked. Direct traffic is ignored when another eligible click exists. If the path is only direct visits, direct can take the credit. It is a stable baseline, but it systematically favors whatever sits closest to conversion: branded search, remarketing, email, direct-response.

Google paid channels last click gives all credit to the last Google Ads click, falling back to paid-and-organic last click when there was no Google Ads interaction. This is not a neutral cross-channel model. Do not use it to compare Google against Meta, TikTok, email, or SEO as if all were treated equally.

Data-driven attribution (DDA) distributes credit using your property's observed data for each key event rather than a fixed rule. Google describes it as a machine-learning model trained on your historical data. This is the important part: "data-driven" does not mean "causal." DDA allocates credit across measured paths. It does not build a randomized control group. Google itself separates ordinary attribution from incremental measurement: attribution assigns credit to interactions associated with conversions, while incrementality asks whether those conversions would have happened without the ads.

Treat DDA as model-based attribution. It is better than last-click at describing observed contribution. It is not proof a channel generated incremental sales.

The scope trap that makes reports disagree with themselves

This is where most GA4 confusion lives. "Source/medium" is not one universal field. GA4 has three traffic-source scopes, and they use different attribution logic.

Scope What it represents Attribution behavior
User-scoped Source of the user's first arrival Uses paid-and-organic last click; unaffected by the selected model
Session-scoped Source assigned to a session Uses paid-and-organic last click
Event-scoped Source assigned to a specific event, including a key event Uses the selected reporting model; defaults to DDA

Google documents this directly in its explanation of traffic-source dimension scopes.

So three reports can all be technically correct and still tell different stories:

  • The Acquisition report credits a user's first visit to organic search.
  • A session report credits the converting session to paid social.
  • An event-scoped conversion report splits purchase credit across paid social, email, and organic search using DDA.

The single most dangerous error I see is someone comparing a first-user acquisition number against an event-level attribution number as if they answer the same question. They do not. Name the scope in every analysis: first-user source, session source, or event-scoped key-event attribution. If you skip that label, half your budget arguments are built on a category mistake.

Lookback windows quietly change the answer

The key-event lookback window sets how far back a touchpoint stays eligible for credit. For most key events the default is 90 days, with 30- and 60-day alternatives. Acquisition events like first_open and first_visit default to 30 days and can go to 7.

Consider a customer who sees a paid social ad on January 1, clicks an email on January 20, and buys on February 15.

  • With a 30-day window ending February 15, the January 1 touch falls outside.
  • With a 90-day window, both touches may be eligible.

The output changes without any change in customer behavior. Attribution reports also use event time, so touchpoints inside the lookback window may sit before your selected report date range.

Before you interpret anything, write down the terms of the analysis:

  • Key event name
  • Revenue or value definition
  • Lookback window
  • Reporting timezone
  • Channel grouping version
  • Attribution model
  • Scope (user, session, or event)

If two people can pull the "same" report and get different numbers, one of these seven is undocumented.

Why last-click misleads more than people admit

Last-click survives because it is simple, cheap to compute, stable, and compatible with ad-platform dashboards. It gives every conversion one tidy owner. None of that makes it correct.

Its real problem is selection bias, not just that it ignores earlier touches:

  • High-intent users search for your brand, click your email, and return directly anyway.
  • Retargeting targets people who already showed intent.
  • Branded search harvests demand created elsewhere.
  • Email often lands the last click because the customer was already close.

Proximity to conversion is not the same as contribution to conversion. That single line would have saved the meeting I described at the top.

There is concrete evidence here. A study across 2,226 Meta advertising experiments found that standard seven-day last-click attribution scored an out-of-sample R² of 0.19 against experimentally measured incremental conversions per dollar. An experiment-calibrated method reached R² of 0.88, and last-click decisions disagreed with randomized-test decisions in roughly 12 to 20% of campaigns. That is Meta experiment data, not a universal figure for every GA4 property. But it tells you the direction of the error: last-click and true incrementality often point at different channels.

A working example

Take an illustrative path:

Day 1: Paid social click Day 5: Organic search visit Day 9: Email click Day 10: Direct visit and purchase

Under paid-and-organic last click, direct is ignored and email takes 100%.

Under Google paid channels last click, with no Google Ads interaction, GA4 falls back to paid-and-organic last click, so email still wins.

Under DDA, GA4 may spread fractional credit across paid social, organic, and email based on observed data. The weights are not fixed, so I will not invent them.

None of these answers the real question: would this person have purchased without the paid social exposure? The path cannot tell you. They may have been ready to buy, and email simply caught them at the door.

A methodology for moving past last-click

Step 1: Define the decision first

  • "Where did converting users come from?" GA4 acquisition and path reporting is fine.
  • "Which channels show up across journeys?" Use conversion paths and event-scoped attribution.
  • "Which campaign gets more budget?" Attribution is directional. Use an experiment or a calibrated causal model.
  • "Did this campaign cause extra purchases?" Use a holdout, geo experiment, or an experiment-validated model.

Step 2: Fix the data before trusting any model

A sophisticated model on bad data just produces a more confident wrong answer. Check:

  • UTMs present and consistent
  • Paid vs organic classification correct
  • Cross-domain tracking configured
  • Referral exclusions and payment-provider referrals handled
  • Ad platforms linked
  • Purchase values, refunds, tax, and currency consistent
  • No duplicate purchase events
  • The key event is a real business outcome, not a cheap microconversion
  • Offline, phone, and CRM sales imported or explicitly excluded

Step 3: Use the right GA4 view, then compare models as a diagnostic

Use acquisition reports for first-user questions, attribution reports for event-level credit, key-event paths for sequences, and model comparison to see how reported value moves. For raw analysis, export events to BigQuery, but know that some session-level attribution used in the GA4 interface cannot be fully reconstructed from the export.

A comparison table is a good starting diagnostic. These numbers are illustrative:

Channel Last-click revenue DDA revenue Difference Question to investigate
Paid social €20,000 €31,000 +€11,000 Assists earlier, or selection effects in DDA
Branded search €45,000 €28,000 −€17,000 Likely harvesting demand from elsewhere
Email €30,000 €25,000 −€5,000 Closing users already likely to buy
Organic search €15,000 €26,000 +€11,000 Earlier discovery or research

Treat a large gap between models as a question for validation, not a verdict that DDA is right.

Step 4: Add real incrementality evidence

In rough order of strength:

  1. User-level randomized holdout
  2. Geo experiment
  3. Platform lift study (understand its population and outcome definition)
  4. Time-series or marketing mix modeling for aggregate effects
  5. Experiment-calibrated modeling to extend learning to untested campaigns

The sensible hierarchy: GA4 for observed-path diagnostics, experiments for causal ground truth, causal or aggregate models to extend that learning, and reconciliation instead of one universal number.

How to read the models together

A quick interpretation frame that has held up for me:

  • Last-click high, DDA high, experiment high: strong channel, watch profitability and saturation.
  • Last-click high, DDA lower, experiment low: demand capture or retargeting bias.
  • Last-click low, DDA high, experiment high: real upper-funnel or assist value.
  • Last-click low, DDA high, experiment inconclusive: a hypothesis, not a budget call.
  • Everything low, experiment high: probably a tracking, identity, view-through, or classification problem.
  • Everything high, experiment low: probably selection bias or a weak experiment.

The output of a good analysis is rarely one winning channel. It is estimated incremental revenue, an uncertainty range, incremental ROAS, saturation signals, the gap between reported and causal results, and a set of stated assumptions.

Common GA4 misconceptions worth killing

  • "DDA proves causation." No. It allocates credit from observed data. Incrementality needs a counterfactual.
  • "Direct always gets credit." No. Paid-and-organic last click ignores direct when another eligible click exists.
  • "Changing the model changes what happened." It changes reported credit, not the number of purchases.
  • "Attributed ROAS equals incremental ROAS." No. One is model-dependent; the other estimates additional revenue caused.
  • "Every report uses the selected model." No. User- and session-scoped dimensions use paid-and-organic last click.
  • "GA4 and Google Ads must match." No. GA4 uses last click for Google Ads conversions, and Google recommends paid-and-organic last click when comparing the two.
  • "BigQuery is a perfect copy of every report." No. Some interface calculations cannot be reconstructed from the export.
  • "More granular is always better." No. GA4 applies data thresholds on small slices and you cannot adjust them.

GA4 differing from your ad platforms is expected. Different models, windows, timezones, conversion definitions, dedup rules, and identity assumptions all pull the numbers apart. Do not pick the dashboard with the biggest number. Write a measurement contract: for this decision, we count this key event, value it this way, within this window, using this scope and model, and we compare it against this incrementality method.

Where a causal tool fits

If you want the causal side without running full experiments in-house, this is the category Causality Engine sits in. You upload a historical GA4 export and get a per-channel view aimed at incremental revenue rather than the channel that happened to be present at the last click. Its causal-attribution output covers the channels in your GA4 export and shows what each channel caused next to what last-click gave it, with a data-health score and a next step for every channel. Pricing runs a one-time €99 read and a €299 per month continuous option.

I would frame it honestly: it is a causal model estimate whose reliability depends on data quality, model assumptions, and validation against experiments. That is a genuinely different question than last-click answers, which is the whole reason to look at it. But a model estimate is not the same as a randomized test, and any vendor's proprietary method should be treated as an estimate to validate, not a settled truth. Used that way, a causal read is the fastest way for a GA4-and-Shopify brand to separate the channels that create demand from the ones that just catch it.

FAQ

Does GA4 data-driven attribution measure incrementality?

No. DDA distributes credit across observed interactions using your property's data. It is more flexible than last-click, but it does not create a control group or estimate a counterfactual. For incrementality you need an experiment or a model validated against one.

Why do my GA4 Acquisition and Attribution reports show different channels?

Because they use different scopes. Acquisition reports lean on user- and session-scoped sources, which use paid-and-organic last click. Attribution reports use event-scoped credit under your selected model, which defaults to DDA. Neither is broken. They answer different questions, so always label the scope.

Should I stop using last-click entirely?

Not necessarily. Last-click is a useful, stable baseline and it matches many ad dashboards, which makes reconciliation easier. The mistake is treating it as causal. Keep it for routine reporting, and bring in causal methods before moving significant budget.

What is the difference between attributed ROAS and incremental ROAS?

Attributed ROAS is revenue assigned to a channel under a chosen attribution model, divided by cost. Incremental ROAS is the additional revenue that would not have occurred without the channel, divided by incremental cost. A channel can look efficient on attributed ROAS and generate little incremental profit.

Can I reproduce GA4's attribution numbers from the BigQuery export?

Partly. The export gives you raw events and traffic-attribution fields, which is enough for most custom analysis. But Google documents that some session-level attribution used inside the GA4 interface is not fully reproducible from the export, so expect small differences rather than an exact match.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Have an audience of ecommerce operators? Earn 20% recurring commission by recommending the €99 read.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

The free finding runs in your browser. Your file never leaves it. The full read is €99, refundable within 30 days, no questions asked. Prices exclude VAT.