The short answer

Start with the live published container. Group tags by destination, event or conversion action, and firing conditions; flag tags with no firing trigger, unexpected paused state, broad conditions, or blocking triggers. Then replay the business journey in GTM Preview and Tag Assistant. An inventory tells you how tags are configured. It cannot prove that a browser fired them – or that GA4 or Google Ads received the intended event.

The useful output is not a list of “broken tags.” It is a review queue: what looks suspicious, why, what to test, who owns the decision, and whether to act, investigate, or monitor.

Three cards show duplicate-looking, orphaned-looking, and miswired-looking tag clues and the distinct test each requires.

Table of Contents

What each clue can and cannot tell you

Candidate

Configuration clue

Confirmation before a fix

Duplicate-looking

Two active tags share a destination and event or conversion label, with overlapping firing conditions. A direct site tag may be another path.

Run one real outcome in Tag Assistant and check destination receipt. Similar IDs alone do not prove duplicate collection.

Orphaned-looking

A tag has no attached firing trigger, is paused, or appears only in an unpublished workspace.

Check intent, ownership, dependencies, and whether that outcome is still expected. “Unused” is a review label, not a defect verdict.

Miswired-looking

A trigger is too broad or narrow, or a blocking condition appears inconsistent with the intended event.

Reproduce both intended and unintended journeys across relevant consent states; inspect fired/not-fired reasons and destination data.

A focused eight-step GTM tag audit

1. Define the business outcome first

Pick a small set of meaningful outcomes: a completed lead form, booking, purchase, or qualified call – not every click. Write down the expected page or action, event name, destination, and when it should fire. Without that contract, the same configuration can look like an error or an intentional handoff.

2. Confirm the container and the source

Match the GTM account, internal container ID, public GTM ID, and site. Inspect the live container for production questions. Inspect a named workspace separately for pre-publish review and label it unpublished. Do not treat workspace tags as already serving visitors. A live inventory may be unavailable if there is no usable published version.

3. Export the complete wiring, then check the counts

For each tag, capture type, paused state, folder, important IDs or event parameters, firing triggers, their conditions, and blocking triggers. A CSV helps in large containers. One tag may occupy multiple flattened CSV rows because it can have several firing and blocking relationships; compare tag count, total wiring rows, and exported rows before concluding the review is complete. HireOtto’s default inline wiring limit is 50; the default export limit is 5,000 flattened rows, both configurable within the documented ranges.

4. Investigate duplicate-looking paths

Group candidate tags by destination + business event + overlapping conditions. Inspect whether a Google Ads conversion tag and a GA4 event intentionally represent different destinations, whether a Google tag feeds more than one destination, and whether direct site code also loads the same measurement path. A repeated ID or similar name is a lead, not a diagnosis. The decisive question is: for one completed outcome, did the browser send more than intended and did the receiving platform count it twice?

5. Investigate orphaned-looking tags

List tags without firing triggers and paused tags. Ask whether each is retired, waiting for a launch, in a draft workspace, or deliberately invoked through a more complex configuration. Review variables and folders for context, but do not infer every unused variable from a flattened tag-to-trigger CSV: that export is not a complete dependency graph. Confirm ownership before deleting anything.

6. Trace the miswired candidates

Compare the firing trigger’s event and conditions to the outcome contract. A button-click trigger may measure attempted submission rather than successful submission; an All Pages trigger attached to a conversion event may be too broad. Check blocking triggers and consent settings before declaring a missing event. If the condition depends on a dynamic value, inspect that value in Preview at the moment the event occurs.

7. Compare the served site, then test the browser

A public HTML scan can surface installed GTM IDs, GA4 IDs, Ads IDs, forms, consent clues, and inconsistent container coverage. It cannot execute JavaScript, click a form, change consent, or see a tag fire. Open GTM Preview and Tag Assistant on the real page; test success and non-success paths, mobile if relevant, and the consent states that matter. Record the event timeline, tags fired or blocked, and the values sent. Then confirm receipt in the intended destination (for example GA4 DebugView or the relevant Ads diagnostics) with realistic processing delays.

8. Route the finding to a safe decision

  • Act: Reproduced, material defect with a known owner, approved fix, and regression test.

  • Investigate: Conflicting evidence, unclear purpose, consent ambiguity, or an incomplete export.

  • Monitor: Low-impact candidate without proof of harm. Any GTM change still needs a human owner, workspace conflict review, Preview test, and explicit publish decision.

A worked example: two lead events, one form

Suppose a live inventory shows two GA4 event tags named “Lead form” and “Lead submitted.” Both point to the same measurement ID. One fires on the button click; the other fires on the thank-you page. That is not enough to call them duplicates. Submit a valid form and an invalid form in Preview. If the click tag fires on both and the thank-you tag fires only on success, the first tag may be an attempt event – provided the event names and reporting intent differ. If both send the same generate_lead event for one success, check the browser event stream and GA4 receipt before proposing a consolidation. Preserve the valid event and measurement continuity during any change.

The exact prompt to run

Inspect the live published GTM container for [account ID] and [internal container ID]. Do not change anything. Give me the total tag and tag-wiring counts, and a CSV export. Group duplicate-looking candidates by destination ID, event or conversion label, and overlapping firing conditions. Separately list tags with no firing trigger, paused tags that may still be expected, broad or narrow trigger conditions, and blocking-trigger questions. For each candidate, show evidence, uncertainty, the exact GTM Preview and destination check, and an Act / Investigate / Monitor recommendation. Do not call a configuration clue a confirmed defect. Flag any truncated output.

Then ask a second, narrower question for each high-risk event. Keep the test record attached to the finding; otherwise a tidy AI summary can hide the one edge case that matters.

How HireOtto supports this audit

HireOtto can discover the accessible GTM account and container, inspect the live inventory or a selected workspace, join each tag to its firing and blocking triggers, and export flattened wiring for review. Its website scan can help compare public installation clues with the container, including suspected duplicate IDs. You can use those reads to build the candidate queue and a test plan inside your AI client. This is a composed workflow, not a dedicated one-click duplicate detector.

The GTM connection is read-only: HireOtto cannot edit a tag, resolve workspace conflicts, create a version, or publish. The static scan does not prove runtime firing. The operator must verify critical paths in Preview/Tag Assistant and the destination, decide the fix, and approve any GTM change in Tag Manager. For the exact inventory fields and limits, see the container and tag-wiring guide and GTM tools reference. To connect the server, use the GTM quickstart.

Common mistakes to avoid

  • Calling two tags duplicates because their names, IDs, or destinations look alike.

  • Comparing an unpublished workspace to live production without labeling the difference.

  • Reading CSV row count as tag count, or ignoring a capped export.

  • Assuming a static website scan proves firing or that a missing HTML ID means no dynamic tag exists.

  • Publishing a cleanup before testing both successful and unsuccessful journeys, consent, and downstream receipt.

FAQ

Does a tag with no firing trigger always need deleting?

No. It is a review candidate. Check purpose, owner, launch status, and relevant GTM configuration before deciding whether it is stale.

Can an AI audit prove a GTM tag fired?

Not from inventory or static HTML alone. Tag Assistant’s live Preview mode shows which tags fired or did not fire during a browser journey; confirm the event in the destination too.

Can HireOtto fix the container for me?

No. Its GTM workflow is read-only. It helps surface and organize evidence; a person changes, tests, and publishes in Google Tag Manager.

What if the export contains more rows than tags?

That is expected when a tag has several firing or blocking relationships. Compare total wiring and exported rows to spot a cap; do not count each CSV row as a separate tag.

About Me

I’m Suyash – badminton junkie, ex‑GroupM ad‑ops grunt, first marketer at a B2B SaaS startup, and creator of Hiretto: MCP servers for performance marketers.

My mission: less clicking, more thinking.

Let’s build leverage together.

Reply

Avatar

or to participate