GA4 Conversion Tracking: Setting Up Key Events That Hold Up

ga4 conversion tracking

GA4 conversion tracking works differently from anything Universal Analytics offered. There are no goal types, no destination-URL wizard, no funnel steps defined in Admin. You mark an event as a key event, and GA4 starts counting it. That is the whole mechanism, and its simplicity is exactly why setups drift into nonsense — nothing stops you from marking twelve events as important.

What follows is the setup that survives contact with a reporting meeting: what to track, how to create the events, how to avoid double counting, and why GA4 and Google Ads will never show identical numbers.

Conversions became key events in 2024

Google renamed GA4 conversions to key events in 2024. The underlying behaviour is unchanged — you flag an event as important, GA4 counts it separately, and it becomes available in reports and audiences. What changed is the boundary with advertising.

Key events are the GA4 concept. Conversions are what Google Ads calls the key events it imports for bidding. Your GA4 Admin panel says key events, your Ads account says conversions, and older documentation says conversions for both. It is a labelling change that produced an enormous amount of unnecessary confusion, and the conversion rate metrics inside GA4 still use the old word in places.

What is worth marking as a key event

Three to five. That is the working answer for almost every site. Each additional key event mechanically raises engagement rate (because firing one makes a session engaged) and dilutes your blended conversion rate until it means nothing.

Good candidates map to revenue or qualified pipeline:

  • purchase for ecommerce
  • generate_lead or a specific form submission for B2B
  • A booking or demo-request event
  • A trial signup or account creation
  • A high-intent contact action such as a click-to-call on mobile

Poor candidates include scroll depth, video plays, outbound clicks and newsletter signups mixed into the same bucket as purchases. Track them as events by all means — just do not mark them as key events, or your conversion rate becomes a measure of scrolling.

Marking an event is trivial once you have decided which ones qualify. If GA4 already collects the event, this takes ten seconds. Go to Admin → Events (or Data display → Events in newer navigation), find the event in the list, and toggle “Mark as key event”.

Two constraints matter. The event has to have fired at least once in the last 30 days to appear in the list — a brand-new event will not be there until data arrives. And marking is not retroactive: GA4 counts the event as a key event from the moment you toggle it, not for historical data. Turn it on before the campaign, not after.

Creating events for conversions you do not yet collect

Most sites need at least one event GA4 does not collect out of the box. There are three routes, in ascending order of effort.

Create an event from an existing event

Admin → Events → Create event. Define a new event that fires when an existing event matches conditions. The classic use is a thank-you page: create generate_lead when page_view occurs and page_location contains /thank-you. No developer needed, no tag manager needed. It is the fastest path and covers a surprising share of real requirements.

Fire it from Google Tag Manager

For interactions that do not produce a distinct URL — an AJAX form submit, a modal completion, a specific button — build a GTM tag with a GA4 event type, name the event, add parameters, and trigger it appropriately. More control, more places to break.

Send it from your own code or server

Call gtag('event', 'generate_lead', {...}) directly, or use the Measurement Protocol for server-side events such as offline conversions or subscription renewals. Server-side sending is the most reliable option when ad blockers and consent refusals eat a meaningful share of your client-side events, but it needs deduplication discipline.

The double-counting traps

Almost every inflated conversion count traces to one of four causes.

Enhanced measurement overlap. GA4 automatically collects scrolls, outbound clicks, site search, video engagement, file downloads and form interactions. Teams migrating from UA rebuild manual GTM tags for the same interactions out of habit, then mark both versions as key events. Read your enhanced measurement toggles first and decide, per interaction, who owns it.

Thank-you page refreshes. A conversion tied to a page load fires again every time someone reloads or navigates back. For purchases, deduplicate on transaction_id. For leads, prefer a form-submit trigger over a page-load trigger where you can.

Client-side and server-side both sending. If you added server-side tagging without disabling the client-side equivalent, you get two of everything. Send a consistent event ID and deduplicate.

Duplicate GA4 installations. The gtag snippet hard-coded in your theme plus a Google Tag firing in GTM on the same measurement ID doubles every page-load-based conversion. Verify in DebugView that one page load produces exactly one page_view.

Verifying before you trust the number

Open DebugView, enable debug mode in your browser, and complete the conversion action yourself. You should see the event appear once, with the parameters you expect, and you should see the key event indicator against it. Check the parameter values — an event firing with an undefined value or a missing items array will still count but will leave downstream reports hollow.

Then wait. Standard GA4 reports take 24 to 48 hours to fully process, so a conversion you triggered an hour ago being absent from Reports is normal, not a failure. DebugView and Realtime are your live view; everything else is not.

Data thresholding is the other routine false alarm. With Google Signals enabled and small numbers involved, GA4 withholds rows to prevent identifying individuals. You will see an icon near the report title and rows that appear to be missing. Widen the date range or switch reporting identity to Device-based.

Why GA4 and Google Ads never match

They count different things at different moments, and expecting reconciliation wastes hours every quarter.

  • Attribution model. GA4 defaults to data-driven attribution across all channels. Google Ads credits its own click. Changing the GA4 model is retroactive — historical report figures recalculate — so a channel’s conversion count can change with no data change at all.
  • Attribution window. Ads and GA4 use different default lookback windows, and Ads dates conversions to the click while GA4 dates them to the conversion.
  • Scope. Ads shows conversions for ad interactions only. GA4 shows everything.

Pick one system as the source of truth for each decision. Use Google Ads figures for bidding, because that is what the algorithm optimises against. Use GA4 for cross-channel comparison, because it is the only one that sees organic, direct and referral alongside paid.

Where conversion tracking meets search data

GA4 tells you that an organic session converted. It cannot tell you which query drove it, what position you held, or how many impressions never became clicks. When conversions from organic fall, the cause is frequently upstream — a position slip on a commercial term, or a query mix shifting toward informational intent. GA4 shows the symptom only.

SEO Rocket connects Google Search Console and GA4 and treats them as ground truth for your own site’s performance, showing real clicks and sessions beside third-party index estimates with each source clearly labelled, so a conversion drop can be read against position and query movement in one place. Third-party position and volume data are estimates; your own Google data is not. SEO Rocket does not replace GA4, build your custom GA4 reports, or implement conversion tracking code on your site — defining and deploying key events remains your work.

The setup checklist

Write down the three to five outcomes that matter to the business before you touch the interface. Create each one using the lightest mechanism that works, preferring create-event-from-event where a distinct URL exists. Mark them as key events and note the date, because counting starts then. Test every one in DebugView. Audit enhanced measurement for overlap. Then leave the list alone for a quarter — a stable, small set of key events measured consistently beats a comprehensive one that changes every month.