A dashboard full of pageviews is comforting right up until no one can explain why the phone did or did not ring. The cleanest GA4 setup answers one business question: which visitors became leads?
First, define a lead
Before you debug GA4, write down what counts as a lead. For a local service business, that is usually not "someone visited the website." It is a form submission, phone tap, booking click, quote request, email click, chat start, or thank-you page visit. If it could make the phone ring or put money on the calendar, it deserves its own signal.
If GA4 only tracks pageviews, you can know traffic exists without knowing whether the website is doing its job. That is how people end up saying "SEO is working" while every actual lead is coming from referrals.
The four layers of lead tracking
GA4 now calls important business actions key events. Older tutorials and some ad-side workflows still say "conversions," so translate carefully: the event has to exist first, then it has to be marked as important, then reporting and ad platforms have to use it correctly.
| Layer | Question to answer | What can go wrong |
|---|---|---|
| Base tag | Is GA4 installed on the page? | The tag is missing, duplicated, blocked by consent, or installed on only some pages. |
| Event | Does the lead action fire an event? | The form submits without an event, the button selector changed, or the phone link is not tracked. |
| Key event | Is the important event marked as a key event in GA4? | GA4 records the event but reports do not treat it as a business outcome. |
| Reporting | Can you connect leads back to channels and pages? | Events fire, but naming, parameters, attribution, or filters make reports useless. |
How to test it
- Open the page where the lead action happens.
- Confirm the Google tag, GA4, or GTM container is present.
- Submit a test form, click the phone link, or complete the booking step.
- Watch GA4 Realtime and DebugView for the event.
- Confirm the event name is clear enough to recognize later.
- Mark true lead events as key events, then check reporting after processing time.
Realtime and DebugView are for troubleshooting. Standard GA4 reports can take time to process, so do not declare victory just because one test showed up for one minute. One happy test click is not a measurement system.
If the event is missing, choose the right fix path
When the form works for users but GA4 never records a lead event, the fix is usually one of three paths: Google Tag Manager, direct code, or a CMS/plugin integration. For most service business sites, GTM is the standard middle ground because you can create a GA4 event tag and attach it to a form, click, thank-you page, or custom trigger without asking a developer to change production code every time.
| Fix path | Best for | Watch out for |
|---|---|---|
| Google Tag Manager | Forms, phone clicks, booking buttons, thank-you pages, and marketing-owned tracking. | Triggers need real QA. A selector that works today can break after a redesign. |
| Direct GA4 event code | Developer-owned apps, custom forms, checkout flows, or events that need server-side truth. | Hardcoded events are cleaner when done well, but slower to change without developer access. |
| CMS/plugin tracking | Simple WordPress, Shopify, Squarespace, or form-builder setups with reliable integrations. | Plugin events can be generic, duplicated, or named in ways that make reporting useless. |
Enhanced Measurement is helpful, not enough
GA4 Enhanced Measurement can automatically collect events like scrolls, outbound clicks, file downloads, site search, video engagement, and form interactions. That is useful. It is not the same thing as a clean lead-tracking system.
The trap is assuming "form_submit exists" means "leads are handled." Enhanced Measurement may send a generic form_submit event, miss embedded or customized forms, or collect a form interaction that still needs custom dimensions, naming, and key-event setup before it can answer a business question.
Auto-tracked events are a starting point. Real lead tracking still needs intent, naming, testing, and reporting discipline.
Common service-business tracking gaps
- The contact form shows a success message but never sends a GA4 event.
- The phone number is clickable on mobile but click-to-call is not tracked.
- The business gets most of its leads by phone, but the report only celebrates form submissions.
- The booking widget lives in an iframe and the parent site never receives the event.
- A thank-you page exists but the form sometimes submits without redirecting there.
- The same event name is used for every button, so reports cannot separate real leads from soft clicks.
- Internal traffic and test submissions are mixed with real customer behavior.
Base tag problems that distort everything
A duplicated GA4 tag can make every number look better than it is. The common version is a site that already had a hardcoded Google tag, then someone added GTM and fired the same GA4 property again. Now one pageview becomes two pageviews, and one lead event can become two lead events if both setups listen to the same action.
Use Tag Assistant, source checks, and GA4 Realtime to look for duplicate pageview or event fires. If you see the same page load hitting the same measurement ID twice, decide whether GA4 lives in GTM, direct site code, or the CMS integration. Pick one clean source of truth.
Iframe and cross-domain forms need special handling
Booking tools, embedded CRMs, payment links, and third-party form platforms often live on another domain or inside an iframe. The parent page may show the widget, but GA4 on your site may never see the successful submission unless the widget sends an event back, redirects to a trackable thank-you page, or has its own analytics connection.
If the user leaves your domain to book, pay, or submit a form, configure cross-domain measurement where possible. Cross-domain tracking helps GA4 keep the same user and session across domains instead of treating the booking platform as a separate visit or a referral source.
Submit the embedded form while watching Tag Assistant and DebugView. If the parent page records only a click or pageview, but not the completed lead action, the iframe is probably swallowing the moment you actually care about.
Reporting settings that make good events look bad
- Internal traffic: define internal traffic by IP in the web data stream, then create a data filter before staff clicks, QA tests, and owner visits pollute lead reports. Test filters before making permanent exclusions.
- Data retention: GA4 properties can use 2-month or 14-month retention for user-level data, and key-event data follows that setting. If you use Explorations, funnels, quarterly reviews, or year-over-year analysis, check this setting early.
- Attribution: GA4 attribution decides which channel gets credit for a key event. Data-driven attribution can split credit across touchpoints, so it may not match last-click CRM notes or what a business owner expects from a single ad click.
- Event naming: inconsistent events like
form_submit,lead,contact_form, andgenerate_leadcan fragment reports even when every tag technically fires.
What to name lead events
Use names a future human can understand. generate_lead can work as a broad key event, but add useful parameters or separate events when the business needs to distinguish form leads from phone leads.
generate_leadfor a completed quote/contact form.phone_call_clickfor a tap on a tel link.booking_startandbooking_completefor scheduling flows.email_clickfor mailto links when email is a real lead channel.
Whatever you choose, document it. The goal is not to impress GA4. The goal is for the owner, strategist, ads person, SEO, and future auditor to understand what happened without decoding a haunted spreadsheet.
FAQ
How do I know if GA4 is tracking form submissions?
Submit a test form and check GA4 Realtime or DebugView for the expected event. Then confirm that the event is marked as a key event if it represents a real lead.
Are pageviews enough for lead tracking?
No. Pageviews tell you someone visited. Lead tracking tells you whether they contacted, called, booked, requested a quote, or took another business action.
Should phone calls be tracked in GA4?
At minimum, mobile click-to-call taps should be tracked. For deeper reporting, use a proper call tracking setup so calls can be connected to traffic source and quality.
Should I use Google Tag Manager for GA4 lead tracking?
Usually, yes. GTM is flexible for form submissions, click-to-call taps, booking buttons, and thank-you pages. Direct code can be better for custom applications or server-side events, and plugin tracking can work for simple CMS setups if it is tested.
Does GA4 Enhanced Measurement track leads automatically?
Not reliably. Enhanced Measurement can collect form interactions, outbound clicks, downloads, and other events, but a business still needs clean event names, parameters, key-event setup, and testing for the specific lead actions that matter.
Why did GA4 say conversions before and key events now?
GA4 now calls important Analytics events key events. Older guides may call them conversions. In practice, create or identify the lead event first, mark it as a key event in GA4, and create Google Ads conversions from it when ad bidding or ad reporting needs that signal.
What GA4 settings should service businesses check after events work?
Check internal traffic filters, data retention, attribution settings, event naming, cross-domain measurement for third-party tools, and whether duplicate Google tags are inflating pageviews or lead events.