Skip to main content
Adrià García
← Back to the simulators

Experience Platform · XDM data model

Where do you store the orders?

Laura has been buying for four years. Marketing needs three audiences in Real-Time CDP based on her orders. Whether they can be built depends not on the rule, but on where the orders were modelled.

Scenario

From 40 orders, the profile record in the first option goes over 100 KB.

Illustrative scenario ↑ Back to the controls
Example assumptions

Customer, orders and amounts are made up. The size of an order, about 2.5 KB, is an estimate.

Option 1 · Profile record

Orders array in the profile

An XDM Individual Profile class record with the orders nested. Everything in one record and easy to query. The limit is the size.

Option 2 · ExperienceEvents

Orders as ExperienceEvents

One event per order, on the profile timeline. It reacts to what just happened. History and changing statuses are its weak spot.

Option 3 · Federated Audience Composition

Orders in the warehouse with FAC

Snowflake or BigQuery tables. History stays in the warehouse: FAC queries it without copying transactions and only the audience is stored in AEP. It follows the scheduled refresh.

The recommendation

In the profile, only attributes that do not grow. Orders as events. The full history in the warehouse

It is not about picking one of the three options. They are combined, and each audience is built in the layer that handles it best. The profile record is the same size with 30 orders or 400.

  1. 01

    Each order, one ExperienceEvent

    For recent activity: abandoned cart, this month's purchase, recommendations in Target or AJO. Streaming segmentation and computed attributes of up to 6 months.

  2. 02

    In the profile, bounded attributes

    Summaries calculated outside AEP and sent with upsert when they change: _tenant.lifetimeSpend, _tenant.orderCount, _tenant.lastOrderDate, _tenant.openReturnAmount. Always the same fields.

  3. 03

    The history, in the warehouse with FAC

    For complex or one-off audiences nobody planned for. Federated Audience Composition builds them in Snowflake or BigQuery without copying the orders into AEP.

  4. 04

    All three audiences work

    This month's purchase, in minutes with streaming segmentation. Lifetime spend, with _tenant.lifetimeSpend. Open return, with _tenant.openReturnAmount updated through upsert.

Architecture note · 10 Profile is for activation; the data lake is for memory What goes into Profile and how long it stays is an architecture decision. It also decides what counts towards the licence. Read the note →

Explore this decision