Google Ads Attribution
How conversion attribution works in Google Ads, what the API returns, and what it means for our data.
Attribution models available
As of September 2023, Google removed first-click, linear, time-decay, and position-based models. Two options remain:
| Model | How it works | Effect on data |
|---|---|---|
| Data-Driven Attribution (DDA) | Google’s ML distributes credit across touchpoints based on the account’s actual conversion patterns | Fractional conversions (e.g. 0.37) per campaign/ad group/keyword |
| Last Click | 100% credit to the final click before conversion | Whole numbers only, heavily favours lower-funnel campaigns |
DDA is the default for all new conversion actions. Existing actions that used the removed models were automatically migrated to DDA.
The attribution model is set per conversion action under Goals > Conversions > Settings > Attribution model.
Attribution is applied server-side
The Google Ads API returns pre-attributed numbers. When we query metrics.conversions and metrics.conversions_value, the attribution model has already been applied. We don’t receive raw conversion events and attribute them ourselves.
If someone clicks a Shopping ad on Feb 1 and converts on Feb 20, the API attributes that conversion back to the Feb 1 click on the Shopping campaign. With DDA, partial credit may also go to other touchpoints in the path (e.g. a Display impression, a branded search click).
conversions vs all_conversions
Each conversion action has an include_in_conversions flag:
| Metric | What it includes |
|---|---|
conversions | Only actions where include_in_conversions = true (primary actions like Purchase) |
all_conversions | Every tracked action regardless of that flag (includes secondary actions like Add to Cart) |
Both metrics are stored in our system. The distinction matters because Smart Bidding optimises toward conversions (primary actions only).
Lookback windows
Each conversion action has two lookback windows defining the maximum time between interaction and conversion:
| Window | Typical default | What it means |
|---|---|---|
| Click-through | 30 days | A conversion up to 30 days after a click gets attributed to that click |
| View-through | 1 day | A conversion within 1 day of an ad impression (without click) may be attributed |
These are synced from Google and stored per conversion action in google_ads_conversion_actions.
Lookback windows are configurable per conversion action in Google Ads. Shortening them reduces the number of conversions attributed (tighter window = fewer qualifying conversions). Lengthening them increases attributed conversions but makes the data take longer to stabilise.
Attribution affects Smart Bidding, not just reporting
Changing the attribution model is not a neutral reporting decision. Smart Bidding uses attributed conversion data as its training signal:
- Under DDA: Upper-funnel campaigns (Shopping, PMax, Display) receive partial credit for conversions. Smart Bidding sees these touchpoints as valuable and bids accordingly.
- Under Last Click: Only the final click gets credit. Upper-funnel campaigns appear to generate fewer conversions, so Smart Bidding bids less aggressively on them and shifts budget toward branded search.
Switching models causes Smart Bidding to relearn, typically resulting in a 1-2 week performance dip while the algorithm adjusts to the new signal.
Retroactive attribution and data stability
Conversions are attributed back to the date of the click, not the date of the conversion event. This means recent data is always incomplete — conversions from clicks in the last 30 days haven’t all happened yet.
Our sync job addresses this by re-fetching the last 30 days of data on every run (google_ads_lookback_days in config). Data older than the lookback window is stable; recent data will shift upward as late conversions are attributed.
Rule of thumb: Don’t make decisions based on the last 7 days of conversion data. It hasn’t fully matured. The last 2-3 days are especially unreliable.
Implications for our account
-
Fractional conversions are normal. A campaign showing 2.37 conversions means DDA distributed partial credit across multiple touchpoints. This is expected, not a data error.
-
PMax and Shopping benefit from DDA. These campaigns participate earlier in the conversion path, so DDA gives them more credit than Last Click would. Their ROAS numbers would look worse under Last Click.
-
Brand Search looks less dominant under DDA. It often gets the last click, so Last Click would give it full credit. DDA redistributes some of that credit to earlier touchpoints.
-
Cross-campaign cannibalisation is hard to measure. DDA doesn’t tell you whether Shopping and PMax are genuinely contributing or just appearing in paths that would have converted anyway. It distributes credit based on correlation, not causation.
-
Our separate tracking system provides a second opinion. The
tracking_views/tracking_sessions/tracking_journeystables in the Laravel app run independent multi-touch attribution across all channels (not just Google Ads). Comparing Google’s DDA numbers with our own attribution can highlight where Google’s model is generous with credit.