Skip to content

GA4 not tracking conversions? 12 fixes

Why GA4 shows fewer conversions than your inbox or Google Ads, and how to fix each cause: triggers, consent, key events, thresholds and redirects.

By Amin · · 9 min read

When GA4 shows fewer conversions than your inbox, CRM or Google Ads, the cause is almost always one of a dozen setup problems. Work through them in this order: the first few take a minute to check and explain most cases.

Before anything else, open GTM Preview and GA4 DebugView side by side and submit a real test lead. Whether the event shows up in DebugView tells you which half of the list to look at.

If the event never arrives in DebugView

1. The tag fires on the wrong trigger

GTM's built-in Form Submission trigger listens for a native browser submit. Forms that submit with JavaScript (most React, Next.js, Webflow and many WordPress form plugins) never send one, so the tag never fires. The Click trigger has the opposite problem: it fires on every click on the button, including ones that fail validation.

Fix: fire the tag on a signal that only happens after a successful submission. Best is a dataLayer.push({ event: "generate_lead" }) from your own code after the server confirms. Next best is the thank-you page view or the form vendor's success event.

With Consent Mode, tags wait for analytics_storage to be granted. If your banner never sends the update, or sends it after the event already happened, the event is dropped (Basic mode) or sent as a cookieless ping that never appears in DebugView (Advanced mode).

Fix: in Tag Assistant, open the Consent tab for the event and check the state at that moment. Accept the banner, then submit the form, and check again.

3. The wrong Measurement ID, or two of them

A staging property, an old ID left in the theme, or a copy-paste typo sends your events somewhere you aren't looking. Two IDs on one page also cause duplicates in one property and gaps in the other.

Fix: in Tag Assistant, list every Google tag on the page and confirm there is exactly one GA4 destination, the G- ID of the property you are viewing.

4. A blocker or a filter hides you

Ad blockers and privacy browsers block GA4 entirely, which is normal and affects some real visitors too. An active internal-traffic filter silently removes your own test visits from every report.

Fix: test on a clean browser profile on mobile data. In Admin → Data filters, check which filters are Active, not just Testing.

If DebugView shows the event but reports don't

5. The event isn't marked as a key event

GA4 reports conversions only for events marked as key events under Admin → Events. An event can arrive correctly for weeks and count as nothing.

Fix: mark it. Marking only applies from that moment on; GA4 doesn't recount past events.

6. The name doesn't match

Event names are case-sensitive. Generate_Lead, generate-lead and generate_lead (with a trailing space) are three different events. If you mark one as a key event and the tag sends another, nothing is counted.

Fix: compare the name in the GTM tag, in DebugView and in the key events list, character by character.

7. You are looking too early

DebugView is near real time. Standard reports take 24 to 48 hours to process. If the Developer traffic filter is active, your debug-mode test events are also excluded from standard reports on purpose.

Fix: wait two days before comparing totals, and use the Realtime report for a quick live check.

8. Thresholding hides small numbers

When Google signals is on, or reports include demographics, GA4 withholds rows with small user counts to protect privacy. The conversions exist but aren't displayed. An orange warning icon on the report shows this.

Fix: switch the reporting identity to Device-based for the comparison (Admin → Reporting identity), remove demographic dimensions, or use the BigQuery export for exact counts.

If GA4 and Google Ads disagree

9. Different counting rules

Google Ads counts one or every conversion per click, depending on the conversion action settings, and attributes conversions to the date of the ad click. GA4 counts every event and attributes it to the date it happened. The same leads will produce different totals.

Fix: for lead forms, set Google Ads counting to One. Compare the same date range with this difference in mind; the totals rarely match exactly.

10. Attribution moves the credit

GA4's default data-driven attribution can give a conversion to organic search or email even though an ad was clicked earlier, so the Google Ads column in GA4 looks smaller than in Google Ads itself.

Fix: compare Google Ads with GA4's Advertising → Attribution reports, or use the same attribution model in both.

11. Imported conversions are missing or delayed

GA4 key events imported into Google Ads arrive with a delay of up to a day, need the accounts to be linked with auto-tagging on, and only count clicks with a valid gclid. A redirect that strips URL parameters breaks all of this.

Fix: check that auto-tagging is on in Google Ads, click your own ad and confirm the landing URL still contains gclid. Prefer the native Google Ads conversion tag with enhanced conversions as the primary action.

12. Payment or booking redirects reset the session

When buyers leave for Stripe, PayPal or a booking tool and come back, GA4 can start a new session from that referral, so the conversion is credited to paypal.com instead of the campaign that brought the customer in.

Fix: add those domains under List unwanted referrals in the data stream settings, and set up cross-domain measurement for any domain you control.

Prevent it next time

Most of these problems come from changes nobody tested: a new form plugin, a theme update, a new consent banner. Keep a one-page measurement plan, test every conversion in DebugView after each site change, and review key events monthly against your real lead count.

For a clean setup from scratch, follow the complete GA4 setup guide.

Amin

Founder of Adseo

Amin builds websites and sets up analytics, tracking and technical SEO for businesses that want to know which marketing brings in customers.

Rather have it set up for you?

Pick the services you need and get a price range in a minute. You'll get a reply within one business day.