Why Default Tracking Isn't Enough
Out of the box, GA4 tracks basic interactions automatically: page views, scrolls, outbound clicks, site search, video engagement, and file downloads. That's useful โ but it's the bare minimum.
It doesn't tell you:
- How many people clicked your "Get a Quote" button
- Which pricing plan visitors select most often
- How far people get through your multi-step form before abandoning
- Whether that new testimonial section is actually being read
- How many visitors interact with your chatbot
- Which blog posts drive contact form submissions
These are the metrics that actually inform business decisions. And they all require custom event tracking.
How GA4 Events Work
GA4 is built entirely on an event-based data model. Everything is an event โ even a pageview is just an event called page_view.
Event Types
Automatically collected events: GA4 tracks these without any setup.
page_viewโ page loadedfirst_visitโ new usersession_startโ new sessionuser_engagementโ active on page for 10+ seconds
Enhanced measurement events: Toggled on in GA4 settings (most are on by default).
scrollโ scrolled 90% of pageclick(outbound) โ clicked a link to another domainview_search_resultsโ used site searchvideo_start,video_progress,video_completeโ YouTube embedsfile_downloadโ downloaded a file
Recommended events: Google suggests these for specific industries. You implement them yourself.
generate_leadโ form submissionsign_upโ account creationpurchaseโ completed transactionadd_to_cartโ e-commercebegin_checkoutโ e-commerce
Custom events: Events you define for your specific business needs.
quote_button_clickpricing_plan_selectedchatbot_openedtestimonial_section_viewed- Anything else you need to measure
Event Parameters
Events carry parameters โ additional context about the event.
Example:
Event: generate_lead
Parameters:
form_name: "contact_form"
page_location: "/services/seo"
form_type: "enquiry"
value: 100
Parameters turn a generic event into specific, actionable data.
What to Track (Start Here)
You don't need to track everything. Start with the events that directly relate to revenue.
For Service Businesses
| Event | When It Fires | Why It Matters |
|-------|--------------|----------------|
| generate_lead | Contact form submitted | Core conversion |
| phone_click | Phone number clicked | Mobile lead |
| email_click | Email address clicked | Lead intent |
| cta_click | Any CTA button clicked | Engagement with offers |
| pricing_viewed | Pricing page/section viewed | Purchase intent |
| testimonial_interaction | Clicked/expanded testimonial | Trust signal engagement |
| calendar_booking | Meeting booked via embedded calendar | Direct conversion |
For E-commerce
| Event | When It Fires | Why It Matters |
|-------|--------------|----------------|
| view_item | Product page viewed | Shopping intent |
| add_to_cart | Item added to cart | Purchase intent |
| begin_checkout | Checkout started | High intent |
| purchase | Transaction completed | Revenue |
| add_to_wishlist | Item wishlisted | Interest signal |
| search | Product search used | Demand signal |
For Content/Blog
| Event | When It Fires | Why It Matters |
|-------|--------------|----------------|
| article_read | Scrolled 75%+ of article | Genuine readership |
| newsletter_signup | Email list subscription | Audience growth |
| content_share | Share button clicked | Content value signal |
| internal_link_click | Clicked link to another page | Content journey |
| cta_in_content | Clicked CTA within article | Content-driven conversion |
Implementation: Two Methods
Method 1: Google Tag Manager (Recommended)
Google Tag Manager (GTM) is a free tool that sits between your website and GA4. It lets you add, modify, and manage tracking without editing your website code.
Why GTM is better than hard-coding:
- No developer needed for most tracking changes
- Changes deploy instantly without website updates
- Easy to test before going live
- Organised tracking in one place
- Version control and rollback
Setup overview:
- Create a GTM account at tagmanager.google.com
- Install the GTM snippet on your website (one-time developer task)
- Create a GA4 Configuration tag (connects GTM to your GA4 property)
- Create triggers (when should the event fire?)
- Create tags (what data gets sent to GA4?)
- Test in Preview mode (verify before publishing)
- Publish
Example: Tracking a CTA button click
Trigger:
- Type: Click โ All Elements
- Fires on: Click Text contains "Get a Quote" (or Click ID/Class matches your button)
Tag:
- Type: Google Analytics: GA4 Event
- Event Name:
cta_click - Parameters:
button_text: {{Click Text}}page_location: {{Page URL}}
Method 2: gtag.js (Direct Code)
For developers comfortable adding code directly to the website.
gtag('event', 'cta_click', {
button_text: 'Get a Quote',
page_location: window.location.href
});
Attach this to the button's click event in your JavaScript.
When to use direct code:
- Simple, one-off tracking
- Dynamic applications (React, Next.js, Vue) where GTM is harder to implement
- When you need tracking tied to application state, not just DOM events
Setting Up Key Events (Conversions)
In GA4, "conversions" have been renamed to "key events." Any event can be marked as a key event.
How to mark an event as a key event:
- Go to GA4 โ Admin โ Events
- Find your event in the list
- Toggle "Mark as key event"
What to mark as key events:
- Form submissions (
generate_lead) - Phone clicks (
phone_click) - Purchases (
purchase) - Booking completions (
calendar_booking)
What NOT to mark as key events:
- Page views
- Scrolls
- Button clicks that aren't conversions
- Anything that happens too frequently to be meaningful
Key events appear in your reports with special prominence and are used for audience building and Google Ads optimisation.
Custom Dimensions and Metrics
When you need to report on event parameters, you need to register them as custom dimensions or metrics in GA4.
Custom dimensions are for text values (form name, button text, content type).
Custom metrics are for numerical values (score, value, count).
How to register:
- GA4 โ Admin โ Custom definitions
- Create custom dimension
- Name it, set scope (Event), and map it to the event parameter
Limits:
- 50 custom dimensions (event-scoped)
- 25 custom dimensions (user-scoped)
- 50 custom metrics
Plan your parameters carefully. You don't want to hit these limits with throwaway data.
Testing Your Events
Never publish tracking without testing. Broken events mean bad data, which means bad decisions.
GTM Preview Mode
- Click "Preview" in GTM
- Enter your website URL
- Your site opens in a new tab with a debug panel
- Perform the action you're tracking
- Check if the tag fired and what data it sent
GA4 DebugView
- GA4 โ Admin โ DebugView
- Shows events arriving in real-time
- Click any event to see its parameters
- Verify event name, parameter names, and values are correct
GA4 Realtime Report
- GA4 โ Reports โ Realtime
- Shows events from the last 30 minutes
- Quick verification that events are flowing
Checklist Before Publishing
- [ ] Event fires when expected (and doesn't fire when it shouldn't)
- [ ] Event name follows GA4 naming conventions (snake_case, no spaces)
- [ ] Parameters contain correct values
- [ ] No duplicate events firing
- [ ] Works on desktop AND mobile
- [ ] Works across major browsers
- [ ] Doesn't slow down page performance
Common Mistakes
- Tracking everything โ more events doesn't mean more insight. Track what you'll actually use for decisions.
- Inconsistent naming โ
CTA_Click,cta_click,ctaClick, andCTA clickare four different events in GA4. Standardise your naming convention (snake_case recommended). - Not registering custom dimensions โ your event parameters won't appear in reports until you register them.
- Forgetting to test on mobile โ mobile interactions (taps) behave differently than desktop clicks.
- No documentation โ keep a tracking plan spreadsheet documenting every event, its parameters, where it fires, and why.
- Counting non-conversions as key events โ if everything is a key event, nothing is.
- Not connecting to Google Ads โ if you're running ads, your GA4 key events should be imported into Google Ads for smart bidding.
- Ignoring event limits โ GA4 allows 500 distinct event names per property. Plan accordingly.
The Tracking Plan
Before implementing anything, create a tracking plan spreadsheet:
| Event Name | Description | Trigger | Parameters | Key Event? | Custom Dimension? | |------------|-------------|---------|------------|------------|-------------------| | generate_lead | Contact form submitted | Form submission | form_name, page_location | Yes | form_name | | cta_click | CTA button clicked | Button click | button_text, page_location | No | button_text | | phone_click | Phone number tapped | Link click (tel:) | page_location | Yes | โ | | pricing_viewed | Pricing section in viewport | Scroll trigger | plan_type | No | plan_type |
This document becomes your single source of truth for what's tracked, why, and how. Share it with your team and update it whenever tracking changes.
Getting Started
- Install Google Tag Manager (if not already installed)
- Identify your top 5 business-critical actions
- Create a tracking plan for those 5 events
- Build the tags and triggers in GTM
- Test thoroughly in Preview mode and DebugView
- Publish
- Mark conversions as key events in GA4
- Register custom dimensions for any parameters you want to report on
- Wait 24-48 hours for data to populate in standard reports
- Build a custom report or exploration to monitor your events
The difference between a business that uses analytics effectively and one that doesn't isn't the tool โ it's whether they're tracking the right things. Default analytics tells you about your traffic. Custom event tracking tells you about your business.