walkerOS tagging vs. dataLayer.push
Google's dataLayer has been the standard way to push data to Google Tag
Manager, but every event needs manual work.
Quick comparison
| Feature | dataLayer.push | walkerOS tagging |
|---|---|---|
| Tagging approach | Manual JavaScript calls | HTML attributes (data-elb) |
| Event state management | Manual updates required | Automatic, real-time |
| Consent handling | Manual setup in GTM | Built-in |
| Version control | Hard to track changes | In your codebase |
| Component reusability | Copy-paste code | Tag once, use everywhere |
| Metadata enrichment | Manual | Automatic (timing, session, etc.) |
Who should use what?
Keep using dataLayer.push if
- You have an existing GTM setup you don't want to change
- Your tracking is minimal and rarely changes
- Your team prefers JavaScript over HTML attributes
Switch to walkerOS tagging if
- You want tracking integrated into your components
- You're tired of manual event management
- You need automatic consent handling
- You want version-controlled, reviewable tracking
- You're building with modern component frameworks
Key differences
How tagging works
dataLayer.push: You write JavaScript to collect values, build the event object, and push it at the right time. Every event needs its own code.
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
items: [
{ item_id: 'sku123', item_name: 'Cool Hat', price: 29.99, quantity: 1 },
],
},
});
You gather all values yourself and make sure the push happens after DOM ready and after consent is granted.
walkerOS tagging: You add HTML attributes to your components. walkerOS reads the DOM, detects interactions, checks consent, and pushes events automatically.
You tag the button once, and walkerOS listens for clicks, collects data from the attributes, checks consent, and pushes to any destination.
Component integration
dataLayer.push: Tracking is often hard-coded separately from components, or managed entirely in GTM. New features frequently launch without tracking because nobody thought of it until later.
walkerOS tagging: Tracking lives in your HTML alongside your components. When you build a component, you tag it once, and the same tracking works on every page and in every context where that component appears.
Maintenance
dataLayer.push: Every event needs individual updates. A changed product schema means updating every push call, and a new field means touching every file.
walkerOS tagging: Global attributes apply everywhere automatically, and because tagging happens at the component level, one change updates all instances. walkerOS also adds event metadata (timing, session, consent state) on its own.
Can they work together?
Yes. The GTM destination sends walkerOS events into the dataLayer for your existing GTM tags, so you can adopt walkerOS tagging while your current GTM setup keeps working.
Getting started
The tagging guide shows how HTML attributes replace manual push calls.