A client says: “I need Google Analytics 4, but I can’t touch the site code – no developer and the CMS is locked”. Google Tag Manager solves this in minutes. We do it every day for dozens of projects. Here’s how.
Why implement GA4 without touching code
It happens more often than you’d think: legacy templates, clients who lost server access, projects with locked front‑end stacks. Instead of giving up, use Google Tag Manager as a bridge. With GTM you can send every meaningful interaction — page views, scrolls, clicks, form submissions — to GA4 without ever editing a single HTML file.
Prerequisites: what you need before starting
Before diving in, make sure you have:
- A Google Tag Manager account with a container created for the client’s domain.
- A GA4 account with an active data stream and the Measurement ID (format
G-XXXXXXXXXX). - The GTM container installed on the site (the two snippets in
<head>and right after<body>). If it’s not there yet, you install it once and never touch it again.
If the container isn’t installed, you must do it — it’s the only moment you “touch code”. Every other step is done purely in the GTM interface.
The GA4 configuration tag
This tag is the heart of tracking. It tells GTM: “send all collected data to this GA4 account”.
How to create it
- In GTM, go to Tags → New.
- Choose Google Analytics: GA4 Configuration (not “Universal Analytics”).
- Enter the Measurement ID of your GA4 stream.
- Enable optional fields only if needed (e.g.,
send_page_view: truefor automatic initial page view). - Set the trigger to Consent Initialization – All Pages (recommended) or Page View.
- Save with a clear name, like GA4 – Config – client-site.
Important: if you don’t have a cookie banner (CMP) managing consent, configure GA4 with send_page_view = false and manually fire a page_view event after consent is given. We handle this with a trigger on a Custom Event fired by the CMP.
Automatic events: what GTM can track without any extra code
GTM doesn’t track anything by default. But you can leverage its built‑in triggers to enable common events without writing code:
- Click – All Elements (then filter by class, ID, or text)
- Form Submission (when a user submits a standard HTML form)
- Element Visibility (for scroll depth, when a user sees a specific section)
- Scroll Depth (built‑in trigger for percentages: 25%, 50%, 75%, 100%)
- YouTube Video Engagement (for native embeds)
- File Download (automatic detection of extensions like .pdf, .zip, .doc)
Don’t activate everything at once. Pick only what the client’s business needs. A clothing store will track clicks on “Add to Cart” and scroll down to product details. A service company will prioritize form submissions.
Creating a custom event for a specific click
This is where it gets practical. Imagine the client wants to track clicks on the “Request a Quote” button. No code changes, just GTM.
Step 1: Create the trigger
- Go to Triggers → New.
- Choose Click – All Elements.
- Fire this trigger when… → Click is a link (or “All Clicks” if it’s not a link).
- Filter: Click Text contains “Request a Quote”. Alternatively use Click Element with a CSS selector (e.g.
button.btn-primary). - Name it Trigger – Click Request Quote.
Step 2: Create the GA4 event tag
- Go to Tags → New → GA4 Event.
- Configuration Tag: select the configuration tag you created earlier.
- Event Name:
click_request_quote(always lowercase and underscores). - Event Parameters (optional but useful): add
page: {{Page URL}}andbutton_text: {{Click Text}}. - Trigger: select the trigger you just created.
- Save.
Step 3: Test in preview mode
- Launch GTM Preview mode (the “Preview” button in the top right).
- Open the site, click the button.
- In the debug panel you should see the GA4 – click_request_quote tag fired with its parameters.
- Double‑check in GA4 → Admin → DebugView.
That’s it. No code, just GTM interface.
Verify that everything works
Never trust your eyes alone. We always use three verification layers:
- GTM Preview mode: check that the tag fires on the right trigger.
- Google Tag Assistant (Chrome extension): shows all requests to GA4 in real time.
- DebugView in GA4: inspect events and parameters in detail.
If everything is set correctly, data will appear in GA4 within seconds. Remember to turn off debug mode when you’re done, otherwise sessions will be tagged as test.
What you cannot do without touching code
Let’s be honest: not everything can be tracked with GTM alone. Complete e‑commerce events (add_to_cart, purchase with value and currency), user identification (user_id), and custom dimensions often require data pushed via dataLayer or the Measurement Protocol API. For those, you’ll need to touch code. But for 70% of a small business’s needs (interactions, scroll, form, clicks), GTM is all you need.
In summary — what to do now
- If you haven’t installed the GTM container yet, do it now (it’s the only exception).
- Create the GA4 configuration tag with your Measurement ID.
- Enable useful automatic events: scroll, clicks, forms.
- Identify the 2‑3 most important buttons or actions for the business and create a trigger + GA4 event tag for each.
- Test with Preview and DebugView, then publish.
- If you had GA4 installed manually (using gtag.js), remove it to prevent double counting.
With this workflow you write zero lines of code and have a professional tracking setup running in less than an hour. We do it for our clients every week.
For further GTM configuration details, check the official Google Tag Manager documentation.
Sponsored Protocol