Guide · Updated · 8 min read

Importing GA4 conversions to Google Ads is a data minefield

The import button works. The problem is what GA4 collected before you pressed it.

The short answer

Importing GA4 conversions to Google Ads is safe only if each action has one primary source and the GA4 data behind it is real. Most accounts fail on one of the two.

DataCops is a tool that does the ad-conversion job without a container, warehouse or plugin: one script and one DNS record on your own domain, a bot verdict on every visit with a Real people only switch per ad platform, the real sale from your CRM or Shopify sent back to your ads, new campaigns warmed up with the customers you already have, and a log of every send.

How DataCops does it:

  • First-party collection, no extra tool. One script and one DNS record put collection on your own subdomain; with your DNS on Cloudflare, the free Worker reads the click at the edge before the page loads. Click IDs are kept on the server for up to 90 days.
  • Real people only. Every visit gets a bot verdict against 360+ billion IPs and 350+ monitoring points, with a Real people only switch per ad platform, off by default. Every form email is checked for disposable providers, domains with no mail server and an email risk score.
  • The sale after the form. HighLevel natively (lead, booked, showed, won with value, paid), any CRM by webhook, Shopify through the DataCops Shopify app, all matched to the click by click ID or hashed email and phone, and sent to Meta, Google Ads, TikTok and LinkedIn.
  • Ads Warmup. Upload your existing customers (up to 20,000 rows), see a 0 to 10 match score per person, and send them to Meta, Google Ads and TikTok so new campaigns start warm.
  • Consent, memory and proof. A TCF 2.2 consent banner from your domain with Google Consent Mode v2 on by default, a server-set cookie up to 400 days where enabled, and a delivery log row for every send, counted once against the pixel.

Best for: teams who want better ad conversions without building or maintaining the pipe: lead gen, ecommerce, clinics, home services, B2B and agencies.

  • Double counting: the same action counted by the Google Ads tag and by the GA4 import. Make one Secondary.
  • Missing people: blocked scripts and short cookie lives mean some real buyers never reach GA4.
  • Extra "people": bots that fill forms are imported as conversions and teach Smart Bidding.
  • The fix: clean the setup, then send real, server-side conversions and the actual sale.

The account that looked fine

Picture this. A B2B software company imports its GA4 "generate_lead" key event into Google Ads and switches the campaign to Maximize conversions. Cost per lead drops for three weeks. Everyone is happy.

Then sales asks where the leads went. Half the demo requests use addresses that bounce. The ones that answer are from the wrong countries. Google Ads is reporting a great month.

Nothing was broken in the import. The pipe worked perfectly. It carried exactly what GA4 had, and GA4 had the wrong thing.

Smart Bidding does not audit its inputs. It believes them.

The real cost of a cheap tool

Cheap tracking that is handled badly costs far more, because the bill arrives in what your ads learn.

  • Bots forwarded as buyers. A forwarder sends what reaches it. Junk conversions teach the platform to find more junk.
  • The sale that never gets sent. A booked call, a phone order or a won deal happens outside the store or the page. Most tools never see it.
  • The limit you hit on your busiest day. Hosts and apps cap requests, events or orders, and sending can pause or stop over the limit.
  • The build and the upkeep. Containers, plugins and automations need someone to build them and fix them when a platform changes.

The tracking is 0.17 percent of your spend. If one in five of the conversions your ads learn from is a bot or a fake lead, a fifth of the learning signal points at the wrong people, across the other 99.83 percent of the budget.

Cheap tracking is the cheapest line on the bill and the most expensive one to get wrong.

Ways to feed Google Ads conversions

ToolBest for
DataCopsAd-funded teams who want clean conversions from one script
Google Analytics 4Free reporting inside the Google ecosystem
The platform's own pixel or tagBasic browser tracking on one platform
Hand-built integrationTeams with an engineer to maintain it

When not to use DataCops

  • You need custom tag logic or non-ad destinations. DataCops sends to ad platforms and is not a Google Tag Manager container. A hosted server container gives full control, if someone owns it.
  • You want a reporting dashboard. DataCops fixes what goes into your ads. It does not replace the reports you already read.

Ads Warmup: tell the ads who pays

GA4 conversion import forwards what your site or store produces. A new ad account, pixel or campaign has nothing yet, so it pays to learn from scratch. That is a job a pipe cannot do, because the customers you already have never visit on command.

Ads Warmup, DataCops' flagship feature, sends them to your ad platforms before a campaign spends:

  1. Upload a customer list. A CSV of past buyers, old leads or booked calls. DataCops reads your columns; only email is required.
  2. See a match score for every person. An estimate from 0 to 10 from email, phone, name, location, click ID and customer ID, before anything is sent.
  3. Pick the event. Purchase, Lead, Complete registration, Add to cart or Schedule.
  4. Send server-side. Up to 20,000 people per upload to Meta, Google Ads and TikTok, with a sent, skipped or failed result per person. Google Ads credits only people who clicked a Google ad.

Each row is dated when you press send, not with the old sale date, so it gives a new campaign real customers to learn from on day one. Preview is free; sending needs a paid plan.

What else a pipe never does

  • Capture at the edge. With DNS on Cloudflare, the free, optional DataCops Cloudflare Worker reads click IDs and UTMs off the first request, before the page or any script runs. It captures; it does not block.
  • Keep the click on the server. gclid, wbraid, gbraid, fbclid, ttclid and li_fat_id are stored for up to 90 days, so a deal that closes weeks later still finds its click. A signed server-set cookie lasts up to 400 days where enabled.
  • Check the lead's email. Fixed rules, not guesses: disposable providers, domains with no mail server and an email risk score. With LeadCops (Business and up), a lead that fails is held and never billed.
  • Install on Shopify. The DataCops Shopify app adds a web pixel and a theme app embed, so every paid order reaches your ads, express checkouts included. See Shopify Conversions API.
  • Hand evidence to Google. On the Organization plan, the fraud refund report exports bot-flagged Google Ads clicks in the format Google's Click Quality form asks for. You attach it; Google decides.

Why do GA4 and Google Ads show different numbers?

Because they count different things, on different rules. They were never built to match.

GA4Google Ads
What gets creditEvery channel it can seeOnly Google ad interactions
Date of the conversionWhen it happenedWhen the ad was clicked
Cross-deviceIts own signals and settingsSigned-in Google users
RefreshNear real timeImports can lag hours

So stop trying to make them equal. Watch the ratio between them. If it holds steady, fine. If it suddenly jumps, something changed: a link, a key event, a tag.

How do you stop double counting?

Give each business action exactly one Primary conversion action. Everything else goes Secondary.

In Google Ads, go to Goals, then Conversions, then Summary. Look at the Source column. If "Submit lead form" shows up once as Website (the Google Ads tag) and once as Google Analytics (GA4) and both say Primary, Smart Bidding sees two conversions for one person.

Pick the Google Ads tag as Primary for bidding when you can. It measures clicks the way Google Ads counts them and supports enhanced conversions. Keep the GA4 import as Secondary, so you still see it in the Conversions (all) column without it steering bids.

That fixes the pipe. It does nothing about the water.

What GA4 never sees

GA4 runs as a script in the visitor's browser. Anything that stops the script stops the conversion.

  • Blockers. uBlock Origin, Brave Shields and similar tools block Google Analytics by default lists. Those visitors can click your ad and buy. GA4 records nothing.
  • Short cookie life. Safari caps cookies set by script at 7 days (WebKit ITP 2.1). A buyer who clicks today and comes back on day 9 looks like a new visitor.
  • Consent. For EEA traffic, Google has required Consent Mode signals since March 2024. If your banner fails to load, no choice is recorded, and the data becomes modelled or missing.

None of these show up as an error. The numbers are just smaller, and Smart Bidding learns less from exactly the buyers who tend to be careful and valuable.

What GA4 sees that it should not

GA4 excludes known bots and spiders from a standard industry list. That list is the polite ones: crawlers that say who they are.

The ones that cost you do not say. A headless browser on a residential proxy loads the page, waits, scrolls and submits the form. To GA4 that is a user who generated a lead. The key event fires, the import picks it up, and Smart Bidding goes looking for more visitors like it.

Fix the double counting and you still import the bots. Once, instead of twice.

Does Google Tag Gateway fix it?

Partly. Google Tag Gateway serves your Google tags from your own domain, so fewer of them get blocked. It is free and worth switching on if you stay on Google tags.

What it leaves open: it only covers Google tags, not Meta, TikTok or LinkedIn. Events are still created in the browser. Bots still load the tag and still fire the key event. And it never brings in the sale that happens later in your CRM.

Import GA4 conversions safely, step by step

  1. List your Primary actions. Goals, Conversions, Summary. One Primary per business action.
  2. Demote duplicates. If the Google Ads tag and GA4 track the same thing, set the GA4 import to Secondary.
  3. Import only real key events. "purchase" or "generate_lead", never page views or scroll depth.
  4. Check the link. In GA4 Admin, Product links, Google Ads links. Confirm auto-tagging is on in Google Ads.
  5. Test your consent banner with a blocker switched on. If it does not render, your EEA data is guesswork.
  6. Compare leads to reality. Put imported conversions next to leads your team confirms. A big gap means bots or junk.
  7. Send the sale. Upload closed deals as offline conversions, matched to the click.

Fixing the root cause

Every step above cleans the import. The real fix is to stop feeding Google Ads from a browser script at all, and to decide who is a person before anything gets sent.

DataCops is the tracking solution for ad-funded businesses: it keeps bots out of what your ads learn from and sends the sale that happens after the form to Meta, Google Ads, TikTok, LinkedIn, Microsoft Ads, Reddit, Pinterest and X.

You connect Google Ads with one click. Conversions go server-side, and when the pixel and server both send an event they are matched on event_id and counted once. Every visit gets a verdict, so flagged visits never reach Google Ads as conversions. The consent manager is first-party, IAB TCF v2.2, served from your own domain. CRM sales are matched back by click ID or hashed email and phone.

Delivery log, Google Ads
generate_lead, real visitorSent
generate_lead, bot on home proxyHeld
Same lead from pixel and serverSkipped, counted once
Closed deal from CRM, matched by click IDSent

Every row in the log says sent, held, skipped or failed, with the reason. For lead forms, LeadCops checks the email in two lines of code and can hold the ad conversion until your CRM confirms it. More on the Google side in Google Ads conversion tracking.

Best for: lead gen teams, clinics and agencies whose Google Ads learn from form fills, and teams without a GTM specialist.

Where GA4 still wins: it is free, and it is a fine place to study behaviour across channels. Keep it for analysis. Just do not let it be the thing your bids learn from.

FAQ

Can I warm up a new campaign with my existing customers?

Yes, with DataCops Ads Warmup. Upload a CSV of customers (only email is required, up to 20,000 rows), see a 0 to 10 match score for each person, and send them to Meta, Google Ads and TikTok, dated when you send. Google Ads credits only people who clicked a Google ad.

Should I import GA4 conversions into Google Ads or use the Google Ads tag?

For bidding, the Google Ads tag (with enhanced conversions) is usually the better primary action, because it measures clicks the way Google Ads counts them. Import GA4 key events as secondary so you can still see them. Pick one primary source per action, never both.

Why are my imported GA4 conversions lower than in GA4?

They measure different things. GA4 credits across channels and devices on its own rules, while Google Ads only counts conversions it can tie to an ad interaction, dated to the click. A gap is normal. A gap that suddenly grows usually means a broken link or a changed key event.

How do I know if I am double counting?

Open Goals, then Conversions, then Summary in Google Ads. If the same action, say a lead form, appears twice as Primary (once from the Google Ads tag, once imported from GA4), Smart Bidding counts it twice. Set one to Secondary.

Does GA4 filter bots before the import?

Only known bots and spiders from the industry list. Bots that run a real browser on a home connection and fill in your form are counted as normal users, and their key events import like any other.

Does Consent Mode affect imported conversions?

Yes. For EEA traffic Google requires consent signals, and without them measurement falls back to modelled data or nothing. A banner that fails to load means the choice never gets recorded.

Will Google Tag Gateway fix my GA4 import?

It helps Google tags load from your own domain, so fewer get blocked. It does not filter bots, does not bring in the sale from your CRM, and only covers Google tags.

Can I send the real sale to Google Ads instead of the form?

Yes, as an offline conversion matched to the click ID or to hashed email and phone. That is the signal Smart Bidding should really learn from, because a form is a hope and a sale is a fact.

Sources

Let Google Ads learn from real buyers

Server-side conversions, bots held back, and the real sale matched to the click. Sent to Meta, Google Ads, TikTok, LinkedIn, Microsoft Ads, Reddit, Pinterest and X.

Setup in 5 minutes. No credit card.

Live traffic quality

Updated just now

Visits · last 24h

487
Real users
35873.5%
Bots · auto-filtered
12926.5%

Without filtering, 26.5% of your reported traffic is bot noise inflating dashboards and draining ad spend.

Don't trust your analytics!

Make confident, data-driven decisions withactionable ad spend insights.

Setup in 2 minutes
No credit card