Output formats

GTM container, GTM Custom HTML, or direct script.

Every TrackingCoder generation produces code in three formats — you pick the one that suits your install path. The output is deterministic: the same inputs always produce a byte-identical file, which means you can regenerate without surprises.

The three formats

GTM container JSON (recommended)

A native Google Tag Manager container export — tags, triggers, variables, all in a single JSON file. Import it into your GTM workspace (Admin → Import Container → Merge → Rename conflicting tags), publish, done. This is the cleanest install path: no copy-pasting into a Custom HTML tag, no risk of breaking other tags in your workspace.

TrackingCoder uses the same export format Google publishes. If you've ever exported a GTM container manually, this file will look familiar.

GTM Custom HTML pusher

A self-contained <script> block that lives inside a single GTM Custom HTML tag. The tag installs a dataLayer pusher on page load; you create one Custom Event trigger in GTM, point a GA4 Event tag at it, and you're set. Useful when you don't have permission to import a container, or when your workspace governance requires manual tag creation.

Direct script (no GTM)

A standalone JavaScript snippet that calls gtag(), fbq(), etc. directly — no GTM in between. Paste it into your site's <head> (or a global script slot in your CMS). TrackingCoder includes the platform's base loader script too, so a fresh site goes from zero analytics to a fully-firing event in one paste.

Which one should you pick?

  • You already use GTM → GTM container JSON.
  • You use GTM but need a single Custom HTML tag for governance reasons → GTM Custom HTML pusher.
  • You don't use GTM and don't want to → Direct script.

Determinism & regeneration

Same inputs = same output, every time. The container's fingerprint and exportTime fields are derived from a hash of your inputs (scenario, channel, parameters, org, hostname), not from Date.now(). Re-importing a regenerated container into the same GTM workspace updates tags in place by name — GTM doesn't see it as a new install. This is what makes the free backfill flow safe.

Common questions

I imported the container but my old tags are still there. GTM's "Merge" mode only adds + updates tags whose names match the new import — it does not delete tags that exist only in your workspace. If you have a stale "TC Pusher" tag from a renamed scenario, pause or delete it manually in GTM.

Can I edit the tag after import? Yes, but be aware: if you regenerate later and re-import, GTM will overwrite your edit. Keep customisations on a separate tag if you can.

Don't forget to Publish

Importing a container only stages it. Until you click Submit → Publish in the top-right of GTM, the live site still serves the previous published version. This is the #1 source of "my code isn't firing" questions.