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 tologx.optimizely.com, typically a POST to/v1/events - Transport
- JSON envelope with an
account_idand avisitorsarray, each visitor carryingsnapshots; 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_idtell you the visitor was activated into an experiment, and into which arm ·events[]the tracked events:campaign_activatedmarks exposure; custom conversion events carry theirkey, optionalrevenue, and atagsobject 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 consentThe 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_idandvariation_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
keymatches the event configured in Optimizely, and whethertags/revenueare 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.