Made by Rune Andersen @ Copenhagen, Denmark
Optimizely logo

Debug Optimizely in Chrome DevTools

To debug Optimizely in Chrome DevTools, install the free Event Watcher extension and open its panel: every Optimizely request is captured the moment it fires, decoded by a dedicated parser into named events, readable parameters, and consent signals, and cross-referenced against the visitor's consent state. Event Watcher has listed Optimizely under A/B Testing since v1.0.0, and flags any Optimizely event that fires without functional consent.

Experimentation platform for A/B testing, feature flags, and personalization.

Last updated:

Category
A/B Testing
Detected via
Network requests: Event Watcher matches the request URLs this platform sends
Consent category
Functional / preferences consent: Event Watcher flags Optimizely activity that fires without it
Dedicated parser
Yes: requests are decoded into named events, parameters, and consent signals, not just raw URLs
Supported since
Event Watcher v1.0.0 (2026-02-20)
Show the URL patterns Event Watcher matches
  • cdn.optimizely.com
  • logx.optimizely.com
  • optimizely.s3.amazonaws.com

What Optimizely traffic looks like

With Optimizely the interesting part is the body, not the URL: a JSON envelope recording which experiments a visitor entered.

Endpoint pattern
Snippet and project datafile from cdn.optimizely.com; experiment telemetry to logx.optimizely.com, typically a POST to /v1/events
Transport
JSON envelope with an account_id and a visitors array, each visitor carrying snapshots; the snippet is designed to execute synchronously in <head> (Optimizely's own answer to variation flicker), so it is one of the first third-party requests on the page, worth remembering when reasoning about load order
Key parameters
decisions[] the exposure record: campaign_id, experiment_id, variation_id tell you the visitor was activated into an experiment, and into which arm · events[] the tracked events: campaign_activated marks exposure; custom conversion events carry their key, optional revenue, and a tags object with attached business data · multiple events often batch into one request

A typical events envelope, as Event Watcher captures it:

{
  "account_id": "12345678",
  "visitors": [
    {
      "visitor_id": "oeu-4821…",
      "snapshots": [
        {
          "decisions": [{ "campaign_id": "20011…", "experiment_id": "20022…", "variation_id": "20033…" }],
          "events": [{ "key": "campaign_activated" }]
        }
      ]
    }
  ]
}

Debugging Optimizely with Event Watcher

  • The dedicated Optimizely parser turns the nested visitor/snapshot JSON into readable sections: experiment decisions (campaign → experiment → variation), the events in the batch with their names, event tags as custom data, visitor identity and attributes, and SDK details.
  • Revenue and batch size surface in the overview.
  • Each request also gets the standard cookies section and the consent verdict.

Optimizely and consent

Functional consent

The extension checks Optimizely against the functional consent category. A/B testing sits in an awkward spot: many CMP configurations classify it as functional/preferences rather than analytics or marketing. But the logx events still carry a visitor ID.

A campaign_activated decision event appearing while the CMP is undecided is marked pre-consent and counted in the violations counter; the CDN snippet request itself is just a script load. The events endpoint is what matters for consent timing.

Common debugging scenarios

  • "Is the experiment even running?" Filter the stream to Optimizely and look for a decision with the expected experiment_id and variation_id. No decision event means the visitor was not bucketed (audience conditions, traffic allocation, or a paused campaign).
  • Conversion events not showing in results. Check that the custom event's key matches the event configured in Optimizely, and whether tags/revenue are actually present in the batch.
  • Experiment activation before consent. The consent badge and the violations counter show whether decision events precede the CMP grant.
  • Who loaded the snippet? The Script Tree view shows whether Optimizely came from the site's own HTML or through a tag manager, which matters when debugging flicker and load order.
  • Cross-checking against analytics. Pivot the Grouped view by Tool to compare which pages fired Optimizely events versus Adobe Target or your analytics platform.

See Optimizely traffic on your own site

Free, no account, runs entirely inside Chrome DevTools.

Add to ChromeFree on the Chrome Web Store

Related guides

More a/b testing platforms