GA4 & GTM · ANALYTICS, TRACKING & MEASUREMENT
GA4 & GTM Setup — Analytics Tracking You Can Actually Trust
GA4 property setup · Google Tag Manager · Event & conversion tracking · Looker Studio reporting
Most analytics problems are not reporting problems. They are collection problems. The numbers were never gathered properly in the first place, so every decision built on them starts from the wrong place.
I set up Google Analytics 4 and Google Tag Manager so the data matches what actually happens on your site. Every form submission, every purchase, every call click — defined once, fired once, and named in a way you will still understand in six months.
That means a tidy Tag Manager container, a data layer that carries real values instead of guesses, key events that map to the things you genuinely care about, and consent handling that does not quietly delete half your traffic.
If your GA4 was migrated in a hurry, or handed over by someone else with no documentation, this is the work that makes it usable again. I will tell you what is wrong before I change anything.
GET YOUR FREE GA4 & GTM AUDIT
GA4 property and data stream check
Tag Manager container review
Event and key event mapping
Data layer and ecommerce accuracy
Consent mode and data retention
I will look at your current setup and send back what is broken, what is double counting and what to fix first. No obligation.
5+
YEARS EXPERIENCE
350+
PROJECTS COMPLETED
340+
HAPPY CLIENTS
98%+
CLIENT SATISFACTION
THE BASICS
What GA4 and Google Tag Manager Actually Do
These two tools get talked about as if they were one thing. They are not. One collects and reports; the other decides what gets sent and when. Knowing which is which is the difference between fixing a problem in ten minutes and rebuilding a container for a fortnight.
Google Analytics 4
GA4 is the place the data lands. It is built around events rather than pages, so almost everything is a named event with parameters attached. That model is more flexible than the old one, but it is also less forgiving — if nobody defines the events, GA4 quietly reports very little of use.
Google Tag Manager
Tag Manager sits between your site and everything you want to send data to. You put one container on the site, then manage tags, triggers and variables inside it without touching the theme again. It is also where most of the mess accumulates, because adding a tag is easy and removing one feels risky.
Events and key events
An event is anything you record: a form sent, a video started, a product added to a basket. A key event is an event you have marked as one that matters to the business. Marking the wrong things, or marking everything, is the fastest way to make a report meaningless.
The data layer
The data layer is a small piece of structured information your site hands to Tag Manager — order value, currency, product IDs, logged-in state, form name. Without it, tracking has to guess from button text and URLs, and guesses break the moment someone edits a page.
WHAT I DO
GA4 and Tag Manager Work I Take On
Not every site needs all of this. Most need four or five of them properly, rather than all ten done loosely. I will tell you which after looking at what you already have.
GA4 property setup and configuration
A GA4 property configured on purpose, not on defaults.
A property takes twenty minutes to create and much longer to get right. I turn off the settings that inflate your numbers and exclude internal traffic before it pollutes a report.
- Property, timezone and currency set correctly
- Data stream and enhanced measurement reviewed option by option
- Internal IP and developer traffic filters
- Data retention extended to the maximum
- Unwanted referrals and cross-domain rules
Google Tag Manager container build
One container, named consistently, that another person could pick up.
I build the container with a naming convention, a folder structure and a workspace discipline, so tags are findable a year later. If you already have a container, I audit what is in it first and remove what is firing twice or firing for nothing.
- Container installed correctly in head and body
- Naming convention for tags, triggers and variables
- Folders by platform and purpose
- Built-in and custom variables enabled as needed
- Version notes written on every publish
Event tracking design
Events that describe your business, not the theme’s button classes.
Before anything is built, I write down what should be measured and what each event will be called. That measurement plan is the deliverable people usually skip, and skipping it is why containers turn into a hundred near-identical tags.
- Measurement plan listing every event and parameter
- Form, click, scroll and video tracking
- Outbound link, file download and call click tracking
- Consistent snake_case event naming
- Custom dimensions registered in GA4
Key events and conversion tracking
The handful of actions that matter, counted once each.
GA4 calls them key events; Google Ads calls them conversions. I mark only the actions that represent real business value, make sure each fires on genuine completion rather than on a button press, and check the counting method suits the action.
- Key events chosen with you, not guessed
- Fired on confirmed success, not on click
- Counting method set per event
- Google Ads linked and conversions imported where wanted
- Duplicate and self-triggering conversions removed
Data layer implementation
Real values pushed from the site, so tracking stops guessing.
I specify what the site should push and when, in plain terms a developer can implement without ambiguity. Where there is no developer, I use what the platform already exposes and am honest about what that does and does not cover.
- Written data layer specification
- Order value, currency and transaction ID
- Form name, user state and page type
- Developer handover notes and test cases
- Verification that pushes fire before the tag reads them
Ecommerce tracking
Revenue in GA4 that you can reconcile against your shop.
Ecommerce is the part that breaks most often and matters most. I implement the full purchase journey, then compare GA4 against the platform’s own order list until the gap is explainable rather than mysterious.
- view_item, add_to_cart, begin_checkout and purchase
- Item-level data with names, IDs and categories
- Refunds handled rather than ignored
- Revenue reconciled against your order records
- Google Merchant Center alignment where relevant
Consent mode and privacy handling
A consent setup that respects the choice and still reports usefully.
If your banner blocks tags outright, your data has holes you cannot see. I wire consent mode so tag behaviour follows the visitor’s choice properly, and set the container so consent state is checked before anything fires. I am not a lawyer and will say so — the legal position is yours or your solicitor’s call.
- Consent mode signals wired through the container
- Default and updated consent states
- Tags gated on the right consent types
- IP and personal data checks on outgoing hits
- Data retention and deletion settings reviewed
Migrating and cleaning an existing setup
An inherited mess turned back into something you can trust.
Plenty of properties were set up under pressure and never revisited. I go through the container tag by tag, find the hard-coded scripts nobody remembers adding, and rebuild the parts that are wrong instead of layering another fix on top.
- Full audit of the existing container and property
- Duplicate and orphaned tags removed
- Hard-coded scripts moved into Tag Manager
- Event names normalised across the site
- A written record of what changed and why
Looker Studio reporting
One report you will actually open, instead of eleven you will not.
GA4’s own interface is not built for a weekly glance. I build a Looker Studio report that answers the questions you actually ask, pulling GA4 and Search Console together, with the definitions written on the page so nobody has to guess what a number means.
- A single dashboard scoped to your questions
- GA4 and Google Search Console blended
- Channel, landing page and key event views
- Date comparison built in
- Metric definitions documented on the report
Debugging, QA and documentation
Proof that every tag fires once, in the right place, with the right values.
Nothing goes live on my say-so alone. I test in preview mode, watch the real-time and DebugView streams, and repeat on mobile, because that is where tracking most often quietly fails. Then I write it down so the setup survives me.
- Preview and debug testing for every tag
- DebugView and real-time verification
- Mobile and slow-connection checks
- A tracking document listing every event and trigger
- Handover walkthrough so your team can maintain it
WHY IT FAILS
Why Most Analytics Setups Cannot Be Trusted
These are the problems I find most often. None of them announce themselves. The reports keep loading, the graphs keep moving, and the numbers are wrong the whole time.
GA4 is installed twice
Once through a plugin, once through Tag Manager, sometimes a third time in the theme header. Every page view and event is counted more than once, bounce rate collapses to something flattering, and nothing in the interface tells you. It is the first thing I check on any inherited property.
Every form is the same event
A newsletter sign-up, a quote request and a support question all arrive as generic_submit. You can see that forms are being sent, but not which ones, so you cannot tell whether the page you rewrote made any difference. Naming events properly at the start costs nothing later.
Conversions fire on a click
The tag fires when someone presses Send, not when the form is accepted. Failed validation, spam bots and double-taps all count. The conversion number rises, the inbox does not, and the gap between the two slowly destroys everyone’s faith in the data.
There is no data layer
Instead, triggers read button text or match URLs with a regular expression. It works until someone changes the wording of a button or adds a query string, and then it silently stops. Nobody notices for weeks, because a tag that stops firing produces no error.
Your own traffic is in the data
Staff, agencies, developers and staging environments all reporting into the same property. On a low-traffic site this is not a rounding error — it can be most of the sessions on the pages your team edits most. Filters take minutes to set and are almost always missing.
Nobody wrote anything down
The person who built it has gone. There are forty tags, no naming convention and no version notes, so nobody dares delete anything. The container grows, the site slows, and every new request gets added as yet another tag on top.
WHO IT IS FOR
When GA4 and GTM Work Is Worth Doing
If one of these describes your situation, tracking is probably the thing to fix before you spend more on anything else.
GA4 was migrated in a rush
Nobody trusts the numbers
Leads in GA4 do not match the inbox
Ecommerce revenue looks wrong
You are about to spend on ads
You inherited someone else's container
A site redesign is coming
You added a consent banner
Reporting takes hours every month
You have no measurement plan
Multiple domains or subdomains
SEO work needs proof it is working
And where it will not help: if your site gets a handful of visits a week, better tracking will not give you anything to act on — you need more traffic first, and I would rather say that than sell you a container build. The same goes for a site about to be replaced entirely. Wait for the new one, then track it properly from day one instead of paying twice.
MY APPROACH
How I Work Through a Tracking Project
Same order every time. Understand the business first, agree what to measure second, build third. Building before the first two steps is how containers end up with forty tags nobody can explain.
01
Understand what matters to you
We talk about the business before we talk about tags. What counts as a good lead, where the money comes from, which questions you ask every month and cannot currently answer. Everything after this step is shaped by that conversation, so it is worth an honest hour.
02
Audit what already exists
I go through the GA4 property, the Tag Manager container and the page source. I look for duplicate installs, hard-coded scripts, tags firing on every page for no reason, and settings that were never changed from default. You get the findings in writing, whether or not you carry on with me.
03
Write the measurement plan
A plain document listing every event, its name, its parameters, where it fires and why it exists. You approve it before anything is built. This is the step most setups skip, and it is the one that keeps the container sane for years afterwards.
04
Specify the data layer
Where the site needs to hand over real values, I write the specification your developer implements: what to push, when, and in what shape. If there is no developer, I work with what the platform already provides and tell you clearly which parts will be less reliable as a result.
05
Build it in Tag Manager
Tags, triggers and variables built to the plan, in a workspace, with folders and consistent names. Consent gating is set up at the same time rather than bolted on afterwards. Nothing is published until it has been tested.
06
Test, debug and publish
Preview mode, DebugView, real-time reports, then the same again on a phone. I check each event fires once, with the values it should carry, and that nothing fires where it should not. Only then does the container version go live, with notes attached.
07
Report, document and hand over
A Looker Studio report built around your questions, a written record of the whole setup, and a walkthrough so your team can maintain it. Then a check a few weeks later, because the first real month of data always raises something worth adjusting.
WHY ME
How Working With Me Is Different
Nothing here is a claim about results. It is simply how the work is arranged, and it is worth knowing before you choose anyone.
You deal with me directly
The person who scopes the work is the person who builds it and the person who explains it afterwards. Nothing is relayed through an account manager, so nothing about your site gets lost in translation on the way to whoever is actually touching the container.
Decisions come from your own data
What gets tracked is decided by looking at your property, your container and your site, not by applying a template built for someone else’s business. If I do not know something yet, I will say so rather than fill the gap with a guess.
A prioritised plan, not a list
Every audit finds more than anyone can fix at once. You get the findings in order of what will make the biggest difference to the reliability of your data, so the first week of work is the week that matters most.
You keep everything
The GA4 property, the Tag Manager container, the Looker Studio report and the documentation all sit in your own accounts under your own ownership. If we stop working together, nothing needs to be handed back, because it was never mine.
Plain explanations
Tracking has more jargon than it needs. I will explain what a trigger is doing and why a number changed in language you can repeat to someone else. If a report needs me present to make sense, it is not a good report.
I will tell you when not to bother
Some sites do not need a rebuild, only two fixes and a filter. Some need more traffic before better measurement is worth anything at all. Saying that costs me work in the short term and saves us both a pointless project.
RESULTS
What Changes When Tracking Is Done Properly
I will not put a percentage on results before I have seen your site. Anyone who does is quoting someone else’s project. What I can describe is the kind of change this work produces, in plain terms.
- The numbers in GA4 match what actually happened on the site
- Leads recorded as key events line up with the enquiries you receive
- Ecommerce revenue can be reconciled against your order records
- Each action is counted once, so nothing is inflated
- Your own team’s visits stop appearing in the reports
- Consent choices are respected without silently losing everything
- You can see which channels and pages bring the enquiries
- Ad spend can be judged against real conversions rather than clicks
- Monthly reporting takes minutes instead of an afternoon
- SEO and content work can finally be shown to have done something
- New tracking requests take hours, not a rebuild
- Anyone new can understand the setup from the documentation
How much each one moves depends on your starting point. A site with a duplicate GA4 install and no conversion tracking will feel the difference immediately, because almost every number changes. A site that was already carefully set up may only gain two or three missing events and a better report. I would rather find the second situation and tell you than charge you for the first one anyway. What this work reliably gives you is the ability to trust a number before you spend money on the strength of it — and that is the point of all of it.
TOOLING
Tools I Use for Analytics and Tracking
Tools do not fix tracking; they only show you what is happening. These are the ones I actually work in, and the accounts stay yours.
Google Analytics 4
Google Tag Manager
Looker Studio
Google Search Console
Bing Webmaster Tools
Microsoft Clarity
Hotjar
Google Ads
Google Merchant Center
Screaming Frog
FAQ
Questions I Get Asked About GA4 and GTM
You can install GA4 on its own and it will record page views. The moment you want to track forms, clicks or purchases, Tag Manager saves you going back to a developer every time. For a small site with one contact form, direct installation is sometimes genuinely enough, and I will say so.
It depends on how much is being tracked and how much needs developer help. A straightforward lead-generation site is a different job from a shop with a custom checkout. I will give you a scope after the audit rather than a number before it.
Tracking does not create results; it shows you where results come from. You will have trustworthy data within days of the build, but the decisions you make from it take time to pay off, and how long depends on your market and budget. Anyone giving you an exact date is guessing.
Usually not much — most of the work happens inside Tag Manager and GA4. Where a proper data layer is needed, typically for ecommerce values, someone has to add code to the site, and I write the specification for whoever does that.
There is almost always a gap, caused by consent choices, ad blockers, phone orders and tracking that fires before an order is confirmed. A small gap is normal. A large or erratic one is a bug, and working out which you have is one of the first things I check.
Yes. The GA4 property, the Tag Manager container, the Looker Studio report and the documentation all live in your accounts, and I work as a user on them. If we stop working together you lose nothing and nothing needs transferring back.
Often, yes, and it is a large part of this work. I audit what exists, keep what is sound and rebuild what is not. Occasionally a container is so tangled that starting again is cheaper, and if so I will show you why rather than just assert it.
You will lose some, and that is correct when someone declines. Consent mode lets Google model part of the gap rather than simply dropping it, which is very different from a banner that blocks every tag outright. I set the technical side up; whether your legal position is right is a question for your solicitor, not me.
RELATED SERVICES
SEO Consulting
Strategy and direction when you need someone to work out what to do next and in what order, rather than to build one specific thing.
Technical SEO
Crawling, indexing, site speed and site structure — the work that decides whether search engines can use your pages at all.
Ecommerce SEO
Category and product page work for online shops, where accurate purchase tracking and search visibility have to be sorted together.
Google Ads / PPC
Paid search work, which depends completely on conversion tracking being right before any budget decision can be made sensibly.
Find Out What Your Analytics Is Actually Telling You
Send me your site and I will look at the GA4 property and the Tag Manager container, then tell you what is double counting, what is missing and what I would fix first. If the answer is that your setup is fine and you need something else entirely, I will tell you that too.