Chrome Web Store · Manifest V3

OptiPilot Companion: the Chrome extension for debugging Optimizely

OptiPilot Companion is a developer tool that inspects and debugs an Optimizely Web Experimentation or Optimizely Feature Experimentation implementation on the page you are viewing, from inside a panel it adds to Chrome DevTools.

Install from the Chrome Web Store

No OptiPilot account, no sign-in, and no charge — it is a debugging tool, not a service.

The questions Optimizely itself will not answer

Optimizely tells you which variation a visitor got. It does not tell you why. The panel is built around the four questions that cost experimentation teams the most time.

  • Why was this visitor bucketed into that variation — or into none at all?
  • Why did this audience match, or fail, or stay undecidable?
  • Why did this tracking event not fire, or fire without the tags it needed?
  • How exactly did Optimizely reach this Feature Experimentation flag decision?

Inside the panel

The OptiPilot DevTools panel listing the Optimizely experiments running on the inspected page
Every Optimizely experiment on the page, with its live decision for the current visitor.
An experiment’s variation detail and bucketing decision inside the OptiPilot DevTools panel
Experiment detail: the variation this visitor received, and the draw that produced it.
Optimizely tracking events and their validation diagnosis in the OptiPilot DevTools panel
Events as they fire, each checked against the definition it claims to match.
The OptiPilot DevTools workspace overview showing diagnostic tools and product status
The workspace rail: fourteen diagnostic tools grouped by the question they answer.

What it does

Thirteen shipped capabilities, grouped in the panel by the question they answer. Each one is a tool that already exists in the current release, not a plan.

Bucketing Trace Viewer

Follow the whole decision chain for a visitor: bucketing key, hash, the point it lands on in the 0–9999 space, the allocation range that contains it, and the variation that results. Group and holdback draws are shown as their own hashes, and you can type any visitor ID to see where they would land.

Event Firing Validator

Check outgoing events against their Optimizely definitions: events fired with no matching definition, missing or mistyped tags, events fired before the decision that should attribute them, and duplicates — each flagged inline with a copyable diagnosis.

Session Timeline

One chronological view of the pageview: snippet load, page activation, audience evaluation, decision, DOM application and events, with timings — instead of reconstructing the order from several separate tabs.

Pre-flight QA checklist

Run every check the panel knows how to make against an experiment before you launch it: targeting resolves, audiences are evaluable, variations are reachable, events are defined and firing, and variation code throws no console errors. The result is a shareable pass/fail report.

Variation Preview and DOM diff

Force any variation and see a diff of exactly what its code changed in the DOM, with a copyable snippet — so a QA reviewer can confirm the change is the one that was specified without reading the variation code.

Cookie and storage manager

Inspect and edit the Optimizely cookies and localStorage keys that drive bucketing and stickiness, with a pre-change snapshot, undo, backup, and a one-click reset visitor — instead of hand-editing them in Application → Storage.

Mutual exclusion group visualizer

See group allocation as a distinct hash draw from the variation draw, and get a plain explanation of why a campaign in an exclusion group was skipped for this visitor rather than a silent absence.

Feature Experimentation flag decisions

A datafile-driven decision trace for Feature Experimentation flags in Optimizely’s own order — forced, holdout, feature experiments, rollout — with separate group and variation hashes, presented as both a technical trace and a plain-English verdict.

Audience Unknown-State Debugger

Audience trees keep Optimizely’s three-valued logic end to end: true, false and unknown. An input the browser cannot see — DCP or behavioural data, list attributes, IP, location — is reported as unknown with the exact dependency needed to resolve it, never as failed targeting.

Redirect Experiment Trace

Decode Optimizely’s enhanced redirect relay payload so the destination page can show the complete pre-redirect campaign, experiment, variation, audience, visitor and activation provenance alongside the source-to-destination path, with confidence and loop-risk reporting.

Environment and datafile diff

Compare staging and production configurations for Web and Feature Experimentation, and compare a single flag across any number of environments — enabled state, rule status and priority, audience targeting, percentage ramp, variation weights and metrics, side by side.

Deep Trace

Turn Optimizely Web’s opt-in DEBUG log into one correlated timeline, combining filtered console output with lifecycle and action listeners, observed Optimizely network events, and Feature Experimentation notification listeners. It never calls decide() or changes a decision.

Redacted diagnostic export

Assemble a shareable diagnostic bundle — detected products, page host, the current decision traces, a recent-event and timeline summary, extension version — with a panel showing what is included and what was redacted before you download or copy it.

Both Optimizely experimentation products

Optimizely Web Experimentation

The panel reads the Optimizely state present on the page: experiments and campaigns, audience evaluation, the variation draw, exclusion groups, redirect provenance, and the events that fired. The bucketing key composition it traces was confirmed against a live Optimizely account rather than inferred.

Optimizely Feature Experimentation

Flag decisions are reproduced from the datafile in Optimizely’s own decision order. The engine is pinned by golden vectors generated with the real Optimizely SDK — 1,303 of 1,303 SDK-captured decisions reproduced exactly — so the trace matches what your application will do.

What it does with your data

You are installing a debugging tool that reads production pages, sometimes a client’s. These are the specific commitments the Chrome Web Store listing makes, not a summary of them.

No analytics and no telemetry
The extension sends no analytics and no telemetry anywhere, and there is no OptiPilot server behind it. Nothing about the sites you inspect is reported back to us, because there is nothing to report it to.
Flag decisions are computed locally
Feature Experimentation decisions are computed entirely locally from the datafile, in the page context. The decision engine is pinned against the real Optimizely SDK by golden vectors, so a local answer is the SDK’s answer rather than an approximation of it.
Read locally, kept locally
On-page Optimizely state, cookie and storage keys, request timings and any datafile you load stay in the browser’s local extension storage, scoped to the tab you are inspecting.
The diagnostic export is redacted before it leaves
The one bundle you can share is redacted first: full URLs and query strings are dropped and only the host is kept, cookie and storage values are removed, email addresses are masked, and visitor IDs are truncated. A panel shows exactly what is included before you download or copy anything.
Deep Trace is opt-in and temporary
Debug capture happens only after you start it explicitly. Records live in session storage for one five-minute window per tab, are capped at 500, and are removed when the tab closes — normal browsing collects nothing.

Install it and open DevTools

Install from the Chrome Web Store, open DevTools on any page running Optimizely, and pick the OptiPilot panel. There is nothing to configure and no OptiPilot account to create.