Table of contents
Quick summary
- The GTM container lives in your own Google account, not ours
- Every trigger is tested in Preview mode before the container ships
- Duplicate pixels come out first so conversions are not counted twice
- Google Tag Manager is free, you pay only for the setup work
- Included in every website package, from IDR 2,000,000 per year
What installing Google Tag Manager actually involves
Google Tag Manager is not a tracking tool, it is a dispatcher. One container decides which script runs, on which event, carrying which value. Three parts inside it get treated as one: the tag defines what is sent, the trigger defines when, the variable supplies the value. Until all three exist, a container sitting on your site sends nothing.
Which is why "GTM is installed" tells you almost nothing. The first thing we open is the site code, because a site that has passed through several hands usually carries a duplicate pixel, one in the theme and one in the container. The hardcoded copy comes out first, then both GTM snippets go where they belong, inside the head and right after the body opens.
- An audit of existing scripts, including pixels installed twice
- Both GTM snippets, in the head and at the top of the body
- Version notes recording what changed, when, and why
The dataLayer, the part most setups skip
A container can only react to what the page tells it. If the page says nothing, GTM is left watching clicks and matching CSS classes or button labels. That works today and breaks at the next redesign, when a class is renamed and conversions stop recording with no error anywhere.
The durable route is the dataLayer: the site pushes a named event and the container waits for that name instead of guessing from appearance. A form pushes its event once the server has accepted the data, not on the button press, so failed submissions never count as results. A purchase carries a real order value and currency, not a zero hardcoded in the tag.
- form_submit fires after the server confirms, not on the button press
- whatsapp_click carries the page the conversation started from
- view_item and add_to_cart carry real product ids and prices
- purchase carries order value, currency, and the order number
The mistakes we find most often in client containers
Double counting is the number one finding. The same pixel sits in the theme and in the container, so one purchase registers twice. The damage is not just a wrong report: cost per result looks half of what it really is, and ad budget gets raised on a number that never existed.
Second is the trigger that is too broad, a purchase tag set to All Pages, counting every visit as a purchase. The opposite failure costs the same: a trigger waiting on a thank you page URL that vanished when the checkout was rebuilt.
- Changes saved in the workspace but the container never published
- The Google Analytics 4 config tag loaded twice, which splits sessions
- Click triggers leaning on CSS classes that later get renamed
- No consent handling, so tags fire before the visitor chooses
How to verify the setup instead of guessing
Preview mode is the first tool. It names which tags fired on an event, which did not, and which trigger condition failed, so the question shifts from why is it broken to condition two never matched. Walk the buyer journey on a phone as well, because some triggers only fail there.
The second tool is a source of truth outside GTM: DebugView and the Realtime report in Google Analytics 4, Events Manager on the Meta and TikTok side, and the browser Network tab. One event should produce one request per platform, and two requests for one click means double counting.
The last check uses no tool at all. Reconcile the first week by hand: count the WhatsApp conversations and form entries manually, then compare them with the recorded conversions. A gap that is large and stays means something still fires wrong.
Consent, page speed, and the server side
Tags firing before the visitor has chosen anything are easy to create and easy to forget, because the site still looks normal. The handling belongs in the container, so what waits is not the banner on screen but the data being sent. On speed, every tag runs in the visitor browser, and older containers fill up with tags from campaigns that ended.
The real limit of GTM is what cannot be fixed inside a browser. Ad blockers and privacy settings stop some third party scripts before they run, so browser only tracking reports less than reality. Server side events close part of that gap, sharing one event id so a purchase is not counted twice.
Who owns the container, and what you get
The container is created in your own Google account, then our team is granted access. The principle matches the domain, which is bought separately and stays in your name: if you change vendors one day, the configuration and its version history stay with you.
The setup comes with every website package, from a Landing Page at IDR 2,000,000 per year to E-Commerce at IDR 12,000,000 per year, plus hosting, SSL, the server, a WhatsApp group, and unlimited revisions for a year. What you receive at the end is a list of the events being measured with the dataLayer name each one uses, the version notes left inside the container, and the Preview mode result for every trigger, so whoever maintains the site next can pick the tracking up without rebuilding it.
Tags inside the code compared with tags managed in a GTM container
| What is compared | Pasted into the site code | Managed in a GTM container |
|---|---|---|
| Adding one new tag | A code change and a redeploy | Built in the container, then published |
| Testing before it goes live | None, you find out after launch | Preview mode, before publishing |
| Rolling back | Another deploy | Pick the older version, one click |
| Risk of double counting | High, pixels duplicate easily | Low, every tag in one place |
| Who can do the work | A developer, every time | The marketing team, with guidance |
Frequently asked questions
What is Google Tag Manager and what does it do?
Google Tag Manager is a single container that holds and controls every tracking script on a site, from Google Analytics 4 to Meta Pixel and TikTok Pixel. Its job is deciding which script fires on which event, so new tags can be added without touching the site code.
Does Google Tag Manager replace Google Analytics?
Google Tag Manager does not replace Google Analytics, the two do different jobs. GTM delivers events to their destinations, while Google Analytics 4 receives them and builds the reports. GTM also controls when the Analytics tag fires.
How much does a Google Tag Manager setup cost?
Google Tag Manager is free from Google, so what you pay for is the setup work. That work comes with all our website packages, from IDR 2,000,000 per year for a Landing Page and IDR 3,000,000 per year for a Company Profile website, including hosting, SSL, and the server.
Why does the ad platform report more conversions than the enquiries we receive?
The most common cause is a pixel installed twice, once in the site code and once in the container, so one event is sent twice. The second cause is a trigger that is too broad. To check, count the requests in the browser Network tab: one event should produce one request per platform.
Will a Google Tag Manager container slow down my website?
The container itself is light, what adds weight is the number of tags inside it, because every tag runs in the visitor browser. Containers that grow for years fill up with tags from campaigns that ended, and an audit that pulls the dead ones out resolves most speed complaints.
Who owns the Google Tag Manager account once the work is finished?
The container is created in your own Google account and our team is only granted access, the same way the domain is bought separately and stays in your name. If you move to another vendor, the configuration and version history remain in your account.




