Dolaaa

AI Marketing Intelligence Platform For Agencies

Visit Website
September 8, 2026 Why GA4 and Google Ads Conversions Don’t Match

Google Ads and GA4 are not two views of one number. They log different dates, credit different interactions, and model missing consent differently. Stop forcing them to match.

The client Slack message is always some version of: “Google Ads says 85 conversions. GA4 says 60. Which report is lying?” Neither, until the gap is sudden, reversed, or roughly 2×. A stable 10–30% difference is what you should expect on a correctly tagged site.

They answer different questions. Ads is trying to train bidding. GA4 is trying to describe site behavior across channels.

The structural reasons (this is not a bug)

Date. Google Ads typically stamps a conversion on the day of the ad click. GA4 stamps it on the day the conversion happened. A Monday campaign that converts on Friday inflates Monday in Ads and Friday in GA4. Neither is wrong.

View-through. Ads can credit a display or YouTube impression that never became a click. GA4 has no equivalent “they saw the ad” conversion. Accounts with YouTube and Display will always look “high” in Ads versus GA4.

Counting. Ads can be set to Every conversion or One. GA4 records events. Three purchases from one click can be 3 in one system and a different shape in the other if settings differ.

Consent and modeling. When users decline cookies, both products estimate. They do not share one model. Ads often looks fuller in high-denial markets. GA4 can under-report paid if GCLID is stripped on redirects or a single-page app.

Lookback and attribution model. Data-driven in both still does not mean identical inputs. Cross-device matching is stronger inside Ads than in a GA4 property without Google Signals.

Consent mode, in more detail than the settings page gives you

When a visitor declines cookies under a CMP running Consent Mode v2, Google doesn't just drop the hit — it models it. Ads and GA4 run separate modeling layers on separate signal sets, which is exactly why the same declined visit can show up differently in each. In markets with high cookie-decline rates (parts of the EU are the obvious case, but plenty of privacy-conscious US audiences decline too), this alone can account for a large chunk of a gap that used to be smaller before you added a CMP. If your gap widened right after a consent banner went live, that's the first thing to check — not the bidding strategy.

Redirects, single-page apps, and the disappearing GCLID

Google Ads attaches a GCLID parameter to the click URL so GA4 can stitch the click back to the session. Two common setups strip it before GA4 ever sees it: a redirect through a link shortener or a third-party landing page builder that doesn't forward query parameters, and a single-page app that rewrites the URL on route change without preserving the query string. Both produce the same symptom — Ads reports the conversion, GA4 attributes the session to (direct) / (none) instead of google / cpc. If your GA4 paid-traffic numbers look suspiciously low compared to what you know is running, check the network tab on the landing page for a GCLID that vanishes after the first redirect.

iOS and Safari make this worse, not better

Safari's Intelligent Tracking Prevention caps first-party cookie lifespan and blocks a chunk of the client-side signals GA4 would otherwise use for returning-visitor matching. On accounts with a meaningful iOS audience — most DTC and app-adjacent businesses — this shows up as GA4 under-counting cross-session journeys that Ads, using its own signed-in Google account matching, can still stitch together. It's not a tag problem you can fix; it's a platform constraint you explain once and then stop re-litigating every month.

What "normal" looks like by channel

  • Search only, no Display or Video: gap should be small, often under 15%, since there's little view-through inflation on the Ads side.

  • Search + Display: expect the gap to widen — Display's view-through credit has no GA4 equivalent.

  • YouTube in the mix: expect the largest structural gap of any common setup, since view-through conversions on video can be a meaningful share of what Ads reports.

  • Shopping/PMax: similar to Search, but watch for asset-group-level view-through creeping in the same way Display does.

When you should actually investigate

  • The gap was 15% for months and jumped to 60% after a GTM or CMP change.

  • GA4 is higher than Ads for a Search-only account — unusual, often duplicate site tags or imported plus on-page conversions.

  • Ads conversions are roughly double, with thank-you page firing twice. That is duplicate tracking, not philosophy.

Wait 48 hours before comparing yesterday. GA4 processes slower than Ads.

A five-minute troubleshooting order

  1. Check the date range is identical in both tools and that you're comparing the same conversion action to the same key event, not a different pairing.

  2. Check whether a CMP or consent banner changed in the same window the gap changed.

  3. Check the landing page URL for a stripped GCLID after any redirect.

  4. Check Ads' conversion counting setting (Every vs One) against what GA4's parameters imply for the same event.

  5. Only after all four come back clean, treat it as a real tagging bug and start pulling tag manager logs.

What to tell a client in one paragraph

Use Google Ads conversions to judge bidding. Use GA4 to judge landing pages, devices, and the rest of the journey. Use the store for money. If those three disagree wildly, fix tags. If they disagree modestly, you have a normal stack.

Dolaaa’s tracking health row is built for the wild disagreements, not for Tuesday’s 12%. See Intelligence Inbox and map GA4 on Project Settings. For money vs credit, continue with True ROAS.

Comment

September 8, 2026 Why I built Dolaaa - AI Marketing Intelligence Platform

I built Dolaaa because I kept watching agencies burn a morning every week stitching client reports from Google Ads, Meta, GA4, and Shopify — then defending numbers that never quite agreed.

I am a backend developer. I spent years shipping software for other people’s businesses, then started my own agency, Mahfuza Technologies. Client reporting was always the same fight. Pull spend and conversions from four dashboards. Notice Google Ads says one conversion count and GA4 says another. Spend an hour on click-through vs view-through, conversion windows, and modeled conversions. Write a paragraph nobody reads, because the PDF already looks fine on the surface.

A 10–30% Ads vs GA4 gap is often structural. Different date logic, different conversion definitions, view-through on one side and not the other. The painful ones are the spikes and the 2× gaps — or the week Google Ads credits 50 purchases and Shopify only has 35 orders. Most reporting tools never catch that. They connect the ad accounts, drop the metrics into a template, and treat every number as equally true. If attribution does not line up, the tool has no idea. The account manager is still the one who has to notice it, dig through campaign settings, and explain it on the call.

Dolaaa is the workspace I wanted on those Mondays. It connects Google Ads, Meta Ads, GA4, and Search Console on every plan. On Agency, it also connects Shopify, WooCommerce, or a Custom API for orders.

Two things do the work that used to live in my head:

Intelligence Inbox. This is the morning scan, not another dashboard. It runs named diagnostic patterns across clients — Ghost Town (traffic with almost no conversions), Fatigue Threshold (creative going stale while CPA climbs), pacing risk, Double-Count Illusion when the store is connected. Each alert comes with an explanation, estimated impact, and the evidence behind it. Clients never see this queue. It is for the operator.

Attribution gap (Agency). This is not multi-touch modeling. It is simpler and more useful: platform-reported conversions vs verified store orders, plus blended ROAS from actual revenue. Google Ads can still look like a 4×. The store is the number you can defend in a retainer review.

White-labeling was in from day one for the same reason. Agencies sell their own brand, not mine. Client portal logins exist on every paid plan. Full white-label — custom domain like reports.youragency.com, and hiding Dolaaa branding — is Agency-only. Logo and colors can be set earlier.

What it does not do, on purpose: it does not connect TikTok yet, it does not auto-pause campaigns, and it does not pretend to be a 85-source report factory. Live ad changes stay in your hands. Google actions that exist in the product are propose/approve. Meta stays read-only.

Pricing (flat, billed by clients, not by ad account):

  • 7-day Agency trial, no credit card. Then 3 days of grace before a paywall.

  • Starter — $29/mo ($290/yr): 1 client, unlimited ad accounts, 1 seat

  • Pro — $79/mo ($790/yr): up to 15 clients, 10 seats. Extra clients are +$15/mo per pack of 5.

  • Agency — $199/mo ($1,990/yr): up to 100 clients, unlimited seats, store revenue, attribution gap, white-label, API

  • Enterprise if you need more than 100 clients

I am building this having sat in the account manager’s chair, so I am biased toward the problems that made reporting day miserable — mismatched conversions, unexplained dips, a portal that still looks like the vendor’s product. If you run an agency and reporting still eats a chunk of your week, I want to know what is actually broken in your current setup. That is faster than me guessing from a feature list.

dolaaa.com

Comment

About

I built Dolaaa because I kept watching agencies burn hours every week stitching together client reports from Google Ads, Meta, GA4, and Shopify data that never quite agreed with each other.