Skip to content

Unified Customer Profile with ODP

intermediate
📜CoreODPcms

Most organizations have customer data scattered across systems. The CMS knows what pages a visitor viewed. The email platform knows which campaigns they opened. The e-commerce system knows their purchase history. The support system knows their ticket history. But no single system knows the full picture.

Without a unified profile, personalization is limited to what each system can see independently. The CMS personalizes based on page views alone. The email system targets based on email engagement alone. Each channel operates with partial information, leading to inconsistent experiences — a customer who just purchased gets a promotional email for the same product, or a high-value customer sees the same generic homepage as a first-time visitor.

Optimizely Data Platform (ODP) solves this by collecting behavioral and transactional data from all channels into a single customer profile. The CMS and other Optimizely products can then access this unified profile to deliver consistent, cross-channel personalization.

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Website │ │ Email │ │ Mobile App │ │ E-commerce │
│ (CMS SaaS) │ │ Platform │ │ │ │ Platform │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │ │
│ Page views, │ Opens, │ App events, │ Purchases,
│ clicks, │ clicks, │ screens, │ cart,
│ form fills │ conversions │ in-app actions │ returns
│ │ │ │
└────────────┬────┴────────────┬───┴──────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────┐
│ Optimizely Data Platform │
│ (ODP) │
│ │
│ ┌────────────────────────────────────┐ │
│ │ Unified Customer Profile │ │
│ │ │ │
│ │ • Identity resolution (email, │ │
│ │ cookie, device ID, customer ID) │ │
│ │ • Full behavioral history │ │
│ │ • Computed attributes (LTV, │ │
│ │ engagement score, churn risk) │ │
│ │ • Segment membership │ │
│ └────────────────────────────────────┘ │
└──────────────────┬──────────────────────┘
┌─────────┴─────────┐
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ CMS Visitor │ │ Other │
│ Groups / │ │ Channels │
│ Personali- │ │ (email, │
│ zation │ │ ads, app) │
└──────────────┘ └──────────────┘

The ODP JavaScript SDK runs on your CMS-powered website. It captures visitor interactions and sends them to ODP in real time.

ODP tracking on CMS-rendered pages
javascript
// The ODP JavaScript SDK is loaded on every page.
// It automatically captures page views.
// Add custom event tracking for key interactions:

// Track content engagement
window.zaius.event('content_view', {
  page_type: 'product_landing',
  content_id: 'landing-page-spring-2026',
  category: 'seasonal-campaigns'
});

// Track form submissions
document.querySelector('#demo-form').addEventListener('submit', () => {
  window.zaius.event('form_submit', {
    form_name: 'demo_request',
    source_page: window.location.pathname
  });
});

// Track CTA clicks
document.querySelectorAll('[data-cta]').forEach(btn => {
  btn.addEventListener('click', () => {
    window.zaius.event('cta_click', {
      cta_label: btn.textContent,
      cta_location: btn.dataset.cta
    });
  });
});

From ODP to CMS (profile data for personalization)

Section titled “From ODP to CMS (profile data for personalization)”

ODP segments and computed attributes feed back into the CMS personalization layer. Visitor groups in CMS can reference ODP segments as criteria.

Example ODP segments available to CMS:

ODP segmentDefinitionCMS personalization use case
High-Value CustomersLifetime value > $500Show premium content, exclusive offers
At-Risk ChurnersNo engagement in 30 days, previously activeShow re-engagement content, special incentives
Active Evaluators3+ pricing page views in 7 daysShow comparison content, demo CTAs
Recent PurchasersPurchase in last 14 daysShow onboarding content, suppress sales messaging

Step 1: Install ODP tracking on your website

Section titled “Step 1: Install ODP tracking on your website”
ODP SDK installation
html
<!-- Add to your site's <head> section -->
<script type="text/javascript"]}>
  // ODP JavaScript SDK initialization
  var defined = window.zaius || (window.zaius = []);
  // Replace with your ODP tracker ID
  zaius.push(['config', 'tracker_id', 'YOUR_TRACKER_ID']);
  
  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = 'https://d1igp3oop3iho5.cloudfront.net/v2/YOUR_TRACKER_ID/zaius-min.js';
    fjs.parentNode.insertBefore(js, fjs);
  })(document, 'script', 'zaius-sdk');
</script>

ODP unifies profiles across channels using identity resolution. When a visitor identifies themselves (login, form fill, email click), ODP merges their anonymous browsing history with their known profile.

Identity resolution
javascript
// When a visitor logs in or identifies themselves
function identifyVisitor(email, customerId) {
  window.zaius.identify({
    email: email,
    customer_id: customerId
  });
  // ODP merges the anonymous session with the known profile.
  // All previous anonymous page views now belong to this customer.
}

Identity resolution connects:

  • Anonymous cookie ID (first visit) with email (form fill) with customer ID (purchase) with device ID (mobile app)
  • Once connected, all interactions across all devices and channels appear on a single customer profile

In the ODP dashboard, create segments based on cross-channel behavior.

Example segment: “Active Evaluators”

  • Criteria: Viewed the pricing page 3 or more times in the last 7 days AND has not purchased
  • This segment is impossible to create with CMS data alone — it requires purchase history from the e-commerce system combined with browsing behavior from the website

Step 4: Connect ODP segments to CMS visitor groups

Section titled “Step 4: Connect ODP segments to CMS visitor groups”

Configure CMS visitor groups to use ODP segments as targeting criteria.

Once connected, your CMS personalization rules can reference the full customer profile:

  • Show a returning customer a personalized dashboard instead of the generic homepage
  • Display re-engagement content to at-risk churners
  • Suppress promotional banners for recent purchasers
  • Present comparison content and demo CTAs to active evaluators

Step 5: Activate cross-channel personalization

Section titled “Step 5: Activate cross-channel personalization”

With the unified profile in place, personalization extends beyond the website.

ChannelData from ODPPersonalization action
Website (CMS)Segment membership, engagement scoreVisitor groups target content variations
EmailPurchase history, content preferencesSegment-based campaign targeting
Mobile appCross-device browsing historyConsistent recommendations across devices
AdvertisingCustomer value, churn riskAudience suppression, lookalike targeting

The key insight: each channel benefits from data collected by the others. The website knows that a visitor opened an email campaign yesterday. The email system knows that the same person browsed three product pages this morning.

This architecture is most valuable when:

  • Your customers interact with your brand across multiple channels
  • You have separate systems for web, email, e-commerce, and support that each hold partial customer data
  • Personalization based on single-channel data is insufficient
  • You need to suppress messaging for recent converters or target based on cross-channel behavior
  • Customer lifetime value varies significantly and high-value customers deserve differentiated experiences