If you manage analytics for several clients, you've probably hit this problem: adding or modifying GA4 tracking forces you to modify the site code. Ask the developer, wait for their availability, deploy, test: one week for a tag.
Google Tag Manager solves this. A single code snippet on the site, and from then on you manage all the tracking from an interface without touching code. Here's how to set it up with GA4.
What Google Tag Manager does
Google Tag Manager (GTM) is a tag management system: a container you install once on a site that then lets you deploy scripts and tracking events without touching the source code.
Without GTM: for every new tracking, you have to modify the site's HTML/JS, test, deploy.
With GTM: you create a tag in the GTM interface, you publish, and it's deployed in 30 seconds, without touching the code.
For a freelancer managing several clients, GTM is essential for three reasons:
- Full autonomy on tracking, without depending on the developer
- Tests and validation before deployment (preview mode)
- All tracking centralised in one place per client
Step 1: create a GTM account and a container
- Go to tagmanager.google.com
- Click "Create account"
- Account name: the client or agency name
- Container name: the site URL (e.g.
mysite.com) - Target platform: Web
GTM gives you two code snippets to paste on the site:
- A
<script>snippet in<head> - A
<noscript>snippet at the start of<body>
Do this once per site. Then everything else is handled in the interface.
Step 2: connect GA4 to GTM
With GTM, you don't install the GA4 snippet directly on the site: GTM loads it.
Create the GA4 tag
- In GTM โ Tags โ New
- Tag type: Google Analytics: GA4 Event
- Tag configuration:
- Select "Google Analytics configuration tag"
- Enter your GA4 Measurement ID (format
G-XXXXXXXXXX: found in GA4 โ Admin โ Data streams)
- Trigger: select "All Pages"
- Name the tag:
GA4 - Configuration - Save
This tag is the equivalent of the standard GA4 snippet: it fires on every page and sends data to GA4.
Step 3: track a custom event
The main advantage of GTM: track clicks, forms, or any action without writing a line of code.
Example: track clicks on a "Request a quote" button
Create the trigger
- GTM โ Triggers โ New
- Type: Click: All Elements
- Trigger conditions: Some clicks
- Variable:
Click ID: Operator:equals: Value: the button ID (e.g.btn-quote)
If the button has no ID, use Click Text or Click Classes depending on what's available in your GTM preview.
Create the tag
- GTM โ Tags โ New
- Type: Google Analytics: GA4 Event
- Configuration:
- Configuration tag: your GA4 tag created in step 2
- Event name:
quote_click
- Trigger: the trigger created above
- Name:
GA4 - Quote Click - Save
Test before publishing
- Click "Preview" in GTM
- Enter the site URL
- GTM opens the site in debug mode: you see in real time which triggers fire
- Click on the "Request a quote" button on the site
- In the GTM console:
quote_clickshould appear
Step 4: publish
Once the tag is tested and validated:
- GTM โ Submit
- Version name: a short description (e.g. "Add quote button tracking")
- Publish
The tag is now active on the site. No developer-side deployment required.
The most useful GA4 tags to configure with GTM
Scroll tracking
GA4 automatically tracks scroll at 90% of the page. GTM lets you add intermediate measurement points (25%, 50%, 75%).
Useful for: knowing how far visitors read a long page: landing page, blog article, service page.
Phone-number clicks
Trigger: Click: Just Links: Click URL contains "tel:"
GA4 event: phone_click
This is often the most missed conversion for showcase sites. tel: clicks sometimes represent 30 to 50% of leads: but they are never tracked by default.
Form submissions
If the site has no confirmation page after the form, you can't create the event directly in GA4. GTM lets you detect the form submission without a redirect page.
Trigger: Form submission
GA4 event: contact_form
File downloads
Trigger: Click: Just Links: Click URL contains ".pdf"
GA4 event: pdf_download
GTM vs native GA4 tracking: when to use what
| Situation | Recommendation |
|---|---|
| Modern Next.js / React site with code access | Native GA4 or via gtag.js in code |
| WordPress, Shopify, Squarespace site | GTM: easier to maintain |
| Advanced tracking needed without a developer | GTM mandatory |
| Several clients with varied sites | GTM on all: consistent workflow |
| Need to test quickly without deployment | GTM |
What you report to your client
Once GTM is configured with GA4, you can present a report with:
- Real conversions (forms, calls, clicks)
- Detailed user behaviour (scroll, CTA clicks)
- Channels that generate conversions, not just traffic
That's the difference between a report saying "1,200 visitors" and a report saying "1,200 visitors, of whom 47 requested a quote from Google".
Going further
GTM is an excellent starting point, but it only covers part of the tracking. For more:
- Install GA4 on Shopify: GTM is essential for e-commerce tracking on Shopify.
- GA4 e-commerce: tracking Shopify and WooCommerce: GTM is essential for e-commerce tracking on WooCommerce. The step-by-step guide.
- GA4 and GDPR cookies consent: how to wire GTM with Consent Mode v2.
If you generate these reports for multiple clients each month, NarratIQ directly connects your GA4 properties and presents the conversions in the PDF report, without you having to navigate GTM for each client.