The challenge
An insurance group had made a significant investment in Adobe Experience Platform and Real-Time CDP but activation had stalled. They had four data sources — web analytics, mobile app, CRM, and policy administration — each with its own data model, identifier system, and team responsible for it. Every attempt to build a cross-channel customer profile had collapsed under the weight of conflicting field names, mismatched identity namespaces, and XDM schemas that had been built independently without coordination. The Real-Time CDP had been live for nine months with fewer than 50,000 profiles despite 6 million active policyholders.
Identity namespace strategy first
The schema work could not begin until the identity problem was resolved. The four data sources used four different customer identifiers — ECID from the web, device ID from the mobile app, CRM ID from Salesforce, and policy number from the policy administration system. None of these were consistently mapped to a single canonical identifier.
We worked with the data architecture and CRM teams to define a namespace hierarchy: the CRM ID as the primary deterministic identifier, policy number as a secondary deterministic identifier, ECID and device ID as probabilistic identifiers to be stitched to the deterministic record when authentication events occurred. This hierarchy was documented in the AEP identity namespace configuration before any schema work began.
Schema design principles
Rather than designing one monolithic schema, we designed a schema family — a base ExperienceEvent schema extended by source-specific field groups. This allowed each source team to own their specific fields while inheriting a common foundation of identity, timestamp, and web context fields.
The field naming convention was agreed across all four teams before implementation: snake_case for custom fields, CamelCase for nested object names, consistent use of ISO date formats, and enumerated values documented in a central data dictionary.
- Base ExperienceEvent schema: identity, timestamp, channel, device
- Web extension: page context, navigation events, quote funnel steps
- Mobile extension: app lifecycle events, push notification engagement
- CRM extension: contact attributes, lead status, agent interaction
- Policy extension: policy type, coverage level, renewal date, claims history
Profile unification and activation
With the schema and identity strategy in place, we configured the AEP identity graph to stitch records across sources when authentication events established the link between a web ECID and a CRM ID. For existing policyholders, a one-time historical data load populated the profile store with CRM and policy data.
The first activation use case — renewal reminder audiences for policies expiring within 90 days, segmented by coverage type and past claims history — was operational within four weeks of schema completion. This use case alone justified the schema design investment by enabling targeting that had previously required manual CRM exports.
Outcome
The unified XDM schema replaced 12 previously siloed data models with a single consistent structure. Six million policyholder profiles were fully unified in the Real-Time CDP within eight weeks of schema completion. The first activation audience — renewal reminders — reached the right policyholders with contextually relevant messaging for the first time, with open rates 34% above the previous generic renewal campaign.