GA4 + Google Ads: How to Import Conversions Properly in 2026
The link, the key-event import, and the native tag are three different things. Which one should bid, which one should observe, why the numbers never match, and how to align attribution, windows, and counting so they match closely enough to trust.
"ga4 says 212 purchases, google ads says 287, which one is right" is the most common measurement question in paid search and the answer is neither, by design. this guide explains what the ga4 to google ads link actually does, which conversion source should drive bidding, and how to align the settings so the two numbers stop being a fight.
what the ga4 to google ads link actually is
most guides treat "linking ga4 and google ads" as one step. it is three separate things with three separate jobs.
1. the link. connects a ga4 property to a google ads account. it lets ga4 show google ads campaign, ad group, and keyword dimensions for auto-tagged traffic, lets ga4 audiences flow into google ads, and lets google ads cost data appear in ga4. the link by itself imports zero conversions.
2. the key-event import. takes a ga4 key event (what ga4 called a conversion until march 2024) and creates a conversion action in google ads from it. this is the piece that makes ga4 data usable for bidding. google's prerequisites are explicit: the accounts must be linked, auto-tagging must be on, and "the google click identifier (gclid) isn't being altered or dropped by your website" (google ads help, create conversions from google analytics events).
3. the native google ads tag. the google ads conversion tag (or the google tag with a conversion label) firing on your site, sending the conversion straight to google ads with no ga4 in the path. this is what enhanced conversions attach to.
here is what most guides get wrong: they present the import as the way to track conversions in google ads. it is a way. for most accounts it should be the secondary way, and google's own defaults agree: "conversion actions created through the google analytics interface will be set as secondary. to use them for bidding, change their action optimization settings in google ads." (same google ads help page.)
the fundamental shift: from one conversion source to two, with one in charge
universal analytics era: you imported ga goals into adwords and bid on them. the ga number and the ads number were expected to differ and everyone shrugged.
ga4 era: google split the roles. the native tag is built for bidding: it fires on the conversion, attaches enhanced conversions, and reaches smart bidding fastest. the ga4 import is built for a wider view: it carries ga4's cross-channel attribution and lets you see the same conversion next to organic, email, and referral. google's help page says imported analytics conversion data reaches google ads "up to 24 hours after they occurred." smart bidding on a signal that arrives a day late is smart bidding on yesterday.
2026: ga4 became a conversion management surface in its own right. since january 16, 2026, "conversion attribution settings are now adjustable independently for every conversion" inside ga4, and since august 11, 2026, click-through conversion windows can be set to any integer from 1 to 90 days and engaged-view windows from 1 to 30 days (google analytics help, what's new). the two systems can now be aligned setting by setting. most accounts have not done it.
in plain english: one primary conversion action per goal drives bidding. everything else observes.
what this broke in existing accounts
1. campaigns bidding on nothing, or on everything twice
the import defaults to secondary. accounts that imported a ga4 purchase event and never promoted it ran smart bidding with no primary purchase action. accounts that promoted it while the native purchase tag was also primary had two primary actions for one purchase, and the "conversions" column doubled. smart bidding then optimized toward a number that was half fiction.
2. comparing the wrong columns on the wrong dates
google reports the difference plainly: "google ads reports conversions on the ad impression date. other reporting tools attribute them to the conversion date." (google ads help, data discrepancies). a click on the 1st and a purchase on the 15th sits in week one in google ads and week three in ga4. every month-end reconciliation that lined up "conversions" against ga4 key events by calendar date was comparing two different questions.
3. attribution models that only looked the same
data-driven attribution is the default in both systems, but each is trained on its own data. ga4 also removed first click, linear, time decay, and position-based models in november 2023 (google analytics help, attribution settings), so accounts that had matched google ads to a rules-based ga model lost the match without noticing.
4. mismatched windows
ga4's default lookback for non-acquisition key events is 90 days. google ads' default click-through conversion window is 30 days. a conversion 45 days after the click is a ga4 key event and not a google ads conversion. nobody set those numbers on purpose.
5. the gclid went missing
the import depends on the gclid surviving the click. redirects that drop query strings, consent banners that reload the page, and apple's link tracking protection on mail, messages, and private browsing all strip it. ga4 still files the session under google / cpc from utms, but google ads cannot claim the conversion. see the utm naming standard for the fallback.
6. counting settings nobody reviewed
google ads lets you "count every conversion or only 1 conversion after an interaction." lead forms imported with "every" count the same person submitting three times as three leads. purchases set to "one" undercount repeat buyers. ga4 does neither; it records every key event.
7. eea and uk traffic quietly disappeared
without consent mode, google cannot model conversions from users who decline cookies. accounts serving europe saw google ads conversions fall for european campaigns and blamed the campaigns.
the documented facts
everything below is from google's own documentation. there is no independent dataset on import accuracy, so this section does not invent one.
- prerequisites for import: linked accounts, auto-tagging on, gclid not altered or dropped, at least a marketer role in analytics and admin access in google ads. (google ads help, create conversions from google analytics events)
- imported actions created from the analytics interface are secondary by default. secondary actions are "for observation only," reported in "all conversions," and not used for bidding unless they are part of a custom goal. primary actions appear in "conversions" and drive bidding. (google ads help, primary and secondary conversion actions)
- imported analytics conversion data reaches google ads up to 24 hours after the conversion. google recommends allowing 24 to 48 hours before comparing the two systems.
- google ads reports conversions on the ad interaction date; conversions can be reported up to 90 days after the click; invalid conversions are removed after the fact; cross-device conversions are modeled. google recommends the "conversions (by conv. time)" column when comparing with analytics. (google ads help, data discrepancies)
- ga4 lookback defaults: 30 days for acquisition key events (
first_open,first_visit), 90 days for all others, 3 days for engaged-view. the window you choose also applies to session attribution. (google analytics help, key event lookback window) - since november 2023 ga4 offers only data-driven and paid-and-organic rules-based models. (google analytics help, attribution settings)
- 2026 release notes: per-conversion attribution settings (january 16), conversion data in the data api alpha (may 4), a validation tool for imported campaign data (august 10), custom click-through windows 1 to 90 days and engaged-view windows 1 to 30 days (august 11), and hostname include filters so only approved domains can send event data (september 21). (google analytics help, what's new)
what changed in 2026 specifically
january 2026: ga4 conversion management lets you set attribution independently per conversion. this is the first time the ga4 side of an imported conversion could be tuned to match the google ads side without changing the whole property.
august 2026: custom conversion windows in ga4, any integer from 1 to 90 days for click-through. combined with google ads' own conversion window setting, the 90 versus 30 mismatch is now a choice, not a default you inherit. same month, a validation tool for imported campaign data, useful if you also push non-google cost data into ga4.
september 2026: hostname allowlists in ga4 data filters. if your property has ever collected staging, localhost, or scraper hits, key event counts included them. an allowlist removes that noise from the ga4 side of every comparison.
unchanged and still misread: the 24-hour import delay, the secondary-by-default rule, and the impression-date reporting. these have been true for years and are still the top three reasons the numbers disagree.
what actually works now
1. make the link real, then prove the gclid survives
link the property and the ads account, turn auto-tagging on, then click a live ad and watch the url on every hop through to the landing page. if the gclid is gone by the thank-you page, fix redirects and consent reloads before importing anything.
2. one primary per goal, and it is the native tag
for each business outcome (purchase, lead, signup) set exactly one primary conversion action. make it the native google ads tag with enhanced conversions where you can. import the matching ga4 key event and leave it secondary. you get the fast signal for bidding and the cross-channel view for analysis, and the "conversions" column counts each outcome once.
the exception: if there is no engineering capacity for a native tag, promote the ga4 import to primary, but then align every setting below and accept the 24-hour lag as the cost.
3. align model, window, and counting across both systems
- attribution model: data-driven in both. do not pair data-driven in one with last click in the other.
- window: pick one number. either set the ga4 key event's window to 30 days to match the google ads default, or raise the google ads conversion window to match ga4. write the number down.
- counting: "every" for purchases and revenue events, "one" for leads and signups, in google ads. ga4 counts every event, so expect the lead numbers to sit a little above google ads even when everything else is aligned.
4. compare the right columns and expect a gap
use "conversions (by conv. time)" in google ads against ga4 key events for the same date range, after 48 hours of processing. the numbers will still differ because of cross-device modeling, invalid-click removal, and gclid loss. record the gap after the first full month with aligned settings and treat that as your baseline. investigate when the gap moves, not when it exists.
5. implement consent mode for eea and uk traffic
consent mode has been required for google ads measurement and personalization features on eea and uk users since march 2024. without it there are no modeled conversions for users who decline, and both the native tag and the import undercount europe. check the "modeled" share in google ads conversion diagnostics.
6. use ga4 for what google ads cannot see
the reason to keep the import at all: assisted paths, organic and email touches before the paid click, landing page conversion rates, and audiences. build remarketing and exclusion audiences in ga4 and push them through the link. do not use the import to second-guess bidding.
7. change goals on the model's schedule
promoting, demoting, or swapping a primary action changes what smart bidding optimizes toward and restarts learning. batch these changes, make them once, and hold for two weeks before judging the effect.
what to stop doing immediately
- stop importing every ga4 key event. import the one or two that map to primary outcomes.
- stop running the native tag and the ga4 import as primary for the same outcome.
- stop reconciling google ads "conversions" against ga4 by calendar date. use "by conv. time."
- stop leaving ga4 at 90 days and google ads at 30 days without deciding.
- stop treating a 20 percent gap as a bug and a 2 percent gap as proof. the baseline is what matters.
- stop running eea or uk campaigns without consent mode.
- stop changing primary actions mid-learning.
the orbit agent instructions
{
"guide": "ga4-google-ads-linking",
"agent_tasks": {
"audit_link_and_autotagging": {
"check": "confirm the ga4 property and google ads account are linked, auto-tagging is enabled, and a sampled ad click carries the gclid through to the landing page url",
"flag": "no link, auto-tagging off, or gclid missing on the landing page",
"recommend": "link the accounts, enable auto-tagging, and fix redirects or consent reloads that strip query strings before any import is trusted"
},
"audit_primary_secondary_conflicts": {
"check": "list every conversion action with its source (google ads tag, google analytics import, other), its primary or secondary status, and the conversion goal it belongs to",
"flag": "a goal with zero primary actions, or a goal where a native tag action and a google analytics import for the same outcome are both primary",
"recommend": "keep one primary per goal, the native tag where it exists, and set the google analytics import to secondary"
},
"audit_attribution_alignment": {
"check": "for each imported google analytics conversion, compare the attribution model, click-through conversion window, and counting setting in google ads with the key event's attribution and lookback settings in ga4",
"flag": "different attribution models, a window mismatch (for example ga4 90 days versus google ads 30 days), or counting set to every on a lead action or one on a purchase action",
"recommend": "set data-driven in both systems, choose one window and apply it in both, and set counting to every for purchases and one for leads"
},
"reconcile_conversion_counts": {
"check": "for the last full month ending at least 48 hours ago, compare google ads conversions (by conv. time) with ga4 key events for the same event and date range, and compare to the stored baseline gap",
"flag": "no baseline stored, or the current gap differs from the baseline by more than 10 percentage points",
"recommend": "if no baseline, store this month as the baseline after confirming settings are aligned; if the gap moved, check gclid loss, invalid conversion removal, and recent setting changes before touching campaigns"
},
"audit_consent_mode_eea": {
"check": "detect whether the site sends consent mode signals and whether google ads conversion diagnostics show modeled conversions for eea and uk traffic",
"flag": "campaigns targeting eea or uk with no consent mode signals or zero modeled conversions",
"recommend": "implement consent mode v2 through the tag manager or gtag setup and re-check modeled conversions after 7 days"
},
"monitor_import_freshness": {
"check": "daily, confirm imported google analytics conversions for the previous day have arrived in google ads within 24 hours and that the daily count is within the trailing 14-day range",
"flag": "no imported conversions for a day that had key events in ga4, or a daily count outside the trailing range",
"recommend": "check the link status, the ga4 key event configuration, and hostname filters before assuming a performance change"
}
}
}
the bottom line
the link connects. the native tag bids. the ga4 import observes. keep one primary conversion per outcome, align model, window, and counting in both systems, compare by conversion time, and record the gap instead of fighting it.
ga4 and google ads will never show the same number. aligned, they show the same story. that is the goal.
built by orbit - the performance marketing intelligence layer. questions? jose@orbitllm.com