Heap automatically captures all active experiment variations as a property attached to every event on a given page. With Heap's Optimizely integration, you can answer questions like:

  • How does an A/B test impact long-term retention?
  • Do users exposed to an experiment convert faster than others?
  • Did a given experiment influence behavior that isn’t directly related to the functionality changed?


To get started, simply click CONNECT on the Optimizely Source page. Once connected, Heap will automatically capture all active experiments and exposed variations as a property on all events for a given page.

Synchronous only support

Heap automatic capture currently only supports the synchronous installation of Optimizely. If you're loading Optimizely asynchronously, we recommend using another method documented here to send this data as user-level properties. Please refer to Optimizely's documentation for more information on the different ways of loading Optimizely.

Data Format

Heap will automatically capture all active Optimizely experiments and attach a pageview-level property to all events on that page in the user's experience (including custom events). The format of the property follows the pattern of Optimizely: [Experiment Name] with the value of [Variation Name]. An example in this format might be: Optimizely: Home Page Test as the property name and Control as the value. Please refer to your experiment setup in Optimizely for more info on what these values will contain!

In practice, you'll see additional event-level properties on events where an active experiment is running. In the example image below, you can see a property entitled Optimizely: Collect and analyze - Homepage headline test with a value of `Variation #1 included.

To use in analysis, simply apply a group by clause to the analysis of interest and specify the event level property with the experiment property of interest to cut your analysis by the experiment exposed to the user at the time of the event!

Known Issues

Optimizely X

Privacy Settings: Mask descriptive names in project code and third-party integrations

Our integration attaches the active experiment name and variation names to events. If this option is enabled, experiment variation names aren't accessible by the integration and properties will not get sent to Heap. Ensure this option is disabled in your account by going to your Optimizely settings, then select "Privacy", and uncheck the checkbox for "Mask descriptive names in project code and third-party integrations".