Skip to main content
Metrics type: Cross-Platform MetricsCategory: Analytics
Google Ads spend that doesn’t show up in GA4 attribution, auto-tagging broken, GCLID stripped by redirect, or cross-domain tracking gap.

At a glance

The percentage of Google Ads click-throughs that GA4 actually attributes to the Paid Search channel. Healthy stores see >70% match. A match rate <30% is the alert and means GCLID auto-tagging is broken, redirects are stripping the click ID, the GA4 ↔ Google Ads property link is misconfigured, or the customer is bouncing between domains and losing the cross-domain context. When this drops, your CPA reporting in Google Ads becomes unreliable until it’s fixed.

Calculation

Calculated automatically from your Google Analytics 4 data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US apparel brand running Google Ads at $42,000/month spend. 30-day window ending 02 May 26. Three numbered observations:
  1. The match rate dropped from 84% to 75% in 30 days. That’s a 9 pp drop, just inside the “watch” zone but not yet at the 30% alert. The cause was traced to an A/B-test platform the brand installed on 14 Apr 26, that platform redirects landing-page hits through its own domain to assign a variant, and the redirect strips the GCLID parameter. Every customer assigned to the test variant lost their click attribution.
  2. The Google Ads CPA report is now overstated. Before the regression, GA4 attributed 14,200ofrevenuetoPaidSearchclicks;nowitattributes14,200 of revenue to Paid Search clicks; now it attributes 11,400. Google Ads’ own conversion data (uploaded back from GA4 via the property link) inherits the same gap. The CPA figure Google Ads optimises against is now ~25% high, which means the auto-bidding algorithms are working with bad data and may be over-biding because measured ROAS looks artificially low.
  3. The fix is small but the consequences accumulate. The brand’s engineering team configured the A/B-test platform to preserve URL parameters on redirect (a single config flag). Match rate returned to 84% within 48h. The 18 days of bad data don’t backfill. Google Ads’ learning algorithm carries the bias for ~30 days as it phases out old conversion data.
  4. What WOULD trip the <30% alert? The most catastrophic case we’ve seen: a merchant migrated their primary domain (from oldbrand.com to newbrand.com) without updating Google Ads’ final-URL fields, but configured a 301 redirect. Every Ads click hit oldbrand.com, redirected to newbrand.com, lost the GCLID at the redirect (because the redirect didn’t preserve query parameters), and became a “Direct” session in GA4. Match rate fell to 8%. The CPA report was effectively useless.
  5. Server-side tagging doesn’t help here. Server-side tagging fixes the last-touch tracking gap (purchase events). This card measures the first-touch tracking gap (the click attribution itself). The two are independent. A merchant can have perfect server-side tagging AND a 20% ad-attribution match rate.
Rule of thumb. Stable match rate (≥70%) = your Ads CPA reporting is trustworthy. Match rate dropping = something stripped the GCLID; investigate redirects, A/B-test platforms, third-party landing-page tools, and any URL-rewriting CDN rules.

Sibling cards merchants should reference together

Reconciling against the vendor’s own dashboard

Where to look in GA4 (this card is a Vortex IQ-only metric): GA4 doesn’t display “match rate vs Google Ads” as a single number. The reconciliation requires both connectors connected. The closest manual rebuild:
Reports → Acquisition → Traffic acquisition → Filter to “google / cpc” for the GA4 sessions side, then compare to Google Ads’ Reports → Predefined → Performance → Clicks for the same date range. Admin → Property Settings → Product Links → Google Ads links to verify the link is active and auto-tagging is enabled.
Other GA4 views that look like ad attribution but aren’t:
  • Acquisition → User acquisition: shows first source/medium per user (cohort-style), not session-level click attribution. A returning customer’s first visit was via “google / organic” but their later purchase via “google / cpc” wouldn’t show in user acquisition.
  • Reports → Advertising → All channels: GA4’s data-driven attribution model assigns fractional credit to multiple touchpoints; the headline “Conversions” number per channel can differ from raw session counts.
  • Realtime → Traffic source: 30-min lookback only.
Why our number may legitimately differ from a manual reconciliation (rare): Cross-connector reconciliation, the IMPORTANT one: This card IS the cross-connector reconciliation. Expected relationships: GA4 is NOT the source of truth for click counts (Google Ads is) or for revenue (the commerce platform is). This card’s job is to surface when GA4’s attribution layer between the two truth sources has degraded. When this card alerts, every downstream channel-attribution decision (which campaigns to scale, which keywords to pause, what CPA to bid) is being made on corrupted data.

Known limitations / merchant FAQs

Why isn’t my match rate 100%? Surely every click should be tracked? Cross-device, ad blockers, and auto-tagging quirks make 100% impossible. A click on mobile that converts to a session on desktop loses GCLID continuity (~5% structural loss). Some browsers strip URL parameters in private mode (~1, 2%). Some users click then immediately close and reopen, breaking the session (~0.5%). Healthy stores sit at 70, 90%, not 100%. What’s the cleanest way to fix a low match rate? Triage in this order: (1) is auto-tagging enabled in Google Ads? (Settings → Account settings → Auto-tagging “On”), (2) is the GA4 ↔ Google Ads property link active? (GA4 Admin → Product Links → Google Ads), (3) does any redirect, A/B-test platform, or third-party landing-page tool strip URL parameters? Test by clicking a real ad and watching the URL evolve, (4) does your CDN or DNS rule rewrite query parameters? Cloudflare’s “Auto Minify HTML” can sometimes do this, (5) check if Google Ads’ final-URL field matches the actual landing page (a 301 redirect from Ads-final-URL to your real landing page kills GCLID). My match rate is suddenly 95% (used to be 75%). Did I get better? Possibly, or you have a duplicate-firing tag. A match rate above the typical 70, 90% band can mean (a) you deployed enhanced conversions or server-side tagging that recovered cross-device journeys (great), or (b) GA4 is double-counting sessions, each click is producing two GA4 sessions, both attributed to “google / cpc”. Test by viewing one Ads click in GA4 DebugView; if you see two sessions for one click, that’s the cause. What’s the difference between this card and “Cross-platform: Traffic to Revenue Divergence”? Different layers of the same problem. This card measures click-attribution loss (GCLID survives the journey to GA4). Traffic to Revenue Divergence measures purchase-event loss (the customer’s checkout fires the GA4 purchase event). The two failures compound: a click that’s lost AND a purchase that’s blocked = double invisibility for that customer. Does this card work for Meta Ads / TikTok Ads / Amazon Ads? No. This card is GA4 ↔ Google Ads specific. Meta uses fbclid (different parameter, different attribution path); TikTok uses ttclid; Amazon Ads doesn’t share auto-tagging infrastructure with GA4 at all. Each platform has its own click-to-conversion stitching mechanism. We’re working on a Meta-specific equivalent for the next wave. Does Consent Mode v2 affect this card? Yes, but partially. Consent Mode v2’s modelled conversions help on the purchase-event side (last-touch). Click attribution (first-touch) still requires the GCLID to survive in the URL; modelling can’t recover a stripped GCLID. Server-side tagging via GTM Server doesn’t help either, the click parameter must be preserved at the entry-point, before any tagging layer runs. My GA4 says “google / cpc” sessions but my Ads dashboard says zero spend that day. What’s happening? Bot or invalid traffic that’s being filtered by Google Ads but not by GA4. Google’s invalid-click filter runs after the click reaches the landing page and after GA4 has fired the session event. The session sits in GA4 looking like a paid click, but Ads has voided it from billing. The 1, 5% noise from this is normal; if it’s larger, you may have a click-fraud problem worth investigating with Google’s Click Quality team. My match rate is healthy but my Google Ads CPA is climbing. Are the two related? Not directly. This card only validates that the measurement plumbing is intact. Climbing CPA can mean (a) ad-platform competition is up (rising CPCs), (b) your conversion rate dropped (test other GA4 cards), (c) your ad creative fatigue is real, (d) audience saturation is hitting. None of those are measurement-side; they’re business-side. Use this card to rule out measurement issues before chasing business causes. Why doesn’t this card cover Microsoft Ads / Bing Ads? Microsoft Ads has its own click ID (MSCLKID) and a separate auto-tagging mechanism that doesn’t integrate with GA4 by default. We don’t currently have a Microsoft Ads connector; when added, it will get its own attribution-consistency cross-platform card.

Tracked live in Vortex IQ Nerve Centre

Ad Attribution Consistency (GA4 vs Google Ads) is one of hundreds of KPI pulses Vortex IQ tracks across Google Analytics 4 and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.