GA4 attribution models and lookback windows

last verified · against GA4 attribution docs as of 2026-07

Reference card for GA4 attribution models and lookback windows: the three reporting models, DDA fractional credit, lookback defaults, and BigQuery source fields.

What this is

In GA4, attribution is the act of assigning credit for key events to the ads, clicks, and other factors along a user’s path to completing the action, and an attribution model is the rule, set of rules, or data-driven algorithm that determines how that credit is assigned to touchpoints. This card covers the three surviving reporting models, the lookback (conversion) windows and their defaults, the opposite retroactivity of those two settings, what the reporting model does and does not affect, and the BigQuery source fields used to reconcile modeled reports against raw data.

The three reporting models

GA4 offers exactly three attribution models in reporting. First click, linear, time decay, and position-based were removed and are no longer available (see Gotchas).

Reporting model Credit rule Admin API enum
Data-driven attribution (DDA) — property default Machine learning distributes credit across touchpoints for each key event, evaluating both converting and non-converting paths. Produces fractional credit; the fractions on a path sum to 1.0. Conversions may be re-attributed for up to 7 days. PAID_AND_ORGANIC_CHANNELS_DATA_DRIVEN
Paid and organic last click 100% of the key-event value to the last channel the customer clicked through before converting. PAID_AND_ORGANIC_CHANNELS_LAST_CLICK
Google paid channels last click 100% to the last Google Ads (Google Paid) channel clicked; falls back to paid and organic last click when there was no Google Ads interaction on the path. GOOGLE_PAID_CHANNELS_LAST_CLICK
  • Direct exclusion (all models). Every model excludes direct visits from receiving credit, unless the path to the key event consists entirely of direct visits (last-non-direct behavior).
  • Per-key-event eligibility. DDA eligibility is determined per conversion type from available data, so DDA may apply to some key events and last-click to others.

DDA factors (illustrative, not exhaustive)

The data-driven model evaluates factors including the following. Google does not publish the full model or its weights; treat this list as illustrative.

Factor Notes
Time between the ad interaction and the key event
Device type
Ad-interaction type
Exposure order Sequence of touchpoints on the path
Creative assets

Lookback (conversion) windows

The lookback window determines how far back in time a touchpoint is eligible for attribution credit. It applies to all attribution models and all conversion types and also affects session attribution.

Key-event type Default Alternatives Admin API enum values
Acquisition (first_open, first_visit) 30 days 7 days ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_30_DAYS, ..._7_DAYS
All other key events 90 days 30 or 60 days OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_90_DAYS, ..._60_DAYS, ..._30_DAYS
Engaged-view key events 3 days not documented

Retroactivity: the two settings behave oppositely

Setting changed Scope of effect Retroactive?
Reporting attribution model Historical and future data (reporting-side recalculation) Yes
Lookback (conversion) window Going forward only; reflected in all reports in the property No

Treat model changes as safe to compare all-time. Treat a lookback-window change as a forward-only break point: annotate the change date and do not compare pre- and post-change windows as like-for-like.

What the reporting model affects

Affected by the reporting model Not affected
Event-scoped traffic dimensions: Session source, Session medium, Session campaign, Session default channel group User-scoped and session-scoped traffic dimensions
All key-event reports and explorations that use those event-scoped dimensions
Conversion reports of any linked Firebase projects
  • The model applies property-wide, and can also be set per key event via Admin > Data display > Events > Key events attribution. Confirm this override is available in the specific property (see Verify in your property).
  • Changing the model affects all key events, including those imported to other products.

Ads export scope (distinct from the reporting model)

AdsWebConversionDataExportScope controls which channels are eligible to receive the conversion credit GA4 exports to Google Ads (an input to Smart Bidding). It is a separate decision from the in-report reporting model and does not change reporting numbers.

Enum value Meaning
PAID_AND_ORGANIC_CHANNELS Paid and organic channels are eligible to receive exported conversion credit
GOOGLE_PAID_CHANNELS Only Google paid channels are eligible
NOT_SELECTED_YET Scope not yet chosen

BigQuery source fields

BigQuery exports carry raw, unmodeled source data captured before GA4 attribution processing. These fields will not equal GA4 report attribution numbers unless you replicate the model.

BigQuery field Scope Holds Attribution applied Use it for
traffic_source (.name, .medium, .source) User The traffic source that FIRST acquired the user; values do not change on later campaigns; not populated in intraday tables None (first-touch snapshot) User first-acquisition
collected_traffic_source Event Manual campaign parameters as collected with each event (UTMs, gclid, dclid, srsltid); raw and unprocessed None Raw per-event debugging
session_traffic_source_last_click Session Last-click attributed session source across manual campaigns, Google Ads, DV360, CM360, SA360, and cross-channel campaigns Last-click Reconciling with GA4 UI session acquisition

Verify in your property

Items the fetched official pages leave unstated, or that only third-party sources report. Confirm each in the property’s Admin UI before relying on it.

Item Status
DDA minimum-data threshold The commonly cited “600 conversions in 30 days” traces to legacy Universal Analytics MCF and Google Ads docs, not the current GA4 pages. GA4 says eligibility is per conversion type from available data but publishes no numeric minimum — treat 600 as unverified for GA4
DDA factor list Described in general terms; Google does not publish the full model or weights. Treat the factors as illustrative, not exhaustive
Per-key-event model and lookback overrides Availability and rollout date are not pinned to a dated announcement on the fetched pages — confirm in the property’s Admin UI
Engaged-view 3-day lookback How engaged-view interacts with the standard acquisition and other windows is not deeply documented — verify if engaged-view conversions are in scope
session_traffic_source_last_click add date The field’s addition date (reported as July 17, 2024) comes from third-party sources; the official schema page confirms the field but not the date

Gotchas

  1. Report shows decimal key events like 0.42 that do not sum to whole numbers. Cause: data-driven attribution distributes fractional credit across touchpoints, and each path’s fractions sum to 1.0, so per-channel totals are non-integer by design. Fix: expect and communicate fractional credit as normal; if whole numbers are required, switch that key event to paid and organic last click via Admin > Data display > Events > Key events attribution, accepting the loss of multi-touch modeling.
  2. Historical numbers changed after an admin toggled a setting, but a lookback change did not backfill. Cause: changing the reporting attribution model recalculates historical and future data, while changing the lookback window applies going forward only — the two behave oppositely on retroactivity. Fix: treat model changes as retroactive and safe to compare all-time; treat lookback changes as a forward-only break point and annotate the change date.
  3. GA4 UI session source does not match BigQuery, and traffic_source shows a stale campaign. Cause: traffic_source is user-level first-acquisition and never changes on later campaigns (and is absent from intraday tables), while the UI uses last-non-direct session attribution. Fix: query session_traffic_source_last_click for session acquisition that reconciles with the UI; use collected_traffic_source only for raw per-event debugging and traffic_source only for user first-acquisition.
  4. GA4 key events do not match conversions in the linked Google Ads account. Cause: the GA4 reporting model and lookback windows are independent of the ads-export scope (AdsWebConversionDataExportScope) and of Google Ads’ own conversion window and modeling — separate datasets attributed by separate models in different platforms. Fix: do not expect column parity; align lookback windows where possible, confirm which channels the export scope allows to receive credit, and document the difference as by-design.
  5. Cannot find first-click, linear, time-decay, or position-based models. Cause: those four were removed from GA4 as of November 2023; only data-driven, paid and organic last click, and Google paid channels last click remain. Fix: use data-driven attribution for multi-touch analysis, or replicate a contractually required legacy model in BigQuery from session_traffic_source_last_click.
  6. DDA is selected property-wide but some key events still show last-click. Cause: DDA eligibility is evaluated per key-event type from available data, and low-volume events may not qualify for a data-driven model. Fix: check the per-key-event model under Admin > Data display > Events > Key events attribution; accept that sparse events fall back to last-click until they accrue enough data.

Quick recipes

attribution-enums.txt
# ReportingAttributionModel — the in-report model
PAID_AND_ORGANIC_CHANNELS_DATA_DRIVEN # property default
PAID_AND_ORGANIC_CHANNELS_LAST_CLICK
GOOGLE_PAID_CHANNELS_LAST_CLICK
# Acquisition lookback (first_open / first_visit)
ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_30_DAYS # default
ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_7_DAYS
# Other key-event lookback
OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_90_DAYS # default
OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_60_DAYS
OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_30_DAYS
# AdsWebConversionDataExportScope — credit exported to Google Ads (separate from reporting)
PAID_AND_ORGANIC_CHANNELS
GOOGLE_PAID_CHANNELS
NOT_SELECTED_YET
bq-session-lastclick.sql
-- session_traffic_source_last_click reconciles with GA4 UI session acquisition:
-- last-click across manual, Google Ads, DV360, CM360, SA360, and cross-channel.
SELECT
session_traffic_source_last_click, -- last-click attributed session source
COUNT(*) AS sessions
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY 1
ORDER BY sessions DESC;
bq-user-firsttouch.sql
-- traffic_source = the campaign that FIRST acquired the user.
-- Immutable (does not change on later campaigns) and absent from intraday tables.
SELECT
user_pseudo_id,
traffic_source.source AS first_source,
traffic_source.medium AS first_medium,
traffic_source.name AS first_campaign
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY 1, 2, 3, 4;
bq-raw-clickids.sql
-- collected_traffic_source = raw, unattributed campaign params captured per event.
SELECT
event_timestamp,
collected_traffic_source.gclid AS gclid,
collected_traffic_source.dclid AS dclid,
collected_traffic_source.srsltid AS srsltid
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND collected_traffic_source.gclid IS NOT NULL;
bq-ui-vs-bq-mismatch.sql
-- Why the GA4 UI session source differs from a user's first touch:
-- traffic_source is USER first-acquisition (immutable);
-- session_traffic_source_last_click is per-session last-click (matches the UI).
SELECT
user_pseudo_id,
traffic_source.source AS user_first_source,
session_traffic_source_last_click AS session_last_click
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
LIMIT 100;

Sources

Changelog

  • — Initial version, verified against official documentation.

dataLayer

0 events · 0 sent

    • home /
      writing /writing
      guides /guides
      work /#work
      about /about
      colophon /colophon
      toggle analyst mode ctrl+.
      print session receipt /#receipt