Home/Blog/Event Tracking
Event Tracking10 min read

GA4 Conversion Tracking: How to Set Up Key Events Correctly

Learn how GA4 key events replaced goals, the right counting methods, deduplication, attribution windows, and the most common conversion tracking mistakes to avoid.

GA4, conversions, key events, attribution, tracking

GA4 removed goals. If you built your conversion measurement strategy in Universal Analytics and never updated it, there's a strong chance your current GA4 conversion data is wrong — either over-counting, under-counting, or both.

This guide explains how conversion tracking actually works in GA4 in 2026, how to set up key events correctly, and the mistakes that silently corrupt conversion numbers.

Goals Are Gone. Key Events Are Here.

In Universal Analytics, you defined goals — destination goals, duration goals, pages/session goals, event goals. Each session could count at most one conversion per goal type.

GA4 replaced this with key events (previously called "conversions" in GA4, renamed in early 2024). The concept is simpler: any event in GA4 can be marked as a key event with a single toggle. When that event fires, it counts as a conversion.

The implications of this simplicity are significant.

Where to mark events as key events:

1. Go to GA4 Admin → Events

2. Find the event you want to track as a conversion

3. Toggle "Mark as key event" to On

That's it. From that moment forward, every time that event fires, it increments your key event count.

Counting Methods: Once Per Session vs. Once Per Event

This is where most people get tripped up. GA4 counts key events differently depending on whether you look at "Sessions with key event" vs. "Key events" as your metric.

  • Key events (metric) — counts every single instance the event fires. If a user completes a purchase twice in one session, this counts 2.
  • Sessions with key event — counts the number of sessions in which at least one key event fired. Same user, same example: this counts 1.

Which metric should you use?

For most conversion goals, use Sessions with key event in acquisition reports — it tells you how many sessions resulted in a conversion, which is what you're optimising for.

Use Key events (raw count) for revenue-related events like purchase where counting every transaction is correct.

The mistake is building dashboards that mix these metrics without understanding the difference and then panicking when conversion counts don't match.

Deduplication: The Silent Revenue Problem

For purchase events specifically, deduplication is critical. Without it, a single purchase can be counted multiple times when:

  • The user refreshes the order confirmation page
  • Server-side and client-side tracking both fire
  • Your tag fires on both the checkout success page and a post-purchase upsell page

GA4 deduplicates purchase events using the transaction_id parameter. If the same transaction_id is received within a short window, GA4 drops the duplicate.

Always send `transaction_id` with purchase events:

gtag('event', 'purchase', {
  transaction_id: 'ORDER_789456',   // unique, permanent order ID
  value: 99.00,
  currency: 'USD',
  items: [...]
});
javascript

The transaction_id must be: - Unique per order (not per session) - Consistent — the same order always gets the same ID - Not auto-generated on page load (use the actual order ID from your backend)

For non-purchase conversions like generate_lead, GA4 does not deduplicate automatically. If your form fires generate_lead on submission and the user submits twice, both count. Consider adding client-side logic to prevent double submissions before the event fires.

Attribution Windows

An attribution window is how far back GA4 looks to give a traffic source credit for a conversion. In GA4 you can configure two windows:

  • Acquisition conversion window — used for "first touch" attribution (how the user originally arrived)
  • Engagement conversion window — used for "last touch" and data-driven attribution (the most recent touchpoints before conversion)

Default settings:

- Acquisition: 30 days

- Engagement: 7 days (key events), 1 day (purchase events)

Where to change them:

GA4 Admin → Attribution settings → Reporting attribution model and conversion windows

What this means in practice:

If a user clicks a Google Ad today but doesn't convert for 8 days, the purchase falls outside the default 7-day engagement window and that ad click may receive less (or no) credit in your reports.

For B2B SaaS with long sales cycles, extend your engagement window to 30 or 90 days. For ecommerce with quick purchase decisions, the default 7 days is usually fine.

Configuring the Right Attribution Model

GA4 offers several attribution models in your property settings:

  • Data-driven (default, recommended) — uses machine learning to distribute credit across touchpoints based on actual conversion path data. Requires a minimum volume of conversions to activate.
  • Last click — gives 100% credit to the last touchpoint before conversion.
  • First click — gives 100% credit to the first touchpoint.
  • Linear — distributes credit equally across all touchpoints.
  • Time decay — gives more credit to touchpoints closer to conversion.
  • Position-based — 40% to first, 40% to last, 20% distributed to middle.

For most properties with sufficient conversion volume (50+ per month per key event), use data-driven. For properties with low conversion volumes where data-driven isn't available, last click gives the most actionable signal for paid channel optimisation.

You cannot set different attribution models per key event — it's one model per property.

Key Events vs. Conversions in Campaign Reporting

There's an important nuance when you look at conversions in Google Ads vs. GA4:

  • GA4 uses its own attribution model (configured in GA4 Admin)
  • Google Ads uses its own attribution model (configured in Ads)
  • If you import GA4 key events into Google Ads as conversions, Ads applies its own attribution on top

This can cause numbers to differ between GA4 and Ads reports even for the same event. This is expected behaviour, not a bug — but you should know which numbers your campaigns are optimising against.

Verifying Key Events Are Firing Correctly

Before trusting any conversion data, validate the setup:

1. Use GA4 DebugView Trigger the conversion action yourself (submit a test form, complete a test purchase) and verify in DebugView that: - The event fires exactly once - The event name is correct (not Form_Submit when you expect generate_lead) - Required parameters (transaction_id, value, currency) are populated

2. Check Realtime Reports GA4 Admin → Realtime shows key events in the last 30 minutes. After triggering a conversion, you should see it appear within 60 seconds.

3. Look for unexpected spikes in historical data If a key event was previously a regular event and you just toggled it, the historical event data doesn't suddenly become conversion data. The key event flag applies from the toggle date forward.

4. Cross-reference with backend data For purchases, compare GA4's transaction count to your CRM or payment processor. A meaningful gap (>10%) suggests tracking issues — either missing events (fires not triggering) or duplicate events (overcounting).

Common Conversion Tracking Mistakes

Marking every event as a key event GA4 allows up to 30 key events per property. Some teams mark every event as a conversion and then wonder why their conversion rate is 80%. Mark only business-critical actions — purchases, trials started, demos booked, qualified leads.

Not setting values on key events GA4's data-driven attribution model needs value parameters to understand which conversions matter most. Even for non-revenue events like generate_lead, assign an estimated value based on your average close rate and deal size.

Ignoring form_submit in favour of thank-you page views Tracking the thank-you page as a destination conversion seems simple, but it breaks whenever: - You use a modal confirmation (no page change) - A URL parameter differences create multiple "thank-you" URLs - Users land directly on the thank-you URL without completing the form

Event-based conversion tracking (generate_lead on form submit) is more reliable.

Not excluding internal traffic If your team is submitting test forms or making test purchases, those inflate conversion data. Create an IP exclusion filter in GA4 Admin → Data filters to exclude your office IP ranges.

Using the Conversion Checker Tool

The Conversion Checker tool at GA4Audit.ai audits your property's key event configuration against your actual traffic and conversion data. It surfaces:

  • Key events with zero conversions in the last 30 days (likely broken)
  • Events with implausibly high conversion rates (likely misconfigured)
  • Missing `transaction_id` on purchase events (deduplication risk)
  • Key events missing value parameters (attribution model accuracy impact)
  • Attribution window settings vs. your typical customer journey length

Run a conversion check any time you launch a new campaign or after any site changes that touch forms, checkout flows, or CTA buttons.

---

Connect your GA4 and run a health check in 60 seconds at GA4Audit.ai.

Check your GA4 implementation

Run a free AI-powered audit to see how your tracking stacks up.

Start Free Audit