Insights · Oct 26, 2026 · 4 min read

The GA4 events every service website should track

Page views tell you how many people came, not whether the website did its job. This is the short GA4 tracking plan we set up on service websites.

GA4 EVENTSFor service websites SELLWRIGHT

A GA4 property that only counts page views tells you how many people came, not whether the website did its job. For a service business that job is simple: get the right people to book a call, send an enquiry or pick up the phone. This is the short tracking plan we set up on service websites, including our own.

Start with the actions that mean business

Track the handful of actions that show real intent, then treat only those as key events. Google defines a key event as an event that measures an action that matters to your business. The word conversion is now kept for key events you use to measure and bid on ad campaigns in Google Ads.

  • A completed enquiry: the form's success message or thank-you page, not the click on Submit.
  • A booked call: the confirmation from your scheduling tool.
  • A click on your email address or phone number.
  • A click on your main call to action, such as Book a call or Get a quote.
  • A download that signals buying intent, such as a pricing sheet or capability statement.

Let enhanced measurement do the routine work

Turn on enhanced measurement in your web stream and GA4 records several events without any code: page_view, scroll (when 90% of a page has been seen), click for links to other websites (with outbound set to true), view_search_results, file_download, form_start, form_submit, and video events for YouTube embeds that support the JavaScript API.

Use these as context, not as your lead count. form_submit fires on the browser's submit event, so it can count attempts your server later rejects, spam included, and it cannot see forms that run inside an iframe, which is how many embedded booking and CRM forms work.

Send your own events for everything else

For the actions enhanced measurement cannot see, send your own events and use Google's recommended names where one fits. generate_lead is the recommended event for a lead, so a completed enquiry or booking should use it. For the rest, keep names short, lowercase and joined with underscores, and reuse one event with a parameter instead of inventing a new name for every button.

  • generate_lead with a lead_source parameter, such as contact_form or booking.
  • click_cta with cta_location (hero, navigation, footer) and the link text.
  • click_email and click_phone for mailto: and tel: links.

Custom parameters such as cta_location only appear in standard reports after you register them as custom dimensions in Admin, so do that on day one.

Catch the bookings that happen inside an iframe

Scheduling tools usually run inside an iframe, so neither enhanced measurement nor a click listener sees the moment a visitor finishes. Many of them post a message to your page when it happens. Calendly's inline widget, for example, sends calendly.event_scheduled, and a few lines of script turn it into a lead:

addEventListener('message', e => {
  if (e.origin === 'https://calendly.com' && e.data && e.data.event === 'calendly.event_scheduled') {
    gtag('event', 'generate_lead', { lead_source: 'calendly_booking' });
  }
});

Always check the message origin, as above, so another frame cannot fake a lead. Other tools have their own equivalent, so look for "embed events" or "postMessage" in their documentation.

Mark key events, and keep the list short

Mark an event as a key event in Admin, under Events, with the star next to its name. Choose the actions that mean a real enquiry, usually generate_lead plus the email, phone and main call-to-action clicks. Leave engagement signals such as scroll depth as ordinary events. If every interaction is a key event, the key event rate stops telling you anything.

Respect consent, then test every event

Visitors in the EEA, the UK and Switzerland start with analytics and advertising storage denied on a well-built site, and Google expects consent mode signals before it uses EEA visitors' data for ads. Set the consent defaults before the Google tag loads and update them when the visitor chooses.

Then test like a visitor. Open a private window, accept cookies, complete each action yourself and watch the event arrive in the Realtime report or in DebugView, with the parameters you expect.

Before launch, define your own IP address as internal traffic in the web stream's tag settings and activate the filter, so your testing does not inflate the numbers.

Where to start

List the three to five actions that mean a real enquiry on your site, check which ones enhanced measurement already covers and add events for the rest. If you would like it set up and tested end to end, our SEO, speed and AI search service includes GA4 and Search Console, or start with a website review.

Questions we hear about this

Should every button click be a key event?

No. Mark only the actions that mean a real enquiry, such as a completed form, a booked call or a click on your email or phone number. Engagement signals like scroll depth are useful context, but marking them as key events makes your key event rate meaningless.

Does the form_submit event count my leads?

Not reliably. It fires on the browser's submit event, so it can include attempts your server rejects and spam, and it cannot see forms inside an iframe. Count a lead with generate_lead when the visitor sees your success message or thank-you page.

Do I need Google Tag Manager for this?

Not for a short plan like this one. The Google tag and a few lines of script cover it. Tag Manager earns its place when marketers need to add or change tags without a developer, or when many tags share the same consent rules.

Next step

Ready for a website that sells?

Book a short call. We will look at your current site, agree what matters most and send a written scope with a fixed quote.

Book a callOr write to hello@sellwrightstudio.com