Optimizely Data Platform Visitor Groups

The Optimizely Data Platform (ODP) builds a picture of a customer, their interactions, and their behavior in comparison to other customers on a site.

This module exposes these insights in the form of visitor groups which can then be used to personalise content.


There are currently five different visitor groups available. These are accessed via the ‘Data Platform’ group.

Real-Time Segments

Real-Time segments are new and are different from the ‘Calculated’ segments that are currently available on the platform.

Real-Time segments are based on the last 30 days of data whereas ‘Calculated’ segments are based on all the stored customer data and are calculated at regular intervals. They are more suited to reporting and journey orchestration. 


Note: You need to contact Optimizely to get Real-Time Segments enabled on your instance and there is currently no interface to create them.

Note 2: ‘Calculated’ Segments are not available via this visitor group criterion. 

Engagement Rank

This metric allows you to build personalisation based on how engaged the customer/visitor is with your site/brand.  This is biased toward more recent visits rather than historical visits.


This metric is calculated every 24 hrs.

Order Likelihood

As the name suggests, this criterion returns the likelihood that the customer will place an order.  

The possible values are:

  • Unlikely
  • Likely
  • Very Likely
  • Extremely Likely

This metric is calculated every 24 hrs.

Winback zone

Returns the ‘Winback Zone’ for the current customer.  This can be used to identify when a customer is altering their normal interaction patterns with the site; for example, are disengaging.

The options are:

  • Churned Customers
  • Winback Customers
  • Engaged Customers

This metric is calculated every 24hrs.


This criterion is can be used to build personalisation around 3 different customer order metrics.

  • Total Revenue
  • Order Count
  • Average Order Revenue


This metric is calculated every 24hrs.


Install the package directly from the Optimizely Nuget repository.

dotnet add package UNRVLD.ODP.VisitorGroups
Install-Package UNRVLD.ODP.VisitorGroups

Configuration (.NET 5.0)


// Adds the registration for visitor groups

appsettings.json All settings are optional, apart from the PrivateApiKey

   "EPiServer": {
      //Other config
      "OdpVisitorGroupOptions": {
         "OdpCookieName": "vuid",
         "CacheTimeoutSeconds": 10,
         "EndPoint": "https://api.zaius.com/v3/graphql",
         "PrivateApiKey": "key-lives-here"

Configuration (.Net Framework)

web.config All settings are optional, apart from the PrivateApiKey

    <add key="episerver:setoption:UNRVLD.ODP.OdpVisitorGroupOptions.OdpCookieName, UNRVLD.ODP.VisitorGroups" value="vuid" />
    <add key="episerver:setoption:UNRVLD.ODP.OdpVisitorGroupOptions.CacheTimeoutSeconds, UNRVLD.ODP.VisitorGroups" value="1" />
    <add key="episerver:setoption:UNRVLD.ODP.OdpVisitorGroupOptions.EndPoint, UNRVLD.ODP.VisitorGroups" value="https://api.zaius.com/v3/graphql" />
    <add key="episerver:setoption:UNRVLD.ODP.OdpVisitorGroupOptions.PrivateApiKey, UNRVLD.ODP.VisitorGroups" value="key-lives-here" />


I cannot take all the credit for this module, it was co-developed with David Knipe. Thanks for all the help.

4 thoughts on “Optimizely Data Platform Visitor Groups

  1. Nice work Andrew and David. I was the principle investigator on the insights you’ve exposed and am the tech lead for the real-time segments (RTS) development so for me this is personal: I think this is awesome!

    We expose an API for introspecting the account schema. Specifically for listing the fields contained by an object (like customer_insights and customer_observations in your illustration) https://docs.developers.optimizely.com/digital-experience-platform/v1.5.0-optimizely-data-platform/reference/list-fields
    I wonder if it would be possible to generate the list of possible visitor groups from the output of that API so that your module stays current as we add new observations and insights?

    Note on real-time segments: You say they are based on the last 30 days of data. The more precise statement is that can be based on all profile data (including data the profile references via relations) and the last 30 days of behavior. Concretely, if you build a segment about a profile attribute (like shipping postal code), that data is available for all time. If you build a segment about behavior (like “the last 3 products someone viewed”) then it can only consider data from the last 30 days. In my experience during pilot testing, it’s very rare that the 30 day behavior limitation matters in a real-time scenario and in most of those cases we could work around the issue by marking the profile with some critical piece of information using OJO. My favorite specific example of that was that a pilot client wanted a segment of people who had shown interest in a particular new product release. They defined interest as “opened or clicked on a link in the release campaign”. To solve this we built an OJO flow that looked for the behavior and set a flag on the profile if it observed it. Then we built a RTS that looked for the flag and looked for the behavior. With the help of OJO we could keep people in the RTS even when the behavior that caused them to enter it was > 30 days old.

    Liked by 1 person

    • Hi Brian,

      Thanks for the amazing feedback.

      There are some changes that I want to make, so I will take on board your suggestion. It should be possible.

      I will look at update the documenation for the visitor groups based on your feedback. I also think it may be good to expose this kind of information within the API documentation, it is really useful to get an understanding of how the feature work, and what they mean.



  2. This is great stuff (both the package and the writeup)! I’ve had it set up with one of my test sites, and it’s been running smoothly.

    Thought I’d throw two more links out there for folks newer to ODP —

    * https://support.optimizely.com/hc/en-us/articles/4407774576269-Understand-churn-prevention-and-winback — this has some more details around the engagement score, winback zone, etc

    * https://support.optimizely.com/hc/en-us/articles/4407282629005-Advanced-website-personalization-with-Real-Time-Segments — this one has some info on the default set of real-time segments available

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.