# Why GA4 and Google Ads conversions don't match: investigating the gap

Page: https://alidemirbas.com.tr/en/blog/ga4-google-ads-conversions-mismatch

2026-11-05 · Growth Marketing · Ali Demirbaş

A method to investigate the GA4 vs Google Ads conversion gap: fix what you compare, read each cause in your own data and label every bridge row.

GA4 and Google Ads conversions don't match because the two tools count the same purchase under different rules. They can file it under different days, split the credit across different channels and look back over different windows. Google expects some gap. Its Google Ads help page says [discrepancies, often up to 20%, are expected](https://support.google.com/google-ads/answer/6270625?hl=en) because of different attribution models.

Forcing the two numbers to agree is rarely possible. A more useful goal is to investigate the gap. Fix what you compare, separate measured causes from estimated ones and keep the rest as an open remainder.

Below you will find how to spot each cause in your own data, a labelled teaching example and a check order. The section on [platform reports versus real revenue](https://alidemirbas.com.tr/en/blog/performance-marketing-metrics-decisions) covers why platform reports differ from booked revenue. It also shows how to judge total spend, so that is not repeated here.

## GA4 and Google Ads do not count the same conversion

GA4 and Google Ads use the word "conversion" for different counts. Before comparing anything, decide which two numbers you are putting side by side. Three numbers tend to get mixed up:

- The Google Ads "Conversions" column: primary conversion actions only, dated by the click.
- The GA4 key event total in Reports: every channel, not only Google Ads.
- GA4 conversion performance in the Advertising section: conversions shared with Google Ads.

### The Google Ads Conversions column

The "Conversions" column counts your primary conversion actions. It may include modeled conversions where Google cannot observe all of them, and bid strategies use it. The column is calculated by the time of the click. A click last week that converts this week is reported back to last week.

Google Ads only reports conversions that follow interactions with ads from the same Google Ads account. The [data discrepancies page](https://support.google.com/google-ads/answer/7457111?hl=en) says so, and it adds that view-through conversions are not in this column by default. View-through conversions, secondary actions and other special sources sit in the "All conversions" column.

### Key events and conversions in GA4

GA4 calls the events that matter to your business "key events". A record created from a key event and shared with Google Ads is now called a "conversion". Google's [conversions vs. key events page](https://support.google.com/analytics/answer/13965727?hl=en) explains the change. Under the old setup, Analytics conversions were measured differently from Google Ads conversions, which caused discrepancies.

In practice, Google Ads conversions do not appear in the GA4 Reports and Explore sections. They appear in the Advertising section. Google does not recommend Reports or Explore for measuring media performance. Key event reports also split credit across paid, organic and direct traffic.

### Fix the conversion source before comparing

The source of a Google Ads conversion action decides which causes can apply. A purchase action in Google Ads is usually measured in one of two ways.

The first is the Google Ads conversion tag. It has its own window and counting settings, so it can differ from a GA4 key event on almost every row below.

The second is a conversion created from a GA4 key event and imported into Google Ads. Google's [attribution settings page](https://support.google.com/analytics/answer/10597962?hl=en) says most settings for these match by default, counting method and conversion windows included. So a 30-day versus 90-day window difference does not apply automatically. Dates, channel credit and time zones can still differ.

So write down three things before you open any report: the conversion source, the exact action name and the GA4 report you compare it with. Keep all three the same for the whole investigation.

### Event-scoped reports and the session filter

The main comparison works when the GA4 report credits conversions the same way the conversion is scoped. The same Google Ads help page advises setting reports to "Event-scoped" when comparing with Google Analytics.

Google's attribution page explains why. The reporting attribution model affects event-scoped dimensions such as Source, Medium and Default channel group. Session-scoped dimensions such as Session source are unaffected by it.

Google also suggests filtering reports to session source / medium google / cpc. That filter looks only at the session in which the purchase happened. An ad click followed by an organic visit that ends in a purchase counts in Google Ads but not in the filter. Use it as a helper check, not as the main comparison.

## The causes of the gap and how to tell them apart

The causes of a GA4 and Google Ads gap fall into two groups: design differences between the tools and setup errors. Design differences can appear in any account and are measured or estimated, not fixed. Setup errors get fixed.

The table below summarises which way each cause can push the gap and where you read it. The direction column is what the mechanism suggests, not a fixed rule.

*Common causes of the GA4 and Google Ads gap, their direction and where to read them.*

| Cause | Pushes the gap | Where to read it |
| --- | --- | --- |
| Click date vs conversion date | Either way | "By conv. time" column |
| Channel scope and model | Raises Google Ads | GA4 model comparison |
| Conversion window | Raises the longer window | Time lag report |
| Counting method | Raises the "Every" side | Repeat rate |
| Double counting | Raises Google Ads | Primary actions list |
| Cross-device, modeled | Can raise Google Ads | Diagnostic columns only |
| Lost click ID | Breaks attribution | Redirect and tag test |
| Time zone | Shifts day edges | Account and property settings |

Which rows apply depends on the pair you fixed above. With a GA4-based conversion, the window and counting rows usually drop out. Double counting and a lost click ID come from the setup and distort the number in ways you cannot predict. That is why the check order starts with them.

### Date: click day vs conversion day

Google Ads files a conversion under the day of the click. GA4 files it under the day the conversion happened.

Google's [page about creating conversions from GA4 events](https://support.google.com/google-ads/answer/2375435?hl=en) gives an example. A click on July 19 is followed by a purchase on July 20. Google Ads files it under July 19, and Analytics under July 20.

To see this in your own account, add "Conversions (by conv. time)" or "All conv. (by conv. time)" to your Google Ads report. Compare it with the normal column over the same date range.

The difference between the two is the size of the date shift for that period. It tends to grow for short and recent ranges, because conversions can be reported up to 90 days after the click.

### Attribution model and channel scope

Data-driven attribution is the default model for most conversion actions in Google Ads. In GA4 the bigger difference is channel scope. Google Ads reports default to "Google paid channels". GA4 reports default to "Paid and organic channels".

Picture someone who clicks an ad, later returns through organic search and buys. GA4 can share that credit with organic search, while Google Ads looks only at its own ad interactions. So the credit moves to other eligible channels, not to direct.

Google's [attribution overview](https://support.google.com/analytics/answer/10596866?hl=en) says all GA4 attribution models exclude direct visits from credit, unless the path consists entirely of direct visits. If ad-click purchases show up as direct, treat it as a setup or identity issue. A lost GCLID or a consent gap is a more likely lead than the model.

To size the channel share, use the attribution model comparison in the GA4 Advertising section rather than flipping the setting. Comparing its "Google paid channels last click" model with your reporting model gives an estimate, because the model and the channel scope change together.

Changing the channel setting applies going forward and to every linked Google Ads account. It may also change bidding, so treat it as a campaign setting rather than a measurement switch.

On the Google Ads side, the "Model comparison" report shows two models side by side.

### Conversion window and lookback window

Google Ads counts conversions that happen within a set time after the interaction. Google's [conversion windows page](https://support.google.com/google-ads/answer/3123169?hl=en) lists the defaults: 30 days for clicks, 3 days for engaged views and 1 day for views. The GA4 equivalent for key event reports is the lookback window. It defaults to 30 days for acquisition events such as first visit, and to 90 days for all other key events, purchases included.

This row matters when you compare a Google Ads tag action with GA4 key events. There GA4 can credit Google Ads clicks from 31 to 90 days earlier that Google Ads no longer counts. For a conversion created from GA4, the windows match by default, so check the settings before you assume a difference.

To gauge the share in your data, open the time lag report in Google Ads attribution reports. The more conversions pile up near the end of the window, the larger the share that may fall outside it. No report gives that count directly, so treat it as an estimate. Window changes on either side apply only going forward.

### Counting method, column choice and double counting

For each conversion action, Google Ads can count every conversion or only one per ad click. "Every" is the default for website actions and Analytics transactions. For an action set to "One", check the repeat rate on the [counting options page](https://support.google.com/google-ads/answer/3438531?hl=en). It helps you estimate what the report would look like with "Every".

Double counting is a setup error. Say one purchase is tracked by a Google Ads tag and also by a conversion created from GA4. If both are primary, Google Ads counts the order twice.

To reduce that risk, Google sets conversion actions created from GA4 key events to secondary. It also recommends transaction IDs to deduplicate sales. To check, look for two primary actions tracking the same event in the Google Ads conversion actions list. A [Google Ads audit](https://alidemirbas.com.tr/en/blog/how-to-do-google-ads-audit) starts with the same check.

### Modeled, cross-device and view-through conversions

Google Ads estimates conversions it cannot observe, using data that does not identify individual users. The [modeled conversions page](https://support.google.com/google-ads/answer/10081327?hl=en) says the "Conversions" column reports both modeled and observed conversions, and that modeling can take up to 5 days to stabilise. Observation is lost for groups such as unconsented users and some browsers. Conversions imported from GA4 can include modeled conversions too.

Cross-device conversions start with an ad click on one device and finish on another device or browser. Google Ads shows them in the "Cross-device conv." column and models the ones it cannot observe directly.

Read that column as a diagnostic, not as a correction. It totals cross-device conversions across all of your conversion actions. So it is neither the count for one purchase action nor the set GA4 failed to link. The modeled share has no column of its own, and the reports do not say how much of either sits in a remainder.

View-through conversions only affect "All conversions". If you compare the "Conversions" column, this cause drops out.

There is also a date to note on the GA4 side. Google writes that consent mode in Google Ads became the single control on June 15, 2026. It governs the Google Ads cookies and IDs that the GA4 tag collects. If your comparison period spans that date, read the periods before and after it separately.

### Auto-tagging, GCLID and clicks vs sessions

Auto-tagging adds the GCLID (Google Click Identifier) parameter to the URL of each ad click. The [auto-tagging page](https://support.google.com/google-ads/answer/3095550?hl=en) says that if your site uses redirects, the GCLID must reach the final landing page for conversions to be tracked. In GA4, auto-tagging takes priority over manual tagging. For channels outside Google, the [UTM (Urchin Tracking Module) builder](https://alidemirbas.com.tr/en/calculators/utm-builder) keeps campaign tags consistent.

A test click is a first check for a lost GCLID: open the final URL with ?gclid=test added and see whether it survives every redirect. If the URL already has a query string, add &gclid=test instead.

A parameter that survives does not prove that the tag reads it or that attribution works. The data discrepancies page points to Google Tag Assistant and the conversion tracking status for verifying the tag. Use them to confirm that a test conversion fires the conversion request you expect.

Clicks vs sessions is a separate issue.

Google's [clicks and sessions page](https://support.google.com/google-ads/answer/14452452?hl=en) notes that Google Ads filters invalid clicks, while GA4 first reports every session. Visits that close before the GA4 tag loads create no session either. So when you work out a [conversion rate](https://alidemirbas.com.tr/en/calculators/cr), write down whether the denominator is clicks or sessions. [Cost per click](https://alidemirbas.com.tr/en/calculators/cpc) always uses Google Ads clicks.

### Time zone, data freshness and thresholds

GA4 reports use the property time zone and Google Ads reports use the account time zone. If they differ, conversions near midnight land on different days.

Freshness is not equal either. [GA4 data processing](https://support.google.com/analytics/answer/11198161?hl=en) can take 24 to 48 hours, and conversions imported from GA4 reach Google Ads up to 24 hours later. With a narrow date range and few users, GA4 may apply [data thresholds](https://support.google.com/analytics/answer/9383630?hl=en) and withhold rows. You cannot adjust thresholds, but a wider date range can bring the data back.

## Hypothetical example: a teaching bridge from 120 to 95

Every figure in this section is a hypothetical example. It is a teaching example, not a measured reconciliation. Take one online store over 28 days, with the range ending 5 days ago.

The pair is fixed first. On the Google Ads side, the action is "Purchase" from the Google Ads tag: primary, counting "Every", with a 30-day click window. On the GA4 side, the number is purchase key events credited to google / cpc in an event-scoped report. The property uses paid and organic channels, data-driven attribution and a 90-day lookback.

The Google Ads "Conversions" column shows 120, while GA4 credits Google Ads with 95 purchases.

The raw gap is 25 conversions: 20.8% of the Google Ads figure and 26.3% of the GA4 figure.

Google's "often up to 20%" describes a general expectation. It is not a tolerance for your account, so the 20.8% alone says nothing about whether this setup is right.

### The hypothetical bridge table

A bridge table starts from the Google Ads figure and records each cause as its own row. The last column says how each row could be obtained in real data.

*Step-by-step bridge of the gap in the hypothetical example and the basis for each step.*

| Step | Change | Total | Basis |
| --- | --- | --- | --- |
| Google Ads "Conversions" |  | 120 | Report |
| By conv. time column | −4 | 116 | Measured |
| Credit to other channels | −9 | 107 | Estimated |
| GA4's 90-day lookback | +3 | 110 | Assumed |
| Time zone edge | −1 | 109 | Assumed |
| Counting (both "Every") | 0 | 109 | Settings check |
| View-through conversions | 0 | 109 | Definition |
| Unexplained remainder | −14 | 95 | Unexplained |

The date row is measured: it is the difference between two Google Ads columns. The credit row is an estimate from the GA4 model comparison, which also changes the model. No report counts the lookback and time zone rows directly, so they are assumptions.

The rows net to 11 conversions and leave a remainder of 14, or 11.7% of the Google Ads figure. Rows read from separate reports can overlap, and a running total does not remove that overlap.

The "Cross-device conv." column in this example shows 8. It is kept beside the table as a diagnostic note, not subtracted. At most 8 of the 14 could be cross-device conversions GA4 does not link, and the column cannot say how many. Modeled conversions may sit in the remainder as well, but nothing assigns it to a single cause.

### Hypothetical example: when the assumptions change

The credit estimate and the treatment of the cross-device column move the result most. The table below keeps every other row fixed and changes one of them at a time.

*Explained and remaining gap under different scenarios.*

| Scenario | Net explained | Remainder |
| --- | --- | --- |
| Base, as in the table | 11 | −14 (11.7%) |
| Credit estimate 14, not 9 | 16 | −9 (7.5%) |
| Cross-device subtracted in full | 19 | −6 (5.0%) |

The third scenario makes the gap look mostly explained. Yet it subtracts a column that covers all conversion actions and may overlap with the credit row. A small remainder does not prove the setup is right, and a large one does not prove it is wrong. Its size depends on how the rows were obtained.

## Check order: investigating the gap step by step

The check order starts with setup errors, which distort the number unpredictably, and moves on to design differences. At each step change one thing only, then read the number again.

### 1. Define the two numbers you compare

Write down the conversion source, the action name and the GA4 report. Pick a single conversion action, such as purchase, rather than total conversions. Use the same date range in both tools.

Cover at least a few weeks and end the range at least 5 days ago, since modeled conversions can move for up to 5 days. In GA4, prefer an event-scoped report or the Advertising section. Keep the session source / medium filter as a helper check.

### 2. Check the link, auto-tagging and double counting

Confirm the GA4 property is linked to the right Google Ads account and that auto-tagging is on. Run the GCLID test, then verify the tag with Tag Assistant. If two primary actions track the same purchase, move one to secondary.

A gap that closes after this step is not proof that the setup is right. Two errors can offset each other, so carry on with the remaining steps.

### 3. Align the dates

Choose one consistent date basis for both sides. By conversion date, use the "by conv. time" columns in Google Ads and the conversion date in GA4. By interaction date, use the standard Google Ads columns and GA4 interaction time.

Interaction time is an option in the GA4 Advertising section's conversion report. Google describes it as helpful for comparing recent data with Google Ads. The option is not available in every property.

### 4. Align channel scope and model

Use the model comparison report in GA4 to see how conversions credited to Google Ads change by model. Record the result as an estimate. Do not change the channel setting just to measure, because it can affect bidding in Google Ads.

### 5. Compare windows and counting

Write the conversion window and counting method of both sides next to each other. For a GA4-based conversion, check that they still match the defaults. For a Google Ads tag action, compare its click window with the GA4 lookback window. If the counting method is "One", check the repeat rate.

### 6. Note the cross-device and modeled share

Add the "Cross-device conv." column and note its value beside the bridge table. Do not subtract it, because it covers every conversion action and can overlap with the credit row.

### 7. Check time zones and record the remainder

Compare the account and property time zones, then record the unexplained remainder as the last row. Mark every row as measured, estimated or assumed. If you fill in the same table every month with the same definitions, you can see whether the remainder is stable or growing. To automate that read, the [Google Ads scripts guide](https://alidemirbas.com.tr/en/blog/google-ads-scripts-guide) explains how scripts read reports.

## Which number to use for which decision

GA4 and Google Ads numbers answer different questions, so pick the number by the decision.

[Bid strategies](https://alidemirbas.com.tr/en/blog/google-ads-bidding-strategies-guide) run on the Google Ads "Conversions" column. Use it for budget and target decisions inside the campaign. Return on ad spend (ROAS) uses conversion value, not the count. Take the "Conv. value" column for the same action when you use the [ROAS calculator](https://alidemirbas.com.tr/en/calculators/roas).

Cost per conversion divides cost by the conversion count. [Customer acquisition cost (CAC)](https://alidemirbas.com.tr/en/calculators/cac) is a different metric: its denominator is newly acquired customers. Orders, form fills and repeat purchases give you cost per order or per lead, not CAC. Write down which count you divided by.

GA4 shows where users drop off on the site and how channels feed each other. The [funnel analysis calculator](https://alidemirbas.com.tr/en/calculators/funnel-analysis-multistep) works out the loss between steps, and the [conversion rate optimization guide](https://alidemirbas.com.tr/en/blog/conversion-rate-optimization-guide) covers what to do with it.

Whichever report you use, neither tells you whether the sale would have happened without the ad. Attribution splits credit. It does not measure incremental impact.

A test with a comparison group that sees no ads answers that, and the [control group guide](https://alidemirbas.com.tr/en/blog/control-group-ab-testing) explains how to set one up. The bridge table does not replace that test. Its job is to make the difference between two reports clear and repeatable.
