Made by Rune Andersen @ Copenhagen, Denmark
Adobe Data Layer logo

Debug Adobe Data Layer in Chrome DevTools

To debug Adobe Data Layer in Chrome DevTools, install the free Event Watcher extension and open its panel: every push to Adobe Data Layer is captured the moment it fires, broken out into its parsed query and body parameters, plus the cookies it set and sent, and cross-referenced against the visitor's consent state. Event Watcher has listed Adobe Data Layer under Data Layers since v1.0.0 and treats it as consent-exempt infrastructure, so the consent check applies to the tools it loads rather than to Adobe Data Layer itself.

Adobe Experience Platform data layer - array-based event structure for Adobe Tags and AEP.

Last updated:

Category
Data Layers
Detected via
JavaScript interception: Event Watcher hooks the data layer object and captures every push
Consent category
Exempt: infrastructure that is not itself consent-gated
Supported since
Event Watcher v1.0.0 (2026-02-20)
Show the dataLayer objects Event Watcher matches
  • window.adobeDataLayer.push({...})

What Adobe Data Layer traffic looks like

The Adobe Client Data Layer (ACDL) never touches the network: its activity is push calls on a page-level structure.

Data layer object
window.adobeDataLayer.push({ event: 'cmp:show', eventInfo: {...}, component: {...} }). Superficially like GTM's array, but pushes may be functions, not just plain objects, and listeners can be registered on the data layer itself
Transport
None: page-level JavaScript only. With no request to match, Event Watcher detects ACDL by intercepting the push calls themselves (the catalog carries a syntax entry, window.adobeDataLayer.push({...}), in place of URL patterns)
Built-in events
AEM sites ship ACDL by default, with components pushing namespaced events like cmp:show and cmp:click starting at parse time
Payload
Successive pushes merge into a computed state readable via adobeDataLayer.getState(): what a rule sees is the merged result, not the individual push

A typical AEM component push, as Event Watcher captures it:

{
  "event": "cmp:click",
  "eventInfo": { "path": "component.button" },
  "component": {
    "button": { "@type": "core/wcm/components/button", "dc:title": "Add to cart" }
  }
}

Debugging Adobe Data Layer with Event Watcher

  • Each push lands in the live stream as its own event with the payload visible. You watch the sequence exactly as the page produced it, not reasoned backward from merged state.
  • Source attribution classifies every push via stack trace (website code, tag manager, or third-party script), which on Adobe stacks separates genuine component pushes from pushes injected by an Adobe Tags rule.
  • Pushes that fired before DevTools opened are captured as historical, which matters on AEM pages where component pushes start at parse time.
  • On sites running both adobeDataLayer and GTM's dataLayer (common mid-migration), the Grouped view's Datalayer pivot keeps the two streams apart.

Adobe Data Layer and consent

Consent-exempt infrastructure

ACDL is consent-exempt infrastructure: no consent category. Its consent role is as a carrier: on Adobe implementations, consent state flows from the CMP into rules and the AEP Web SDK, and some setups push consent-change events through adobeDataLayer itself.

The consent check applies to what the data layer feeds: Adobe Analytics and Edge Network hits triggered off ACDL events are marked granted, denied, or pre-consent. A component event launching a marketing call early surfaces as a network-side violation.

Common debugging scenarios

  • Two data layers on one page. Migration sites run adobeDataLayer and dataLayer side by side; pivot by Datalayer in the Grouped view to see which one a given event actually flowed through.
  • A rule sees stale or unexpected values. Remember rules read merged computed state. Inspect the individual pushes in the stream to find which earlier push contributed the surprising key.
  • Early pushes missing. AEM components push before any debugger attaches; check the historical pushes instead of reloading with timing hacks.
  • Which component pushed cmp:show? The push's source attribution and the sequence around it narrow it down without instrumenting the page.
  • Push happened, downstream hit did not. Confirm the push in the stream first; if it is there and correctly shaped, the gap is in the Tags rule or SDK mapping, not the page code.

See Adobe Data Layer traffic on your own site

Free, no account, runs entirely inside Chrome DevTools.

Add to ChromeFree on the Chrome Web Store

Related guides

More data layers platforms