walkerOS vs. Google Tag Manager
Most teams looking at walkerOS already run Google Tag Manager, so the first question is a fair one: GTM already sends one event to many tools and has a consent trigger, so why add anything?
They are two different jobs. GTM is good at routing, and it was never built to be the place where your data gets its shape.
Where the two differ
GTM's model stops at the edge of what it owns. Everything outside that edge is a hand-off: the same event gets re-typed by a different person, in a different tool, with nothing checking that the two agree. Three gaps follow from that.
Nothing enforces a schema. Event names and data layer keys follow a naming convention, and no contract backs it. Nothing rejects a misspelling, a renamed field, or a value that arrives as a string this week and a number next week. In a container that has been alive for a few years, the convention is the only thing holding the meaning, and it lives in people's heads.
The logic lives inside the tags. A mature container carries a lot of custom HTML and custom JavaScript. Code review can't see inside those script blocks, and neither can the container's own consent gate, which sees that a tag fired but not what its script did. That is how containers end up with tags firing ahead of the consent state someone believed was gating them.
GTM sits downstream of collection. Something has to push structured data into the data layer before GTM can act on it. That code is usually hand-written, page by page and team by team, and most tracking bugs start there. GTM only routes what it receives.
walkerOS is that layer underneath. You define a typed event once, and it carries its consent state along the whole path and gets checked before it reaches anything downstream.
One event that gets stopped
walkerOS can drop a non-conforming event inside the pipeline, before any destination sees it.
{
"transformers": {
"validate": {
"package": "@walkeros/transformer-validate",
"config": {
"settings": { "contract": ["$contract.web"], "mode": "strict" }
},
"next": "ga4"
}
}
}
In strict mode an event that fails its contract stops the chain and never
arrives downstream. In pass mode the verdict is written onto the event instead,
so a later step can route on it. See the
validate transformer and
contracts.
A developer writes that contract today. walkerOS does not derive it from a planning document on its own, so the event is blocked by a rule someone authored rather than by the plan itself.
Your existing setup keeps working
You do not have to switch GTM off or replace everything at once.
walkerOS becomes the collection layer, and GTM becomes one of many destinations, fed the same typed events through the GTM destination. Marketing keeps adding tags in the interface it already knows. GTM just no longer carries the collection logic: the custom scripts, hand-rolled consent checks, and schema workarounds that pile up when the container is the only place data gets shaped.
You can move one page, one entity, or one destination at a time, and re-tag with
data-elb attributes at whatever pace suits your release train.
Where GTM wins
These advantages are real, and they are why GTM won in the first place.
- Marketing ships without a developer. A campaign pixel is a point-and-click change in a web interface. With walkerOS it is a configuration change, which means a diff and a reviewer.
- The template gallery. It has hundreds of vendor-maintained tag templates you can add without writing anything.
- Nobody has to learn a repository. There is no git, pull request, or build step involved.
- Your team is already trained. Retraining is a real cost of switching, and not a small one.
If your tracking is a handful of standard tags on a stable site and nobody is asking hard questions about the data, GTM alone is a reasonable answer.
Cost
On the web, both are free: GTM costs nothing, and walkerOS is open source.
Server-side, both cost money, since a GTM server container also runs on infrastructure you rent. What differs is what the money buys. GTM is a closed system, so when the standard setup runs out you pay for workarounds, while walkerOS is open and your own developers can extend it.
"GTM is free" is true for simple, standard setups. Teams that collect data seriously usually find that collection stopped being a single free layer a while ago.
Testing and debugging
GTM gives you a preview pane. walkerOS moves testing into the pipeline itself.
The CLI runs a real event through your exact flow with destinations mocked, before anything deploys:
walkeros push flow.json --event '{"name":"page view"}' --simulate
Because the command is scriptable, it runs in CI on every change. For live checking, Observe attaches to a running flow and shows records as they arrive.
The trade-off is that there is no single point-and-click preview pane: you verify by running tools.
What this page is not claiming
- walkerOS does not validate your data against a planning document. A developer authors the contracts.
- Moving collection does not move your reports. Whatever consumes the data downstream still has to be pointed somewhere new.
- Configuration changes go through review. That is intended, and it is slower than clicking publish.
- None of this removes the work of deciding what to measure.
Getting started
Try the quickstart, or look at the GTM destination to see how the two run side by side while you migrate.