Don't have one? Create one ↗
Tagging in the wild — when there's no clean dataLayer

Lesson 8 of 9

Patch It Now, Or Fix The Source?

Every technique in this course is, in some sense, a workaround. The honest question on each request is whether to ship the workaround or to ask the developers for a clean dataLayer push instead. There is no universal answer, only a trade-off — and a default.

Patch it in GTM now

  • Unblocks a campaign or report today
  • No dev cycle, no deploy to wait on
  • Fine for low-stakes or short-lived needs
  • Cost: fragile, yours to maintain forever

Request a dataLayer push

  • Stable, owned by the app, survives redesigns
  • Right call for revenue / core conversions
  • Cost: needs a dev, a deploy, and patience
  • Pays back every time the markup changes

The escalation ladder

Prefer the highest rung you can reach for the value at stake. Drop down only when the rung above isn't available and the stakes don't justify waiting for it.

1Clean dataLayer push2Reliable existing event3Filter / derive a value4DOM scrape

How to ask for a good push

A vague "can you add a dataLayer event?" gets a vague result. Hand developers a spec they can implement without guessing: the event name, the exact keys and their types, and the precise moment it should fire.

dataLayer.push({
  event: "demo_request",     // fixed name, fires once on server-confirmed success
  formId: "demo-request",
  plan: "pro",               // string
  value: 500,                // number, no currency symbol
  currency: "USD"
});

For anything that drives money or decisions, push for the push. For a quick, low-risk measurement you need this week, a well-guarded GTM capture is a reasonable answer — as long as you write down what you did and why, so the next person knows it is a patch, not a foundation.

Key takeaway

Default to the cleanest source you can get for the stakes involved: a real dataLayer push for anything important, a guarded GTM workaround for the small and urgent. Whatever you ship, document it — an undocumented workaround is a future outage.