GA4 Event Tracking Setup
The foundation everything else is built on. So worth getting right.
Form submissions, phone clicks, file downloads, ecommerce transactions, engagement signals - the events that turn GA4 from a passive page-view counter into something you can actually report from. Most setups handle some of it. Few handle all of it. Even fewer handle it in a way that doesn’t need rebuilding every time the site changes.
I set up GA4 event tracking that captures what actually matters, extends automatically as new content gets added, and reconciles to your CRM and order management system.
What I’ll track.
Here’s a look at the types of events I commonly track in GA4:
-
Form submissions - across every form on the site, captured by pattern rather than one tag per form
Phone clicks - both desktop click-to-call and mobile tap-to-call
Email link clicks
File downloads - PDFs, brochures, gated content, with the file name and source page
Outbound link clicks
Newsletter sign-ups
Live chat and bot interactions
-
Pattern-based capture - any button matching the right criteria, not one tag per button
Sticky CTAs, hero CTAs, in-content CTAs and footer CTAs all tracked consistently
Variant data - which version of which CTA was clicked, where it lives, what it says
Page context - so you can see CTA performance by page type, not just in aggregate
-
Full GA4 ecommerce funnel - view_item_list, view_item, add_to_cart, begin_checkout, add_billing_info, add_payment_info, purchase
Refunds and returns
Promotion impressions and clicks
Product list metrics - impressions, position, click-through, list source
Custom revenue dimensions where the standard ones aren’t enough (e.g. margin, subscription vs one-off)
-
Scroll depth tied to your actual content layout, not the GA4 defaults
Video starts, milestones and completes - YouTube, Vimeo, Wistia and native HTML5
Time-on-page and engagement events
Search box usage and search-no-result events
Filter and sort interactions on ecommerce and listing pages
-
Booking system integrations - iframe, subdomain, third-party widgets
Login, sign-up and account activity (including gated content)
Subscription lifecycle - start trial, upgrade, downgrade, cancel
Multi-step lead-gen funnels with intermediate step tracking
App-to-web tracking (where you’ve got a mobile app feeding into the same GA4 property)
How I do it differently.
Self-maintaining patterns
Most setups need someone to add tracking every time a new form, button or product launches. I build tracking that captures events by pattern - CSS selectors, data attributes, dataLayer signatures - so new content is tracked automatically the moment it’s added. New product, new form, new button: tracked. No tickets, no waiting.
Built for reporting, not just data
Capturing the event is half the job. The other half is making it usable:
Custom dimensions and metrics aligned to how your business actually reports (lead type, source, campaign, product category, customer segment)
Key events configured in GA4 so reporting works without custom report-building every time
Conversion configuration that reconciles to your ad platforms and CRM
Audience definitions ready to push back into Google Ads, Meta and other platforms
How it Works.
Step 1: Scope
We start with a conversation about what events actually matter to your business, what you’re going to report from, and what your current setup looks like. I come back with a clear scope and a fixed fee.
Step 2: Build
I set up the events in GTM, configure them in GA4, build the custom dimensions and key events, and wire up the conversion configuration. Pattern-based capture wherever it makes sense, so the setup extends as your site does.
Step 3: Testing & Validation
Every event tested in GA4 DebugView and on the live site. Form fills, CTA clicks, ecommerce flows all walked through end-to-end. No event leaves my hands until I’ve seen it fire correctly.
Step 4: Document & hand over
You get full documentation - every event, the trigger logic, the parameters captured, the dataLayer it depends on. So if something changes, you know what to update.
What you’ll get.
Every event firing reliably across every page where it matters
Documentation of what’s tracked, where, and what the dataLayer should look like
Custom dimensions and key events configured for reporting
A debug-friendly setup so you can verify any event from GA4 DebugView in seconds
Self-maintaining patterns that survive site changes and new content launches
Get the foundation right.
Whether you’re starting from scratch or fixing a setup that’s drifted, get in touch. I’ll have a look and tell you honestly what’s needed.