We audit a lot of GA4 accounts. The conversion data is wrong in most of them. Sometimes badly wrong - double-counted, mis-attributed, missing entire channels. Before you optimise anything against GA4 numbers, run these seven checks. Each one takes ten minutes and prevents the kind of bad decision that quietly burns budget for months.
1. Is the same conversion firing more than once per session?
Open the GA4 DebugView, complete a conversion on your site, and watch the event stream. If "purchase" or "generate_lead" fires twice, the conversion count is inflated. Common causes: duplicate GTM tags, the thank-you page reloading, or the event firing on both page_view and a button click.
Fix: deduplicate at the trigger level in GTM, or use the "Mark as conversion" toggle on a single, reliable event only.
2. Is cross-domain tracking actually working?
If your site sends users to a third-party booking system, payment processor, or CRM (Calendly, Stripe, HubSpot landing pages), GA4 will treat the second domain as a new session unless cross-domain tracking is configured.
Check: Admin > Data Streams > your stream > Configure tag settings > Configure your domains. All your domains should be listed. Then test by clicking from one to the other and confirming the _ga cookie carries across.
3. Are referral exclusions set up for payment domains?
If a user clicks an ad, goes to your site, gets redirected to Stripe to pay, and comes back - GA4 will often attribute the conversion to "Stripe / referral" instead of the original ad. The fix is adding payment processors as unwanted referrals.
Admin > Data Streams > your stream > Configure tag settings > List unwanted referrals. Add: stripe.com, paypal.com, checkout.shopify.com, and any others you redirect through.
4. Are Google Ads and GA4 actually linked - and consistent?
Linking is in Admin > Product links > Google Ads links. But linking isn't enough - you also need auto-tagging on in Google Ads (Account settings > Auto-tagging), or GA4 won't see the gclid that ties a click to a conversion.
Then check: are the conversion counts in GA4 and Google Ads close to each other? They'll never match exactly (attribution windows differ), but if they're off by more than 20-30% over a month, something is broken.
The fastest divergence check
Pull conversions in Google Ads for the last 30 days. Pull the same conversion event from GA4 (Reports > Engagement > Conversions). Within 30% is normal. More than that means the import or the event setup is wrong.
5. Is your channel grouping classifying traffic correctly?
GA4's default channel grouping is reasonable but not perfect. UTM tags on Meta ads often get classified as "Unassigned" or "Referral" instead of "Paid Social". Check your top "Unassigned" sources in Acquisition reports - any of them ads?
Fix: standardise your UTM tagging across all paid channels (utm_source, utm_medium=cpc or paid_social, utm_campaign). If you have multiple channels with messy UTMs, build a custom channel group in Admin > Channel groups.
6. Is consent mode firing properly?
If your site uses a cookie banner (CookieYes, OneTrust, Cookiebot, etc.) GA4 needs consent mode v2 configured or you'll silently lose conversion data from users who don't accept analytics cookies.
Symptom: GA4 is reporting fewer sessions than Google Ads is reporting clicks. Difference of more than 20% is a strong consent mode flag.
7. Are you measuring lead quality, not just lead count?
A conversion event that fires on every form submission counts a spam bot the same as a $10,000 enquiry. Push lead quality back into GA4 with offline conversion imports - mark leads as qualified or won in your CRM, upload back into Google Ads weekly, and feed it back into bidding.
This is what separates accounts that scale from accounts that plateau at "we get plenty of leads, none of them close".
Ready to put this into practice?
Book a free 20-minute strategy call and get tailored recommendations for your business - no obligation, no sales pitch.