• Analytics

Google Tag Manager: tag management without code editing

Setting up Google Tag Manager is the correct snippet in the template, moving the counters from the site code to the container and the data layer from which the tags take the order amount, not the button text. It is worth implementing a tag manager on the site for one thing: the marketer adds the next event without a release, and rolls back the erroneous publication in seconds. We start by describing what's already on the pages: 13 of the 33 sites we measured read the container ID, six don't have any counters, and one doesn't load the container via a line in its own snippet.
See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
What are we doing?
snippet, counter migration, data layer, cleanup of dead tags
after a free audit
Price
30
Guarantee

days after project sign-off

snippet, counter migration, data layer, cleanup of dead tags
What are we doing?
3-12
Term

working days; the clean project is closer to the lower limit

free of charge, 2-3 working days, the document remains with you
Checking the container
the identifier is read on 13 of 33 sites, measurement 07/31/2026
Containers in our selection
a dead counter next to a live one: the data seems to be there, but they count the wrong thing
The most expensive mistake
remote, workspace, publishing in versions with a description of changes
Format
30
Guarantee

calendar days for completed work

Process steps

Transparent stages with approval at every step

Total duration:3–12 days

  1. Description of the current state

    1-2 working days

    Let's see what HTML gives, what counters are in the site code, what is in the container and who has rights. The output document is: required, doubtful, dead.

  2. Measurement plan

    1 working day

    A list of events that are money for you, with options for each. First, we agree on what to consider as an application, then we make a tag. In the reverse order, a counter is obtained that counts the wrong thing.

  3. Site-side data layer

    0-4 working days

    We write technical tasks for the developer: what and in what format the site puts in the structure at each event. The stage is dropped if the data tier already exists, and stretched if the checkout is non-standard.

  4. Assembly in the workspace

    1-3 working days

    Tags, triggers, variables, names according to a single scheme. Transferring the counters from the site code is done in pairs: first, the tag in the container, then removing it from the template — otherwise, for a day or two, everything is counted twice.

  5. Review and publication

    1 working day

    Preview mode for each event, debug in GA4, check loading order with consent banner. We publish a version with a description of the changes so that there is room to roll back.

  6. Reconciliation in a month

    a few hours after 3-4 weeks

    We compare the number of orders in the report with the accounting system and explain the discrepancy: blockers, refusal of consent, returns. Without this step, "everything works" just means "nothing crashes".

Technologies & integrations

What we build on and what it connects to

Stack

  • Google Tag Manager - tags live separately from releases. Limit: It delivers the scripts rather than collecting the data itself.
  • The data layer is the source of values ​​for tags. The limit: fills his site, that is, a developer cannot be dispensed with.
  • Triggers and variables — trigger conditions. Boundary: A trigger on a button class lives until the first redesign.
  • Preview mode - check before publication. Limit: shows the trigger, not the correctness of the number.
  • Container versions - rollback in seconds. Boundary: Rollback does not return data for the time of the error.
  • GA4 is the default event receiver. Limit: shows a trend, you have to deal with the cash register with your hands.
  • Meta Pixel is the same for social media advertising. Limit: part of the events are cut by blockers.
  • The server container is a separate infrastructure. Limit: not everyone needs it, and we will tell you when it is superfluous.

Integrations

  • GA4
  • Google Ads
  • Meta Pixel
  • call tracking
  • chat widgets
  • consent banner
What's included

Complete list of work and what you get as a result

  • Snippet in the markup of all types of pages - main, category, card, checkout, thank you: the container is loaded everywhere, not where it was once placed.
  • The counters from the site code are moved to the container - then they can be turned off and changed without editing the templates.
  • The data layer for non-catchable events: amount, currency, item ID come from the backend.
  • Tags, triggers and variables for your events - purchase, order, call, checkout step, price request.
  • Dead tags of systems that are not used are turned off with a record: exactly what was turned off, when and at whose request.
  • A unified naming scheme: the system, event type and page are visible from the name, so the next person is not afraid to touch anything.
  • Access rights revised: a named list of people can publish, the rest work in the workspace.
  • Versioning with change descriptions - Reverting to a previous state takes seconds.
  • Checking in preview mode and in GA4 debug before publishing, not after complaining about the numbers.
  • A two-page document: what's in the container, what each tag is for, and who to ask if something breaks.
  • Guarantee of 30 calendar days for completed works.
When this service isn't right

What's not included — so there are no surprises at delivery

  • The server logic of the site, from which the data layer is taken, is a separate estimate and separate people
  • Conducting advertising campaigns
  • The legal part of consent to data collection: policy text and banner wording is your lawyer's zone
  • Site speed optimization in general is a related service
  • Support for other people's scripts, the origin of which no one can explain
Who it's for

Situations where this service delivers results

Scenario 1 of 5

Each new event hits the developer's queue

The marketer asks to track clicks on "Order a call", the task falls into a sprint, release in two weeks. During this time, the campaign has already been launched and turned off. The container takes the code out of the chain: the event is collected, previewed, and published the same day.

We'll review your situation in a free audit
A container against tags sewn right into the site's code

How this option differs from the alternative

Add a new eventediting in the container and publishing the version is the same hour
Roll back the errorthe previous version returns in seconds
Who can changemarketer in the work area; publishes the named list of people
The risk of breaking the sitehigher: an arbitrary script by the tag is executed on all pages - therefore the workspace and rights are divided
What can be seen in a yearlist of tags with names and history of publications
Effect on speedyou can see how many scripts are being loaded, and there is a place to turn them off

Free container and tag check on the site

The tag manager either makes life easier or turns into a dump of scripts that no one dares to turn off. The check shows you in which condition you are and what can be removed without risk.

What we measure

  • Is the container loaded at all?On one of the sites we measured, the inline snippet was self-blocking: the GTM_ID variable had the value G-XCE3BLJBSP, and the exit condition checked for equality with the same value, so return always worked. Plus, the GA4 identifier was in the field instead of the container identifier.
  • How many tags are in the container and how many of them are aliveLegacy containers usually contain system tags that have not been used for a long time. Each of these is a load delay.
  • Is there a data rateWithout it, tags cling to button classes and texts, and any redesign breaks the measurement silently.
  • Duplication and dead countersClassic — one counter is in both the site code and the container. The second classic is Universal Analytics, disabled on July 1, 2023, which still hangs in the markup and gives the impression that analytics are working.
  • Effect on speedLet's see how many third-party scripts are loaded through the container and how this is reflected in the time to interactivity.
  • Who has accessIn containers that were run by several contractors, active rights of people who have not worked on the project for a long time often remain.

What you get

  • A list of tags divided into necessary, questionable and those that can be disabled.
  • A description of the current event tracking method and its vulnerabilities.
  • Evaluation of the container's impact on page speed.
  • Conversation for 30 minutes on the document.

Timeline: 2-3 working days

Why is it free

Because checking the container is a few hours of work, and the result often saves from data duplication, which spoils all reports for months.

What's next

We provide an estimate for organizing the container, implementing the data layer and transferring tags from the site code.

Short form: your contact and site URL

Did not find your case?

Describe how it works on your side — we will tell you whether “Google Tag Manager” fits and what it means in your situation. No brief and no call: one question, one answer.

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

What affects the price

Why two seemingly identical tasks are priced differently

  • The state of the container at the startAn empty container on a clean site is an assembly from scratch according to a clear plan. A legacy container with dozens of unnamed tags needs to be described first, and it's the description that takes most of the time, not the configuration.
  • Is there a data tierIf the site already puts the product and order data into the structure, the tags are assembled quickly. If not, there is work on the side of the site, which is someone else's hands, someone else's sprint and dependence on how quickly your developer responds.
  • How many systems are left on the pagesEach system has its own event format and its own verification. Two or three are closed per day. A set of ad cabinets, call tracking, chat, and the consent banner are checked one by one, because they conflict precisely in the order of loading.
  • Platform and templateBox stores on OpenCart or WooCommerce have ready-made places for snippets. A single-page application where transitions do not reload the document requires separate page view logic.
  • Consent regime and collection limitsThe consent banner changes when and what can be sent. In the measured clinic, the consent mode was set correctly, with default denied, and part of the data was not collected by design, and not due to an error.
  • Reconciliation with the accounting systemLongest but most useful point: A tag can work perfectly and count the wrong way. Reconciliation requires a person on your end and a month of data — so it's a separate step, not part of the setup.
Cases

Tasks and results in numbers — all metrics measured by us

a private clinic of plastic surgery and aesthetic medicine is our external technical dimension

Task
Understand why the analytics is empty, although the site has both a container and a consent mode.
Solution
Parsing the inline snippet line by line and comparing the IDs to what they actually mean.
Result
The container was not loaded at all. In the snippet, the GTM_ID variable had the value G-XCE3BLJBSP, and the exit condition checked that GTM_ID was equal to the same value—return fired on every load. Second layer: G-… is the ID of GA4, not the container. Consent Mode v2 with default denied was right next to it: the measurement is dead after one line. Measured on 07/31/2026.

The B2B spare parts catalog for industrial sewing machines is our external technical dimension

Task
Check if the measurement works where the order goes through the availability request form.
Solution
Check markup for all known counters and check which systems are still alive.
Result
GTM-K2MV6P2 container in place, but next to it in the markup still running gtag('config','UA-133384797-1') - Universal Analytics, disabled by Google on July 1, 2023. There are none of the GA4 properties. For three years, the site looks like an analytics site and collects nothing: 1,848 product cards and 138 categories without a single traffic figure. Measured on 07/31/2026.

a brand of natural spices with its own online store is our external technical dimension

Task
Calculate how many measurement systems are working simultaneously and which of them is needed.
Solution
Analysis of all counters in the markup with reconciliation, which of them are still supported.
Result
Three systems together: live GA4 G-0NCJXVMDZ0, dead Universal Analytics UA-35435275-2 and Yandex.Metrika 72635620 — the latter for the Ukrainian site in 2026 is no longer a matter of extra script. At the same time, the GTM-N8SVJ42 container was: it was possible to remove the excess without editing the code. Measured on 07/31/2026.

wholesale store of building materials, B2B is our external technical dimension

Task
Assess how deep the measurement is set on the wholesale catalog.
Solution
Parsing of the container and events that the site puts in the data layer, plus counting the directory with a standard search.
Result
GTM-KLKK299, GA4 G-DR6CCN9R5B and Google Ads remarketing AW-10933820071 with event view_item_list and parameter google_business_vertical=retail. The data layer works so correctly that we calculated the catalog from it: 3,145 unique product identifiers, without access to the admin. Measured on 07/31/2026.
What we need from you

We can't start without this — best to prepare in advance

  1. Access to site templates or a person who can put a snippet in the markup of all types of pages.
  2. Publish rights in an existing container. "Preview" is not suitable: nothing will work.
  3. A list of systems that remain and those that you have abandoned - without it, we do not turn off anything.
  4. Contact the developer if the data layer has to be done on the site side.
  5. List of events that are money for you: purchase, request, call, price request.
  6. A person from your side who will check the numbers of the report with the accounting system in a month.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

Why tag manager when you can embed the code directly into the site?

To change measurements without release. Each new event in the direct code is a task for the developer to reconcile and outline; in a container it's twenty minutes and publishing a rollable version. We will honestly name the exception ourselves: if there are two events on the site that have not changed for years, the direct code is also a working option, and we will not fence the container for it.

We have a container from a previous contractor and no one knows what's in there. Disassemble or make a new one?

Mostly disassemble. A new container means a new snippet on all pages and the risk of losing what worked quietly. We start with a description of what is present, turn off the obviously dead, and transfer the rest to normal names and triggers. Our best practice recommendation: don't delete a tag you're in doubt about—pause it for two weeks. The deletion leaves no trace, and the pause shows who will come to complain and lets you get everything back with one click.

What is a data layer and why does measurement break without it?

This is a structure where the site itself puts information about the event: product identifier, amount, category, checkout step. Without it, tags catch clicks on button classes and texts, and at the first redesign everything stops silently, without any error in the console. How correct the level of data is can be seen from the outside: in a wholesale store of building materials, we counted a catalog of 3,145 items directly from the transferred data of list views, without entering the admin.

Is the container slowing down the site?

By itself, almost no, but what is superimposed on it is quite. Legacy containers have been tagging systems they don't use for years, and each pulls its own script. We measure it during the inspection and show that it is removed without consequences. Separately: if the page is slow due to heavy images and database queries, cleaning the container won't fix it - that's another job and another estimate.

Is it possible to hack a site through a container?

It is possible, and this is an argument for accuracy, not against the tool. An arbitrary script inserted by the tag is executed on all pages with page rights. Therefore, we work through the workspace and preview mode, publish in versions with a description and do not distribute publishing rights to everyone who asked. Reverting to a previous version takes seconds—provided the rights structure is correct.

We have a site on React, pages do not reload. Does GTM work here?

It works, but by default it counts one view per entire visit: the document download event fires exactly once. You need a trigger to change the browser history or a custom event that the application puts in the data layer on each transition. The same logic must be applied to forms that are sent without reloading. The clinic we measured is just such a case: the browser is given a 3 KB shell, and all content is collected on the client.

Do we need a server container?

Not everyone. It is justified when data quality despite blockers is important, when server events are needed for advertising systems, or when the number of third-party scripts in the browser needs to be reduced. It is a separate infrastructure with its own maintenance and its own points of failure. For most sites, an ordinary container is enough, and we will not impose a server one.

How to understand that the tags count correctly, and not just work?

Activation is checked by the preview mode in one hour. Correctness is only a reconciliation with the accounting system after a month, and we agree on it at the start. The difference between the report and the checkout will always be: blockers, refusal of consent, returns and cancellations. The task is not to match the numbers to a penny, but to know the size of the discrepancy and the reason for it.

We already have analytics — why touch anything?

Stands and collects - different things. In the measured B2B parts catalog, the container was in place, and next to it, the code was executing the Universal Analytics config disabled on July 1, 2023, without any GA4 properties: three years of zero data while fully functional. Live GA4, dead Universal Analytics and Yandex.Metrika lived nearby in the spice shop. The test takes two to three days and costs nothing - just start with it.

Give read access to the container - let's see what's actually in it.

In response, we will send a list of tags divided into needed, questionable, and dead, a description of how events are currently caught, and an estimate of the impact on speed. The document is yours, even if we will not work further.

From measured casesThree systems together: live GA4 G-0NCJXVMDZ0, dead Universal Analytics UA-35435275-2 and Yandex.Metrika 72635620

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.