Why a unified customer profile matters
Section titled “Why a unified customer profile matters”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.
Architecture overview
Section titled “Architecture overview”┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐│ 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) │ └──────────────┘ └──────────────┘How the data flows
Section titled “How the data flows”From CMS to ODP (behavioral data)
Section titled “From CMS to ODP (behavioral data)”The ODP JavaScript SDK runs on your CMS-powered website. It captures visitor interactions and sends them to ODP in real time.
// 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 segment | Definition | CMS personalization use case |
|---|---|---|
| High-Value Customers | Lifetime value > $500 | Show premium content, exclusive offers |
| At-Risk Churners | No engagement in 30 days, previously active | Show re-engagement content, special incentives |
| Active Evaluators | 3+ pricing page views in 7 days | Show comparison content, demo CTAs |
| Recent Purchasers | Purchase in last 14 days | Show onboarding content, suppress sales messaging |
Step 1: Install ODP tracking on your website
Section titled “Step 1: Install ODP tracking on your website”<!-- 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> Step 2: Set up identity resolution
Section titled “Step 2: Set up identity resolution”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.
// 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
Step 3: Create ODP segments
Section titled “Step 3: Create ODP segments”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.
| Channel | Data from ODP | Personalization action |
|---|---|---|
| Website (CMS) | Segment membership, engagement score | Visitor groups target content variations |
| Purchase history, content preferences | Segment-based campaign targeting | |
| Mobile app | Cross-device browsing history | Consistent recommendations across devices |
| Advertising | Customer value, churn risk | Audience 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.
When to use this pattern
Section titled “When to use this pattern”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