A website visit only matters when you can see what happened next. Calls, forms, bookings, and other user interactions show whether your website is earning attention or producing genuine leads.
I see many small-business sites with analytics installed but no clear event tracking for how visitors contact the business. Traffic totals can look healthy while a broken form, hidden phone link, or weak service page quietly costs inquiries.
Google Analytics 4 can receive this data through Google Tag Manager or a direct gtag.js installation. This article focuses on the GTM workflow, turning your website into a more useful source of business evidence.
Key Takeaways
- Focus Google Tag Manager event tracking on actions that connect to revenue, such as confirmed forms, phone clicks, bookings, quote requests, and meaningful downloads.
- Use GTM to deploy events and GA4 to receive and report them, keeping event names consistent and avoiding duplicate tags from both GTM and direct gtag.js implementations.
- Track confirmed outcomes rather than hopeful clicks, using thank-you pages, AJAX success callbacks, booking confirmations, or Data Layer events when appropriate.
- Test every event in GTM Preview and Debug mode and GA4 DebugView before publishing, then recheck tracking after consent, plugin, template, domain, or hosting changes.
- Protect data quality by respecting consent, avoiding personally identifiable information, configuring cross-domain journeys, and comparing GA4 lead events with real CRM or inbox records.
Start With Actions That Connect to Revenue
Small businesses don’t need to track every mouse movement. I use Google Tag Manager for event tracking focused on user interactions that show genuine interest. Those actions should connect to leads, appointments, sales, or useful follow-up.

Track contact actions before vanity metrics
For a local contractor, a tap on the phone number can matter more than 1,000 page views. A law office may care most about consultation requests. A salon may focus on completed booking actions.
I usually prioritize:
- Phone link clicks that start calls on mobile devices.
- Confirmed form submissions.
- Quote requests and appointment bookings.
- Email address clicks.
- Directions requests or key location-page actions.
- File downloads, such as a brochure, pricing guide, or intake form.
A button click alone doesn’t prove that a visitor became a lead. Enhanced measurement may collect basic interactions automatically, but important lead actions still need deliberate validation. A form can open, fail validation, or display a message while the email never reaches the office. Track a confirmed submission or thank-you page whenever the form platform supports it. In Google Analytics 4, mark meaningful outcomes as key events.
Match events to each page’s job
Every important page should have one clear next step. A repair page may drive calls. A service overview may drive quote requests. An FAQ page may guide visitors toward a booking page.
When I review a site, I ask whether an event answers a business question. Scroll depth can show engagement, but it matters more alongside a lead action. “Did visitors who arrived on this service page request an estimate?” is usually more useful than a standalone engagement measure.
For a practical foundation, see this GA4 setup for local service businesses, including lead actions that fit common service websites.
How Google Tag Manager and GA4 events work together
Google Tag Manager handles deployment, triggers, and tag configuration. Google Analytics 4 receives and reports the data, keeping event tracking easier to audit.
GTM deploys, GA4 records
A Google tag or GA4 Event tag can send an event to the correct GA4 property and measurement stream. Use preview and debug mode to verify the setup before publishing.
For example, GTM can detect a click on a “Call Now” link. A GA4 Event tag can then send an event named phone_click to the correct Analytics property.
Google Analytics 4 stores that event alongside details such as the page URL, device type, and traffic source. The event name configured in the GA4 Event tag in GTM becomes the name shown in Analytics reports.
Keep names short, consistent, and easy for your team to understand. Add custom parameters only when they provide useful context.
A direct Google tag implementation using gtag.js and a GTM implementation shouldn’t both send the same GA4 event. If gtag.js already sends it, disable the duplicate GTM tag.
Preview mode can reveal duplicate sends when both implementations are active.
Use GA4’s event groups wisely
GA4 recognizes four useful event groups:
| Event type | What it covers | Small-business example |
|---|---|---|
| Automatically collected | Basic activity collected after the Google tag loads | session_start |
| Enhanced web actions | Common web actions enabled in a GA4 web data stream | outbound click or file download |
| Recommended events | Google’s standard names for familiar business actions | generate_lead |
| Custom events | Actions unique to your website | phone_click |
Google’s enhanced measurement documentation lists options that can capture scrolls, outbound clicks, downloads, site search, form activity, and some video engagement without added website code.
For businesses that sell online, ecommerce tracking should use GA4’s relevant ecommerce event schema. Don’t improvise it from generic button clicks.
Use generate_lead for a confirmed inquiry when it fits the business context. After validation, mark lead events as key events in GA4, rather than using the outdated Universal Analytics conversion terminology.
A report is only as useful as its definition. Decide what qualifies as a lead before collecting data.
Set Up the Most Valuable Website Interactions
Once your main lead actions are clear, use Google Tag Manager in a consistent order: trigger, tag, test, then publish. That sequence keeps event tracking organized and limits confusion later.
Track phone links and important buttons
To measure link clicks, enable the built-in variables in Google Tag Manager. Create a Just Links trigger for URLs beginning with tel: or for a deliberate CSS class.
Document the trigger configuration before creating the tag. Then create a Google Analytics 4 Event tag and attach that trigger. Keep the tag configuration consistent, with a name such as phone_click.
Set its measurement ID and pass useful values only when they help reporting, such as link_url, page_location, or a non-personal label. Don’t deploy the same event through both the container and gtag.js.
Avoid sending a separate event for every minor button. Not all user interactions indicate a lead. Focus on CTA buttons that move someone closer to contacting or buying from you. That keeps event tracking focused on meaningful actions.
Measure completed forms, not hopeful clicks
Form tracking needs more care than a submit-button click. Track form submissions only after the site confirms success. Some WordPress plugins use AJAX, so the page never reloads. Others use a thank-you page, while booking vendors may show confirmation inside an iframe on another domain.
Use a thank-you-page view, an AJAX success callback, or a vendor booking confirmation as the success signal. For a form that doesn’t reload, ask a developer to push a Data Layer event after the callback. A custom event trigger should fire only after confirmed success, and a data layer variable may carry a non-sensitive form or service identifier when genuinely needed. Then use generate_lead when the completed form represents a real inquiry, but don’t add direct gtag.js tagging if a plugin already loads a Google tag.
Lead tags must respect the site’s consent settings. Never bypass a cookie banner to make a lead tag fire.
After any plugin update, hosting migration, or email change, use preview and debug mode to test more than the event. Confirm the action, tag firing, consent state, and message delivery to the right inbox, CRM, or appointment system. Keep the container in preview mode until the confirmed action has been checked, then publish. Resources such as Contact form analytics and troubleshooting can help prevent the costly gap between a reported conversion and a lost inquiry.
Use the Data Layer for Custom Events
Some actions are too complex for ordinary click or form triggers. The Data Layer gives your website a structured handoff to Google Tag Manager for reliable event tracking.
Send a clear event at the moment of success
A developer can place a Data Layer push in the site’s success callback. It can fire after a quote request completes, an appointment is confirmed, or a service selection succeeds. For example, dataLayer.push({event: 'quote_request_complete', service_type: 'roof-repair'}) should represent a confirmed outcome, not merely a button click.
In GTM, create a custom event trigger that listens for quote_request_complete. Use GTM’s event timeline to confirm the Data Layer push, then attach the trigger to a GA4 Event tag. Send generate_lead or quote_request_complete as the event name, and use custom events when site-specific outcomes don’t fit recommended event names.
I keep event names lowercase and use underscores. This simple naming pattern prevents reporting clutter when several people manage the site.
Add parameters only when they answer a question
Custom parameters can add useful, non-sensitive detail, such as service_type, form_name, or location. Expose service_type with a data layer variable. Expose location with another data layer variable, then map only the values the GA4 Event tag needs. Not every value in the layer needs to become a GA4 parameter.
Document the custom parameters you use, and register them as custom dimensions only when the business needs them in reports.
However, don’t send names, email addresses, phone numbers, free-text messages, or CRM identifiers to GA4. Neither gtag.js nor server-side tagging makes PII collection acceptable, and neither replaces consent requirements.
Google also sets collection limits for event data. Its event collection limits are a useful reference before adding broad sets of custom fields across a large website. Test this setup in preview and debug mode, then verify it again in preview mode before publishing.
Use Scroll Depth and Video Data With Context
Engagement events can improve content decisions, but they don’t replace lead tracking. I use event tracking to study these user interactions, learning where visitors lose interest or which resources hold attention.
Set thresholds on long service pages
Google Tag Manager’s trigger can fire at chosen points, such as 50%, 75%, and 90%. On a long service page, these points can show whether visitors reach the pricing explanation, project examples, or contact section near the bottom.
Use a small number of thresholds. Too many scroll events create noisy reports. Scroll depth is directional, not proof that someone read every word. Visitors may move quickly through a page or leave a browser tab open. Neither a 90% scroll nor a video completion should automatically become a key event.
The stronger signal comes from combining that threshold with another action. A visitor who reaches 75% of a detailed service page and then taps the phone number has shown more intent than either event alone.
Track videos when they support a decision
Video engagement can show whether a video helps visitors understand a service or product before taking action. Enhanced measurement may cover qualifying interactions with embedded YouTube videos, depending on the setup.
Track video engagement through starts, progress points, and completions only if the video is central to the page. Custom video implementations may need a site-side event payload or a vendor-supported event.
Review video engagement alongside the next user action to see whether the video supports a decision. If few visitors watch, the data may show that the video sits too low on the page or fails to explain the next step.
Use preview and debug mode to verify scroll thresholds and video events, then confirm the same interactions in preview mode before publishing.
For broader reporting, GA4 lead tracking guidance offers useful context for connecting website actions to qualified opportunities rather than treating every interaction as equal.
Test Events Before You Publish a Container
An event tag that looks correct in Google Tag Manager can still fail on the live site. Consent issues, an incorrect ID, duplicate tags, caching, or browser restrictions can interrupt event tracking. Testing belongs in the setup process, not at the end.

Check the event path in Preview mode
Open preview and debug mode in Google Tag Manager, connect it to the actual page, and complete the action yourself. Use preview mode to confirm the connection, then use preview and debug mode to inspect the event timeline. In preview mode, the expected event should appear in the left-side timeline.
Next, inspect the trigger configuration, tag status, firing order, event parameters, and data layer variable values. Check whether the intended GA4 tag fired, which trigger activated it, and whether unwanted tags fired too. Test on the actual page template where visitors take action, not only on the homepage.
For form or booking actions, verify the custom event trigger uses the expected event name and values. If the site uses video, check video engagement against the intended interaction.
For form submissions, make a real but controlled test inquiry. Test a mobile phone click on the mobile version. For booking widgets, complete the full confirmation path.
Confirm the data in GA4 DebugView
Google Analytics 4’s DebugView report confirms receipt, while GTM Preview confirms trigger behavior. Review the received GA4 events for expected names and parameters. Google’s DebugView guide explains how it displays incoming events and user properties in real time.
When DebugView stays empty, I check these issues first:
- The tag sends data to the wrong measurement ID.
- The container remains unpublished after testing.
- A cache or CDN still loads an older container version.
- A cookie banner blocks Analytics until consent is granted.
- Consent mode was tested in only one state. Test both denied and granted states using the site’s lawful consent configuration. Never bypass consent during testing.
- An ad blocker or browser privacy setting stops the request.
- A plugin and GTM both install Google tags, causing duplicates or conflicts.
- A direct gtag.js implementation sends data to another property, creating a duplicate.
Test in a clean browser session and apply the site’s lawful consent configuration in both states. Publish only after the intended event appears once with the expected parameters.
Protect Data Quality Across Domains and Updates
A visitor may start on your site and finish in a booking platform, payment system, or client portal. Without cross-domain tracking, GA4 can treat that transition as a new visit and misstate the original traffic source.
Keep related domains in one customer journey
If a booking, payment, or client portal uses another domain, configure it in the Google tag’s cross-domain settings. Test the journey from a campaign landing page through the final confirmation. The URL should carry the needed linker information between approved domains, preserving the user’s journey and campaign attribution.
Third-party iframes can create harder cases. When a vendor controls the booking experience, ask whether it supports GA4 through Google Tag Manager, a confirmation redirect, or a Data Layer signal. I don’t assume the parent site can track an iframe because inconsistent signals produce misleading lead totals.
A data layer variable can carry a small set of non-sensitive values across the journey. Server-side tagging may help organizations with a clear measurement, performance, or governance reason. It isn’t a consent bypass, and it doesn’t permit personally identifiable information in GA4.
If the site also uses gtag.js directly, coordinate it with that setup rather than installing redundant tags.
Review tracking after every major change
Website redesigns, theme changes, form-plugin updates, cookie-banner adjustments, and new service pages can all affect event tracking. Keep a short record of event names, triggers, tags, and what each event means.
After a template or embed change, review secondary signals such as video engagement. Use preview and debug mode before publishing, then repeat a short verification in preview mode after updates or consent changes.
I also compare Google Analytics 4 totals with real CRM or inbox records each month. If the platform reports 25 lead events but the office received eight confirmed inquiries, investigate before making marketing decisions. Common questions about booking domains, consent, duplicate tags, and lead-count discrepancies should guide that review.
For help reviewing a site’s conversion path, analytics setup, and search performance, Contact Us for a free consultation.
Frequently Asked Questions
What events should a small business track in Google Tag Manager?
Prioritize interactions that show genuine interest, including confirmed form submissions, phone link clicks, quote requests, bookings, email clicks, and directions requests. Engagement events such as scroll depth or video completion can provide context, but they should not replace lead tracking.
Should I track a form submit button click as a lead?
No. A button click does not prove that the form was completed or that the inquiry was delivered. Use a thank-you page, AJAX success callback, booking confirmation, or another reliable success signal whenever possible.
What is the difference between Google Tag Manager and GA4 events?
Google Tag Manager handles the triggers and tags that detect website interactions and send data. Google Analytics 4 receives, stores, and reports those events, while GTM Preview and GA4 DebugView help verify the setup.
Can I use GTM and gtag.js for the same event?
You can use either implementation, but both should not send the same event. If gtag.js already sends an event, disable the duplicate GTM tag to prevent inflated or conflicting data.
How can I test Google Tag Manager events before publishing?
Open GTM Preview and Debug mode, complete the real user action, and inspect the trigger, tag status, event parameters, consent state, and Data Layer values. Then confirm that the event appears once with the expected parameters in GA4 DebugView before publishing the container.
Final Thoughts
Google Tag Manager helps send meaningful event tracking data to Google Analytics 4. The business definition determines whether an interaction becomes a lead. Either deployment method, including gtag.js, works when documented and not duplicated.
I treat every event as a business definition, not a technical checkbox. I use preview and debug mode after forms, booking tools, consent changes, and site updates. Preview mode helps confirm accurate tracking and clarify what my website leads do before contacting me.

