June 11, 2026Analytics

GA4 Conversion Tracking: Setup + 5 Common Failures

Why Your GA4 Conversion Tracking Is Quietly Losing Data

Last month I audited a B2B SaaS company running EUR 14,000 per month in Google Ads. Their GA4 property showed 38 demo-request key events for May. Their CRM showed 67 demo requests from the same period with a Google Ads landing page in the referrer. That is a 43 percent gap -- nearly half their paid conversions invisible to GA4, invisible to Smart Bidding, invisible to every dashboard their team used for weekly stand-ups.

The cause was not one spectacular failure. It was five small ones stacked together: a consent banner that blocked GA4 for non-consented users, a duplicate event GA4 could not deduplicate, a missing value parameter, a seven-day Safari cookie expiring before prospects returned, and a key event toggle never switched on. Each fixable in under an hour. Together they made the data useless.

This post walks through how to set up GA4 conversion tracking correctly -- and then the five failures I find in almost every property I audit.

How to Set Up GA4 Conversion Tracking Step by Step

GA4 renamed conversions to "key events" in 2024, but the concept is the same: an event that matters enough to your business that you want it tracked, reported, and fed into bidding. I will use both terms interchangeably because Google still uses "conversion" in Google Ads.

Step 1: Define what counts as a conversion

Before touching GA4, write down the two or three actions that represent real business outcomes. For e-commerce: purchase. For lead gen: generate_lead or a custom demo_request event. For SaaS: sign_up or trial_start.

The most common mistake here is marking too many events as key events. Newsletter signups and scroll milestones are engagement signals, not conversions. Import them into Google Ads and Smart Bidding optimizes toward the cheapest action instead of revenue. I covered this in the Google Ads conversion tracking guide.

Step 2: Create or verify the event in GA4

If you are tracking a recommended event like purchase or generate_lead, make sure the event name matches Google's spec exactly -- GA4 only populates built-in dimensions when names match the documented schema. For custom events, use lowercase snake_case. Fire via a data-layer push in GTM or gtag.js and verify the event appears under Admin > Events.

Step 3: Mark the event as a key event

In your GA4 property, go to Admin > Events, find the event, and toggle "Mark as key event." Two settings matter:

SettingWhen to use
Count "Once per event"Lead gen -- one form submission per session counts as one conversion
Count "Once per session"E-commerce purchases or any event that legitimately repeats within a session -- each occurrence counts as a separate conversion

For e-commerce purchase events, the counting method defaults to every event, which is correct -- a customer who buys twice in one session should generate two conversions.

Step 4: Add value and currency parameters

Skip this and GA4 records the event but reports zero revenue. For e-commerce, push value and currency with every purchase event. For lead gen, assign a static value: average deal size multiplied by close rate. A demo request worth EUR 8,000 with a 12 percent close rate is roughly EUR 960.

Step 5: Link GA4 to Google Ads

Under Admin > Product links > Google Ads linking, connect your Google Ads account. In Google Ads, go to Goals > Conversions > Summary and import the GA4 key event for bidding. This step completes ga4 google ads conversion tracking -- without it, Google Ads never sees the GA4 event.

For bidding I generally recommend native Google Ads conversion tags over GA4 imports, because native tags use Google Ads attribution and give Smart Bidding a more complete signal. I explain the trade-off in the GA4 vs Google Ads conversions guide.

Step 6: Verify the setup

Open Tag Assistant and walk through your conversion flow. Confirm the event fires once with correct parameters, check GA4 Real-Time reports, and verify the Google Ads conversion action moves to "Recording conversions" within 24 hours.

That is the complete GA4 conversion tracking setup. Straightforward when everything works. The problem is what breaks after deployment.

The 5 Most Common GA4 Conversion Tracking Failures

These are ordered by how often I encounter them in client audits. Most properties have at least two.

Failure 1: Consent Mode not connected (or stuck in Basic mode)

This is the single biggest source of data loss I find in European GA4 properties. The consent banner is live, the legal team signed off, but nobody connected the banner to Consent Mode v2. The result: every visitor who declines cookies generates zero data. No pings, no behavioral modeling, nothing.

In the properties I audit, consent rejection rates in GDPR markets typically range from 30 to 60 percent depending on banner design and jurisdiction. If you are in Basic mode or have no Consent Mode integration at all, that traffic is invisible. Your GA4 reports reflect only the fraction of users who clicked "Accept."

The fix is implementing Consent Mode v2 in Advanced mode. Advanced mode fires Google tags in a restricted, cookieless state when consent is denied. Google then applies behavioral modeling to estimate conversions among non-consented users. The modeling requires at least 1,000 daily events with analytics_storage='denied' for seven consecutive days before it activates. Below that threshold, you get nothing.

Failure 2: Key event toggle never switched on

This one is embarrassing but common. The event fires correctly. The data layer is perfect. But nobody marked the event as a key event in GA4. The event shows up in the Events report but is absent from the Key Events report, absent from Google Ads imports, and absent from any conversion-based analysis.

I see this most often after migrations -- a property was recreated, events were re-deployed, and the team assumed the key event designation carried over. It does not. Each GA4 property requires manual configuration. Google migrated some conversion settings automatically during the Universal Analytics sunset, but not reliably -- I find missed events in roughly a third of migrated properties.

Failure 3: Missing or incorrect event parameters

The event fires. It is marked as a key event. But the parameters are wrong.

Common variations:

  • purchase event fires without transaction_id. Without a transaction ID, GA4 cannot deduplicate if the tag fires twice (page refresh, back-button navigation). Double-counted conversions inflate revenue and wreck ROAS reporting.
  • value is missing or hardcoded to zero. Revenue reports show conversions but no revenue, making value-based bidding in Google Ads impossible.
  • currency is missing. GA4 defaults to USD if no currency is set, which silently distorts revenue for any non-US business.
  • Parameter names use camelCase (transactionId) instead of snake_case (transaction_id). GA4 treats them as different parameters and the built-in reporting dimensions stay empty.

Open your GA4 DebugView (Admin > DebugView) or use Tag Assistant to inspect the event payload. Every recommended event has a required parameter list -- check yours against it.

Failure 4: Cookie expiration destroying attribution on Safari

Safari's Intelligent Tracking Prevention caps JavaScript-set first-party cookies at seven days. If your conversion cycle is longer than a week -- and for most B2B companies and considered purchases it is -- Safari users who click an ad on Monday and convert the following Tuesday look like direct traffic. The GA4 cookie that linked them to the original campaign is gone.

This does not show up as missing conversions. It shows up as inflated direct traffic and deflated campaign performance. The conversions are recorded; they are just attributed to the wrong source.

The fix has two layers. First, enable enhanced conversions to give Google Ads a cookie-independent way to match conversions back to clicks using hashed first-party data. Second, implement server-side tracking to set GA4 cookies from your server rather than from JavaScript. Server-set cookies are not subject to the seven-day ITP cap and can persist for the full 400-day maximum that Safari allows for server-set first-party cookies.

If your Safari and mobile traffic share is above 25 percent and your average conversion cycle exceeds seven days, the impact is severe. In properties I have audited, this failure alone accounted for 15-25 percent of misattributed conversions.

Failure 5: Duplicate or conflicting tags

This failure is the noisiest. A developer hardcoded a gtag.js snippet on the site. The marketing team also deployed GA4 through GTM. Both fire on every page. Every conversion is counted twice.

Variations I see regularly:

  • GTM container loaded twice due to a CMS plugin installing it alongside a manual snippet.
  • Two GA4 Measurement IDs in the same GTM container -- one from a staging property never removed.
  • A Google Ads conversion tag and a GA4 event both firing on the same trigger with different transaction IDs.

The diagnostic is simple: open Tag Assistant, load your conversion page, and count how many times the event fires. Anything other than exactly one is a problem. If you cannot isolate the duplicate, I can help you untangle it.

How Enhanced Conversion Tracking in GA4 Helps

Enhanced conversion tracking in GA4 uses hashed first-party data (email, phone, address) to recover conversions lost to cookie expiration and cross-device journeys. Enable it in your Google Ads account and pass user-provided data through your tags -- this gives Google a second identifier when the cookie trail breaks.

Google reports a median 5 percent increase in measured Search conversions from enhanced conversions. In my client accounts I typically see a 10-15 percent lift, though one B2B SaaS account with a 21-day sales cycle recovered 28 percent more attributed conversions after enabling enhanced conversions. The enhanced conversions setup guide covers every implementation path.

A Quick Diagnostic Checklist

Before changing anything, run these five checks. They take ten minutes.

  1. Source-of-truth comparison. Compare last month's GA4 key events against your CRM or payment processor. A gap over 10 percent means something is broken.
  2. Consent Mode status. Deny cookies on your site and check DevTools Network tab for requests to analytics.google.com. No requests means Consent Mode is missing or in Basic mode.
  3. Key event list. Open Admin > Key events. Confirm every business-critical event is toggled on.
  4. Event parameters. Fire a test conversion and inspect the payload in Tag Assistant. Check for transaction_id, value, and currency.
  5. Tag count. Load your conversion page in Tag Assistant. The conversion event should fire exactly once.

For a deeper walkthrough covering ten areas beyond just conversions, see the GA4 tracking audit checklist.

FAQ

What is the difference between events and key events in GA4?

Every interaction tracked in GA4 is an event, including page views, clicks, and scrolls. A key event is an event you have explicitly marked as important to your business, such as a purchase or a lead form submission. Only key events appear in conversion reports and can be imported into Google Ads for bidding optimization.

How do I set up conversion tracking in GA4?

Create or identify the event you want to track, make sure it fires with the correct parameters via Google Tag Manager or gtag.js, then mark it as a key event under Admin in your GA4 property. If you use Google Ads, link the GA4 property and import the key event as a conversion action. Verify the setup with Tag Assistant and GA4 Real-Time reports.

Why does GA4 show fewer conversions than my CRM?

The most common causes are consent denial blocking data collection, cookie expiration on Safari breaking attribution, missing key event toggles, and ad blockers suppressing the GA4 tag. Comparing GA4 to your CRM is the fastest way to quantify the gap and prioritize which fix will recover the most data.

Do I need enhanced conversions if I already have GA4 conversion tracking working?

Yes. Standard GA4 tracking depends on browser cookies that expire after seven days on Safari and can be blocked by consent banners or privacy tools. Enhanced conversions use hashed first-party data to match conversions independently of cookies, recovering signal that standard tracking misses. The improvement is especially significant for businesses with conversion cycles longer than a week.

Can GA4 conversion tracking work without Google Tag Manager?

Yes, you can implement GA4 conversion tracking using the Google tag (gtag.js) placed directly in your site code. However, Google Tag Manager makes it easier to manage triggers, test changes before publishing, and add enhanced conversion data without modifying site code. For any setup beyond a single conversion action, GTM reduces errors and saves time.

How long does GA4 take to show conversions?

Key events appear in Real-Time reports within seconds of firing. Standard reports typically update within 24-48 hours, though Google warns that processing can take up to 72 hours during high-traffic periods. If you have just marked an event as a key event, allow a full 24 hours before troubleshooting. For Google Ads, the imported conversion action usually shows "Recording conversions" within 24 hours of the first matched event.

Not sure your GA4 conversion tracking is actually capturing what matters? Get in touch -- I will audit your setup and tell you exactly where the data is leaking and how to fix it.

Ready to fix your marketing measurement?

Take assessment →