Category: MarTech & Data

Warehouse, identity, consent and the data foundations of omnichannel.

  • MarTech under the hood, part 3: the governance box ships switched off

    MarTech under the hood, part 3: the governance box ships switched off

    MarTech under the hood · a series in three parts
    1. Part 1Collect · Model · Resolve
    2. Part 2Unify · Segment · Decide · Activate
    3. Part 3 · you are hereGovern · Measure · Warehouse · AI agents
    The 30-second brief

    Enforcement you never switched on fails the same way a graph does: silently, and with no error to find.

    Govern›Measure›Warehouse›AI agents
    • OffAll data usage policies, including Adobe’s own core policies, are disabled by default. Newly created ones too.
    • ThreeEnterprise destinations in Adobe’s catalogue where consent policy evaluation does not run – and non-consented profiles are included in the export.
    • No IDsFederated composition joins on a key you define. Data that stays in the warehouse gets no identity resolution at all.

    30 seconds to here · 5 minutes for the four sections.

    Parts 1 and 2 walked seven stations: whether the data arrives, whether it is modelled, whether it resolves into one person, whether the fragments become a profile, how fast a rule can be answered, where a decision can be made, and how long it takes to reach a channel. Seven stations that decide whether you can act.

    This part covers whether you are allowed to – and whether anyone will be able to say afterwards what it changed. Every data governance policy ships switched off – including Adobe’s own core policies – and Adobe documents that on two separate pages. Then two questions that sit around the nine stations rather than inside them: what it costs to leave your data in the warehouse, and what an AI agent can actually see.

    As before, Adobe Experience Platform is the worked example because Adobe documents its limits publicly. Every figure links to its source; all pages were retrieved on 11 September 2026. None of this is a legal assessment – that is a conversation for privacy counsel, not an architecture article.

    Part 3 · the last two stations, and two questions around them1 / 4

    Labels classify data, policies describe what may be done with it, enforcement applies them. Enforcement is real when active – a violation blocks the activation and shows a lineage graph. But every policy, including Adobe’s own core policies, is disabled by default and has to be enabled by hand. An unenforced policy produces no errors and no warnings: restricted data activates exactly as smoothly as data that is not.

    Source: Data usage policies overview

    What is published concerns querying: ad-hoc queries capped at 10 minutes, returning 100 rows in the interface and up to 50,000 through a client; batch queries up to 24 hours; four concurrent slots on the accelerated store. What the guardrails do not describe is the loop itself – how engagement outcomes become new signals, how quickly, with what identity. That has to be designed rather than configured.

    Source: Query Service guardrails

    Federated Audience Composition builds audiences from data in an external warehouse without copying it – its own FAQ states that it only stores metadata, and no customer data is transiting. The trade sits in the same FAQ rather than in any comparison chart: federated composition does not use Identity Service. Joins run on a key you define, so that data gets no cross-device stitching and no namespace priority.

    Source: Federated Audience Composition FAQ

    The Adobe Experience Platform Agent Orchestrator draws on structured and unstructured sources described as product documentation, customer metadata about business objects, and analytics data. Read that list for what is not in it: the customer record. An agent that helps you build an audience works on the description of your data, not on the people in it.

    Source: Agent Orchestrator

    1. 08 Govern
    2. 09 Measure
    3. Warehouse
    4. AI agents

    Station 8 – Govern

    Every architecture diagram has a governance box. It is usually drawn as a band across the side or the bottom, coloured differently, labelled “Data Governance & Privacy”. It is the box everyone points at in the steering committee and nobody opens.

    Open it. Adobe’s framework has three parts:

    • Labels classify data. They come in three categories: Contract, carrying the codes C1 through C12; Identity, with I1 and I2; and Sensitive, with S1 and S2 alongside labels for permitted sensitive personal data and regulated health data.
    • Policies describe what may be done with labelled data.
    • Enforcement applies those policies at the point of activation.
    08

    Govern

    Deciding what may be done with which data, and enforcing it.

    Data Governance
    OffPolicies · disabled by default

    Labels propagate usefully: audiences inherit the labels of the datasets they were built from automatically. Enforcement, when active, is real – a violation blocks the activation and shows a lineage graph of exactly which datasets, merge policies, audiences and destinations were involved.

    Then there is the sentence. It appears, word for word, on two separate Adobe pages: “All data usage policies (including core policies provided by Adobe) are disabled by default. In order for an individual policy to be considered for enforcement, you must manually enable that policy.” Newly created policies are also set to disabled by default.

    Out of the box · one data usage policyOffOn
    Restricted data for onsite advertisingAdobe core policyDisabledEnabled

    Activation completes. Every profile in the audience reaches the destination, including the ones whose datasets carry a restricted label. No error, no warning, no queue.

    Activation is blocked. The violation names the datasets, merge policies, audiences and destinations involved, in a lineage graph.

    This is the state a new sandbox is in. Adobe: “All data usage policies (including core policies provided by Adobe) are disabled by default.”

    Enforcement is real once it is on. It is also a switch that someone has to find and flip – and nothing anywhere reports that it is off.

    Source: Data usage policies · retrieved 11 Sep 2026

    This is a defensible design – enforcement that blocked activations the moment you turned the platform on would make every implementation start with an outage. But it produces a specific and dangerous failure mode: nothing fails. An unenforced policy generates no errors, no warnings, no queue. Data labelled as restricted activates exactly as smoothly as data that is not. The only signal that governance is off is the absence of a signal, which is the hardest thing for any organisation to notice.

    The only signal that governance is off is the absence of a signal.

    Architecture check · Station 8 · Govern

    A brand-new sandbox. Labels are applied, marketing actions are defined, nobody has touched the policy screen. What is enforced?

    Your answer

    What Adobe documents

    All data usage policies, including the core policies provided by Adobe, are disabled by default, and an individual policy must be enabled manually to be considered for enforcement. Marketing actions alone restrict nothing – they “must be included in enabled data usage policies” to have any effect.

    Why it matters

    A labelling project can be completed, signed off and reported as done while enforcing nothing. The artefact looks identical either way: labels applied, actions defined, activations running. Only the policy screen tells you which it is.

    Source: Data usage policies · retrieved 11 Sep 2026

    What a data governance policy actually covers

    Three further facts decide whether the box, once opened, does what people assume it does.

    The consent gap

    Consent policies are a licensed capability, and they have a documented gap. They are available only with Healthcare Shield or Privacy & Security Shield. Their logic is the inverse of governance policies: Adobe describes consent policies as “inclusive in nature” – they determine which profiles may be included – while governance policies exclude labelled attributes from activation.

    And then this, from Adobe’s activation documentation: “Consent policy evaluation is currently not supported in exports to the three enterprise destinations – Amazon Kinesis, Azure Event Hubs, and HTTP API” – and therefore “profiles which have not consented to being targeted are included in the exports to these three destinations.”

    Three destinations in Adobe’s own catalogue, all of them common in enterprise architectures, where the consent check does not run. Adobe documents this openly. That is to its credit, and it does not make the page any less worth reading before you connect one.

    A related limit on the collection side: in the Web SDK, only the data collection permission collect.val is automatically enforced. Every other consent signal you capture has to be enforced by something you build downstream.

    Architecture check · Station 8 · Consent

    Your architecture streams profiles to an HTTP API destination. Whose consent has been checked?

    Your answer

    What Adobe documents

    Consent policy evaluation is not supported in exports to Amazon Kinesis, Azure Event Hubs and the HTTP API destination, and Adobe states that profiles which have not consented to being targeted are included in exports to those three. Consent policies also require a Healthcare Shield or Privacy & Security Shield licence to exist at all.

    Why it matters

    These three are enterprise plumbing – the destinations a data team reaches for when a channel has no native connector. The enforcement point you are relying on has a documented boundary, and knowing where it runs is a precondition for designing around it. What follows from that is a question for privacy counsel, not for an architecture article.

    Source: Activate streaming profile destinations · retrieved 11 Sep 2026

    We looked at one case where a label actively blocks a paid-social activation – the version of this that works as intended.

    CD
    What I check first

    I ask for a screenshot of the policy list in the production sandbox, filtered to enabled, with the date visible. Not the design document, not the labelling plan – the screen. Then I list every destination against whether consent evaluation runs for it. Both take twenty minutes and they are the two questions I have never had answered from memory in a first workshop.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 8 · what has to be true
    • Someone can name, today, which data usage policies are enabled in your production sandbox.
    • Someone knows which destinations receive profiles whose consent was never evaluated.
    • The team knows that governance policies and access control are two different mechanisms with two different licences.

    Station 9 – Measure

    The return path is the thinnest station in this series, because it is the thinnest in the documentation. That is itself the finding.

    09

    Measure

    Turning what happened back into a signal the stack can use.

    Query Service · Customer Journey Analytics
    10 minAd-hoc query · execution cap

    What is published concerns querying:

    • Ad-hoc queries are capped at 10 minutes of execution time.
    • They return 100 rows in the interface and up to 50,000 through a client.
    • Batch queries run up to 24 hours.
    • The accelerated store allows four concurrent query slots.
    • Data Distiller is a separate package offering a subset of platform functionality.

    What the guardrails do not describe is the loop itself: how engagement outcomes become new signals, how quickly, with what identity. That has to be designed rather than configured – and it is the part of the architecture most often deferred to “phase two”, which is why so many programmes can describe what they sent and not what it changed.

    They can describe what they sent. Not what it changed.

    CD
    What I ask for before sign-off

    I ask one question at design time and write the answer into the architecture document: which event, written by which system, with which identity, tells this stack that the thing we sent worked. If there is no answer, the measurement layer is not late – it does not exist, and deferring the design is what makes it never arrive. Building it later is fine. Designing it later is not.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 9 · what has to be true
    • The measurement design exists before go-live, even if it is built after.
    • You can name the event, the writing system and the identity that closes the loop.
    • Nobody has confused “we report on sends” with “we measure outcomes”.

    When the truth lives in the warehouse

    For most enterprises the authoritative customer data is not in a marketing platform. It is in Snowflake, BigQuery, Databricks or Redshift, governed by a data team who have opinions about copies.

    Adobe’s answer is Federated Audience Composition, which builds audiences from data in an external warehouse without copying it. Its own FAQ is blunt about what moves: “Federated Audience Composition only stores metadata (schema descriptions). No customer data is transiting.” Seven warehouses are supported: Redshift, Azure Synapse, Databricks, BigQuery, Snowflake, Vertica Analytics and Microsoft Fabric.

    For anyone who has spent a year negotiating a data-copy exception with a security team, that is a significant capability. But there is a trade, and it is in the same FAQ rather than in any comparison chart.

    Architecture check · Warehouse

    You compose an audience federated against Snowflake. What identity resolution is applied to that data?

    Your answer

    What Adobe documents

    Federated Audience Composition does not use Identity Service. Joins across sources run on a key you define, not on the resolved identity graph – so federated data gets no cross-device stitching and no namespace priority. It gets exactly the matching quality of the key someone chose.

    Why it matters

    That is the real price of “we don’t copy anything”, and it is almost never the one discussed. The question is not copy or federate. It is which data needs resolved identity and which only needs a reliable key – two answers that point at two different architectures, and most enterprises need both.

    Source: Federated Audience Composition FAQ · retrieved 11 Sep 2026

    Not copy or federate. Which data needs an identity.

    Two operational notes: audiences imported this way expire after 30 days by default, and the capability requires Real-Time CDP and/or Journey Optimizer at Prime or Ultimate tier, plus a specific “Manage Federated Data” permission.

    CD
    What I check first

    I split the source inventory into two columns before anyone argues about copying: data that needs a resolved identity, and data that only needs a reliable key. Then I check that the key in the second column actually exists in both systems with the same format and the same case. That second check is where federated designs quietly lose their match rate, and it is cheaper to run now than after the first audience comes back half the expected size.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Warehouse · what has to be true
    • You know which data genuinely needs resolved identity, and which only needs a reliable key.
    • The join key exists in both systems with the same format and the same case.
    • Someone has accounted for the 30-day default expiry on imported federated audiences.

    What AI agents change

    Every vendor now ships agents, and the interesting question is not what they can do but what they can see.

    Adobe’s agentic layer is the Adobe Experience Platform Agent Orchestrator – spelled out; “AEP Agent Orchestrator” is not the product name. It is described as “the new agentic layer in Adobe Experience Platform” operating, in Adobe’s phrase, “with human oversight”. The named agents include the Audience Agent, Data Insights Agent, Experimentation Agent, Journey Agent, Product Support Agent, and the Adobe Marketing Agent for Microsoft 365 Copilot.

    What they draw on is described as “structured and unstructured data sources, including Adobe product documentation, customer metadata about business objects, and analytics data.”

    Read that list again for what is not in it. The knowledge base is documentation, metadata about business objects, and analytics – not the customer record itself. An agent that helps you build an audience works on the description of your data, not on the people in it.

    It works on the description of your data. Not on the people in it.

    In a regulated environment that is not a limitation to engineer around. It is the condition under which an agent is allowed to run at all – and it explains why an agent can tell you how your audiences are structured but not who is in them.

    One naming correction, because it circulates wrongly: Adobe Brand Concierge is not an Experience Platform agent. It is a separate product that consumes Experience Platform data; the agent operating inside it is the Product Advisor Agent. Treating it as part of the Agent Orchestrator roster is a category error that shows up in a lot of secondhand summaries.

    CD
    What I ask for before sign-off

    For any agent a vendor proposes, I ask for the documented description of its knowledge base and I read it for what is absent rather than what is listed. Then I ask which of the nine stations the agent depends on, because an agent reasoning over metadata inherits every gap in that metadata. I verify this per vendor and per agent – nothing here generalises across products, and the summaries circulating secondhand are wrong often enough to be worth ignoring.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · AI agents · what has to be true
    • You have read the documented description of what each agent’s knowledge base contains – and what it does not.
    • You know which of the nine stations each agent depends on.
    • Nobody is treating a separate product’s agent as part of the platform’s roster.

    The blueprint: twelve questions

    If you take one thing from this series into a meeting, take these. One per station, plus three that cut across.

    1. Which namespace is your person identity – and is it declared unique?
    2. How many identities does your average identity graph carry today?
    3. Has anyone checked email case normalisation across every source that writes one?
    4. Which of your audience rules reach further back than 24 hours?
    5. How many edge and streaming audiences are active, against Adobe’s recommended 150 and 500?
    6. For each real-time decision you have promised, is the data it needs projectable to the edge?
    7. What is the activation latency of every channel in your current campaign plan?
    8. Which data usage policies are enabled in your production sandbox – today, not in the design document?
    9. Which destinations receive profiles whose consent was never evaluated?
    10. What is your event volume per profile, against Adobe’s 5,000-event segmentation guardrail?
    11. Which data genuinely needs resolved identity, and which only needs a reliable key?
    12. Who signed off the primary identity on your profile-enabled schemas, and when?

    If eight of the twelve have an owner and an answer, you have an omnichannel architecture. If four do, you have an omnichannel roadmap. Both are legitimate positions. Confusing one for the other is what produces the eighteen-month stall.

    Frequently asked questions

    What is a data governance policy?

    A data governance policy is a rule that says what may be done with data carrying particular labels – and it is enforced at the point of activation rather than at the point of access. In Adobe Experience Platform, labels classify the data, policies describe the permitted use, and enforcement blocks a violating activation and shows the lineage behind it. The part teams miss: every data governance policy, including the core policies Adobe provides, is disabled by default and must be enabled by hand.

    Where does consent get enforced in a martech stack?

    At several points, and not uniformly. Consent can be captured at collection, stored on the profile, and evaluated at activation. In Adobe’s case, consent policies require a Healthcare Shield or Privacy & Security Shield licence, and Adobe documents that consent evaluation does not run for exports to Amazon Kinesis, Azure Event Hubs or the HTTP API destination. In the Web SDK, only the data collection permission is enforced automatically. Anything else has to be enforced by something you build.

    Do AI agents in a marketing platform see customer data?

    In Adobe’s documented architecture, the Agent Orchestrator’s knowledge base is described as product documentation, metadata about business objects, and analytics data – not the customer records themselves. An agent can describe how your audiences are structured without seeing who is in them. Verify this per vendor and per agent rather than assuming it generalises.

    How do a CDP and a data warehouse work together?

    Two patterns. Copy – move the data into the CDP, where it gets full identity resolution and profile treatment. Or federate – leave it in the warehouse and compose audiences against it without copying, as Adobe’s Federated Audience Composition does. The trade is explicit: federated data is joined on a key you define rather than through identity resolution, so it gets no cross-device stitching. Most enterprises end up running both patterns for different data.

    What is the difference between a customer data platform and a data warehouse?

    A warehouse stores everything for analysis, optimised for large scans across long histories. A CDP stores a working profile optimised for millisecond retrieval during a live interaction, with identity resolution and activation built in. In Adobe’s case they are literally different technologies – Cosmos DB for the profile store, Azure Data Lake Storage for the lake. Most enterprises need both, connected, rather than one replacing the other.

    Working on this?

    If enforcement in your sandbox turns out to be off, the next question is which policies you actually need – and that is a business decision before it is a technical one. Working that out with marketing, legal and IT in the same room is what I do, for teams in pharma, medical and finance.

    Get in touch →

    Related reading: Part 1 – nothing works until the data is one person · Part 2 – real time is a property of the rule · When a label blocks a paid-social activation · The Salesforce side: Data 360 starts with an “Allow All” policy.

    Figures in this article are drawn from Adobe’s public documentation and link to their source; all pages were retrieved on 11 September 2026. Guardrails change with releases, and Adobe distinguishes between system-enforced limits and performance recommendations – verify against your own tenant before designing to any number, including these. Nothing here is legal advice. Sources: Data Governance overview · Data usage policies · Data usage labels reference · Attribute-based access control · Activate streaming profile destinations · Query Service guardrails · Federated Audience Composition FAQ · Agent Orchestrator. Adobe, Adobe Experience Platform and Adobe Real-Time CDP are trademarks of Adobe Inc. This is an independent analysis; no partnership with or endorsement by Adobe.

  • MarTech under the hood, part 2: real time is a property of the rule, not the platform

    MarTech under the hood, part 2: real time is a property of the rule, not the platform

    MarTech under the hood · a series in three parts
    1. Part 1Collect · Model · Resolve
    2. Part 2 · you are hereUnify · Segment · Decide · Activate
    3. Part 3Govern · Measure · Warehouse · AI agents
    The 30-second brief

    Real time is not something a platform has. It is something one rule qualifies for – or silently does not.

    Unify›Segment›Decide›Activate
    • 14 daysThe profile the edge personalises from holds attributes on a rolling window, not your history. It is a projection, not the profile.
    • 24 hoursStreaming segmentation looks back one day. A rule that reaches further becomes an overnight audience without any warning.
    • 100Destinations per sandbox, system-enforced. The activation layer has a ceiling, and it is lower than most integration roadmaps assume.

    30 seconds to here · 5 minutes for the four stations.

    Part 1 ended with three stations that decide whether you have a customer at all: whether the data arrives, whether it is modelled so it can be used, and whether the fragments resolve into one person. Assume all three are working. You now have a resolved identity graph and no way to act on it.

    The next four stations are where acting becomes possible – and where the gap between what a platform can do and what your architecture has actually been configured to do gets widest. The recurring surprise in this half of the chain is that the same platform answers the same question in 350 milliseconds, in five minutes, or tomorrow morning, and nobody chooses which. The shape of the rule does. That is what real time segmentation actually is: not a capability you switch on, but a tier your rule qualifies for.

    As in part 1, Adobe Experience Platform is the worked example because Adobe documents its limits publicly, every figure links to the page it came from, and all pages were retrieved on 11 September 2026.

    Part 2 · the middle four stations1 / 4

    Resolved fragments become a union view, and a merge policy decides which value wins where two fragments disagree. The structural fact behind every limit that follows: the profile store and the data lake are different technologies for different questions. The profile is tuned for millisecond lookups, and it is guardrailed at 5,000 experience events per profile for segmentation.

    Source: Real-Time Customer Profile guardrails

    The same rule can be evaluated three ways – edge in up to 350 milliseconds, streaming in up to five minutes, batch every 24 hours – and the platform picks based on how the rule is written. Streaming segmentation has a lookback window limited to one day. Write a rule about the last 25 hours and it becomes an overnight audience with no warning.

    Source: Streaming segmentation

    A decision can happen at the hub, which holds the historical data and rich profile context, or at the Edge Network, which sits next to the customer. What lives at the edge is only the audience memberships, identities and attributes necessary for personalization – held on a 14-day rolling window. A decision needing full purchase history cannot run at the edge, because the history is not there.

    Source: Edge and hub comparison

    Destinations are capped at 100 per sandbox, a system-enforced limit. Batch destinations export once daily or every 3, 6, 8 or 12 hours, and files split automatically at 5 million rows. Adobe advises setting an activation start time at least one hour after completing the flow. On the batch path, the distance between “the audience is ready” and “the channel has it” is measured in hours.

    Source: Destinations guardrails

    1. 04 Unify
    2. 05 Segment
    3. 06 Decide
    4. 07 Activate

    Station 4 – Unify

    Once identities are resolved, the fragments have to become a profile. Adobe calls the result a union view, made possible by a union schema – “a merged view of all profile fragments for that entity across datasets”. Where two fragments disagree, a merge policy decides which wins, either by dataset precedence or by timestamp. You get five merge policies, and exactly one default per class.

    04

    Unify

    Fragments across datasets become one readable profile.

    Real-Time Customer Profile
    5,000Events per profile · performance

    The important structural fact is that this profile does not live where your history lives. Adobe states it directly: “The Profile store uses a Microsoft Azure Cosmos DB infrastructure and the Experience Platform Data Lake uses Microsoft Azure Data Lake storage.” Two stores, two technologies, two purposes – one built for millisecond lookups during a live interaction, one built for analytical scans across years.

    That split explains every limit that follows.

    Five thousand events. Adobe’s performance guardrail is 5,000 experience events per profile for segmentation; beyond that, only the most recent 5,000 are used. For a monthly newsletter audience, that is a lifetime. For an app with daily sessions, it is a few months.

    Size caps that drop data. A profile record over 100 KB and an event over 10 KB are not truncated or flagged – Adobe’s wording is that they “will be dropped.” Ingestion continues. The record does not arrive.

    Architecture check · Station 4 · Unify

    An experience event arrives at 14 KB. What does the profile store do with it?

    Your answer

    What Adobe documents

    Events are capped at 10 KB and profile records at 100 KB. Beyond that, Adobe’s guardrails page says records “will be dropped” – not truncated, not rejected loudly. The ingestion job continues and reports success.

    Why it matters

    Rich event payloads grow over a project’s life: one more nested object per release, one more product array. The day an event type crosses 10 KB, it stops contributing to the profile, and the only visible symptom is an audience that gets smaller for no stated reason.

    Source: Real-Time Customer Profile guardrails · retrieved 11 Sep 2026

    Expiry by default. Pseudonymous profiles – the ones with no known person attached – expire after 14 days in production and 3 days in development sandboxes by default. The floor for experience event expiration is one day, and expired data is “permanently deleted and cannot be restored.”

    No retroactive fill. When you enable a dataset for the profile, the data already sitting in it does not flow in. Adobe’s guidance: “it is recommended that you re-ingest any existing data to have it contribute to customer profiles.” Every team discovers this the week after go-live.

    The profile is not an archive. It is working memory.

    That conclusion is worth stating plainly, because it contradicts how the profile is usually sold. The long history lives in the data lake – different store, different retention (the lake floor is 30 days and the ceiling ten years), different questions. Asking the profile a five-year question is a category error, not a configuration problem.

    CD
    What I check first

    I ask for the event count per profile at the 95th percentile, not the mean, and I ask for it per event type. Then I hold that number against the 5,000-event guardrail and against how far back the audience rules actually reach. The mismatch between those two is the finding, and it is usually in the clickstream dataset rather than the one everyone is watching.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 4 · what has to be true
    • You have decided what the profile needs to remember in order to act.
    • Everything beyond that has an accepted home somewhere slower.
    • Your event volume per profile is a number someone has actually calculated.

    Station 5 – Segment

    Segmentation is where “real time” stops being a marketing word and becomes a property you can check.

    Adobe separates two things that are usually conflated. An audience is “a collection of people who share similar behaviors and/or characteristics.” A segment definition is “the rule set Adobe Experience Platform uses to describe key characteristics or behavior of a target audience.” The rule is the thing you write. The audience is what comes out.

    05

    Segment

    One rule, three possible evaluation speeds – chosen for you.

    Segmentation Service
    24 hStreaming lookback · documented

    The same rule can be evaluated three ways, and the platform chooses which, based on how the rule is written: “If the query matches any of the query types in the following table, it will automatically be evaluated using edge segmentation.” Edge segmentation processes an inbound event in up to 350 milliseconds. Streaming segmentation takes up to 5 minutes to qualify a profile. Batch segmentation runs every 24 hours. Three orders of magnitude apart, on one platform, decided not by a setting but by the shape of your rule.

    Real time segmentation and the twenty-four-hour edge

    Which brings us to the single most consequential sentence in the segmentation documentation: “The lookback window is limited to one day.” Streaming segmentation considers events from the last 24 hours. Anything older “will be processed in the subsequent batch job.”

    The rule decides the speed23 h25 h lookback
    Qualify the profile if it viewed the pricing page in the last 23 hoursin the last 25 hours
    StreamingBatchUp to five minutes to qualify a profile.Every 24 hours. Same rule, one evaluation tier lower.

    Inside the lookback window. Streaming segmentation considers events from the last day.

    Two hours further back and the rule has silently become an overnight audience. Nothing turns red, nothing is rejected, and the audience still works – it just answers tomorrow morning.

    Source: Streaming segmentation · retrieved 11 Sep 2026

    The same boundary appears in the ineligibility list. Multi-entity queries, combinations of a single event with an inSegment condition, “ignore year” time constraints, and single events with no time window at all are not eligible for streaming. Edge evaluation is narrower still.

    Architecture check · Station 5 · Segment

    You change an audience rule from “in the last 23 hours” to “in the last 25 hours”. What happens?

    Your answer

    What Adobe documents

    Streaming segmentation’s lookback window is limited to one day, and events older than that “will be processed in the subsequent batch job”. The evaluation method is chosen from the shape of the rule, not from a setting, so the change takes effect without anyone selecting it.

    Why it matters

    The campaign built on that audience assumed immediacy and now runs a day late. Nobody is told why, because from the platform’s point of view nothing went wrong – a rule was written and the correct evaluation method was applied to it.

    Source: Segmentation FAQ · retrieved 11 Sep 2026

    Real time is not a property of your platform. It is a property of the rule.

    Three more figures that campaign plans routinely assume away.

    Then the capacity envelope, all of it recommended rather than enforced: 4,000 active audiences per sandbox, of which 150 edge and 500 streaming. The real-time tiers are the scarce ones – the edge recommendation is a small fraction of the total. Adobe also recommends a maximum audience membership of 30 percent, which is a polite way of saying that an audience covering a third of your customers has stopped being an audience and become a mailing list.

    CD
    What I check first

    I take every audience the business calls time-critical and check each one against the streaming eligibility list line by line – lookback window, multi-entity query, nested segment condition, missing time window. Then I count how many edge and streaming audiences are live against the recommended 150 and 500. Both checks take an afternoon, and I have not yet run them without finding at least one audience that answers a day later than the brief assumes.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 5 · what has to be true
    • Every audience you consider time-critical has been checked against the streaming eligibility list.
    • Someone owns the count of edge and streaming audiences against Adobe’s recommended 150 and 500.
    • The campaign calendar accounts for the hour a new segment definition needs before it is available.

    Station 6 – Decide

    Orchestration is usually discussed as a capacity question: how many journeys, how many messages, how fast. That is the less interesting question. The constraint that actually shapes a decisioning architecture is not how much it can do. It is what it can see at the moment it decides.

    Adobe’s architecture has two places where a decision can happen. The hub is the central data centre that “contains all the historical data and rich profile context.” The Edge Network is the distributed layer – seven regions – that sits next to the customer.

    06

    Decide

    Choosing the next action – with whatever is visible at that location.

    Journey Optimizer · Edge Network
    14 daysEdge profile · rolling

    What lives at the edge is stated precisely: “The only data that lives on the Edge Network are the audience memberships, profile identities, and attributes necessary for personalization.” Not the history. Not the full profile. Memberships, identities, and the attributes needed for this interaction – held for 14 days on a rolling basis, reset every time the profile is accessed.

    Architecture check · Station 6 · Decide

    A next-best-action needs three years of purchase history and has to answer in 350 milliseconds. What is the problem?

    Your answer

    What Adobe documents

    The only data on the Edge Network is audience memberships, profile identities, and attributes necessary for personalization, held on a rolling 14-day window. The historical data and rich profile context live at the hub. A decision requiring the history has to be made where the history is.

    Why it matters

    A 350-millisecond decision and a full-history decision are not the same decision at two speeds. They are different decisions, made in different places, with different information – and asking for both at once is a contradiction worth catching in a design workshop rather than in a performance review.

    Source: Edge and hub comparison · retrieved 11 Sep 2026

    Two different decisions. Not one decision at two speeds.

    A next-best-action that needs the full purchase history cannot run at the edge, because the purchase history is not there. One that needs only “is this person in the high-value audience” can, because that membership is exactly what gets projected outward. One operational detail that surprises people in testing: the edge has a cold start. Adobe notes that “the first few evaluation calls may result in a timeout.” A first test that fails is not necessarily a broken configuration.

    The orchestration side of an authenticated portal shows what this looks like when the same profile has to surface across a website, a service console and a field channel.

    CD
    What I ask for before sign-off

    For every real-time decision someone has promised, I write down the attributes it reads and then check each one against what is actually projected to the edge – not against what exists in the profile. The two lists are different, and the difference is where the demo works and production does not. If an attribute on that list has no projection path, the promise gets rewritten before the journey is built.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 6 · what has to be true
    • For every real-time decision you have promised, someone has confirmed the data it needs is projectable to the edge.
    • Present in the profile is not the same test as projectable to the edge, and the difference is written down.
    • The team knows that a first edge evaluation call may time out by design.

    Station 7 – Activate

    Activation is the step where a resolved, unified, segmented profile finally reaches a channel. It is also where the timing assumptions in campaign plans meet documented reality.

    Destinations are capped at 100 per sandbox – a hard, system-enforced limit. Each instance should carry no more than 250 audiences and 50 mapped attributes, and bulk activation of more than 50 audiences at once “is not supported”.

    07

    Activate

    Getting the audience out to the channel that will use it.

    Destinations
    100Destinations per sandbox · hard

    The timing splits by destination type, and the spread is wide.

    • Batch, file-based destinations run one full export daily, or incremental exports every 3, 6, 8 or 12 hours. Files split automatically at 5 million rows – worth knowing before someone writes an import job expecting a single file.
    • Streaming destinations have no documented limit on messages per second to partner API endpoints.
    • Enterprise destinations target under 10 minutes, 95 percent of the time, at under 10,000 requests per second per instance.

    And one piece of guidance that belongs in every campaign brief: Adobe advises setting an activation’s start time at least one hour after completing the activation flow – a buffer Adobe’s own scheduling guidance builds in.

    Architecture check · Station 7 · Activate

    The brief says: build the audience this morning, have it live in the file-based channel this afternoon. Is that realistic?

    Your answer

    What Adobe documents

    A new segment definition takes up to one hour to become available. Adobe advises a further hour between completing the activation flow and the start time. Batch, file-based destinations export once daily or on a 3, 6, 8 or 12-hour incremental cycle. Streaming and enterprise destinations are a different order of magnitude – under 10 minutes, 95 percent of the time.

    Why it matters

    Which path a given channel uses is decided at integration time, not campaign time. By the moment someone writes the brief, the latency of that channel is already fixed – so the calendar has to be built on the numbers rather than on the assumption of immediacy.

    Source: Destinations guardrails · retrieved 11 Sep 2026

    Ready and delivered are hours apart.

    Stack it up. A new segment definition takes up to an hour to become available. Adobe advises a further hour before an activation starts. A batch destination exports on a three-hour cycle at best. The distance between “the audience is ready” and “the channel has it” is measured in hours on the batch path and in minutes on the streaming one – and which path a given channel uses is a decision made at integration time, not campaign time.

    CD
    What I check first

    I build one table before any campaign planning starts: every channel in the plan, its destination type, and its documented activation latency. Then I count the live destinations against the 100-per-sandbox cap, because that number is hard and nobody tracks it until an integration fails to save. The table takes an hour and it settles arguments that otherwise run for weeks.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 7 · what has to be true
    • Every channel in your plan has a known activation latency.
    • The campaign calendar is built on those numbers rather than on the assumption of immediacy.
    • Someone tracks the live destination count against the 100-per-sandbox limit.

    What part 3 covers

    These four stations decide whether you can act, and how fast. What they do not decide is whether you are allowed to – or whether anyone will be able to tell afterwards what it changed.

    Part 3 takes the last two stations and the two questions that sit around them: Govern, where the box drawn in every architecture diagram ships switched off; Measure, the thinnest station in the documentation and the one most often deferred to phase two; the warehouse question, where federating instead of copying costs you identity resolution; and what AI agents actually see when they run on top of all of it.

    Frequently asked questions

    What is real time segmentation?

    Real time segmentation is audience evaluation that happens while the interaction is still running, rather than in an overnight batch. In Adobe Experience Platform it is not a setting: the platform picks edge, streaming or batch evaluation from the shape of the rule. Edge processes an inbound event in up to 350 milliseconds, streaming qualifies a profile in up to five minutes, and streaming has a lookback window limited to one day – so a rule reaching further back silently becomes a batch audience.

    How is a unified customer profile actually assembled?

    Data arrives in multiple datasets as profile fragments. Identity resolution determines which fragments belong to the same person. A union schema merges them into a union view, and a merge policy resolves conflicts – either by dataset precedence or by most recent timestamp. The result is a single profile the channels can read, subject to hard size caps and a recommended ceiling on events per profile.

    When is an audience evaluated in real time instead of overnight?

    It depends on how the rule is written, not on a setting. Adobe’s streaming segmentation has a lookback window limited to one day; rules referencing anything older fall back to the subsequent batch job. Multi-entity queries, certain nested-segment conditions and rules with no time window are also ineligible for streaming. Edge evaluation, the fastest tier at up to 350 milliseconds, is narrower still.

    What is the difference between edge and hub decisioning?

    Location and visibility, not speed alone. The hub holds the historical data and rich profile context. The Edge Network holds only audience memberships, profile identities and the attributes needed for personalization, on a rolling 14-day window. A decision that needs the history has to be made at the hub; one that needs only a membership flag can run at the edge in a few hundred milliseconds.

    What has to be true before personalization works across channels?

    Five things, in order: identities resolved into one graph; fragments merged into one profile; an audience rule whose evaluation speed matches the use case; a destination whose activation latency matches the moment; and governance policies actually enabled. A break at any one of the five produces personalisation that is wrong, late, or outside the boundaries you assumed were enforced – rather than personalisation that fails visibly.

    Working on this?

    If you run the ten-minute check on your own audiences and the answer is uncomfortable, the fix is usually a rewritten rule, not a bigger licence. Telling those two apart before the renewal conversation is the work I do, for teams in pharma, medical and finance.

    Get in touch →

    Related reading: MarTech under the hood, part 1 – nothing works until the data is one person · What omnichannel marketing means – four roles, four answers · HCP portal, part 3 – the orchestration architecture.

    Figures in this article are drawn from Adobe’s public documentation and link to their source; all pages were retrieved on 11 September 2026. Guardrails change with releases, and Adobe distinguishes between system-enforced limits and performance recommendations – verify against your own tenant before designing to any number, including these. Sources: Real-Time Customer Profile overview · Real-Time Customer Profile guardrails · Pseudonymous profiles · Experience event expirations · Segmentation Service overview · Streaming segmentation · Edge segmentation · Segmentation FAQ · Edge and hub comparison · Edge profiles · Destinations guardrails. Adobe, Adobe Experience Platform and Adobe Real-Time CDP are trademarks of Adobe Inc. This is an independent analysis; no partnership with or endorsement by Adobe.

  • Most of What Your Platform Can Do, Nobody Ever Showed You

    Most of What Your Platform Can Do, Nobody Ever Showed You

    The 30-second overview
    Between what a platform can do and what teams actually use, there is a gap — and it runs in both directions. Three documented tools close it.
    Validate → Correct → Activate → Measure impact
    • Journey Dry run — does the journey run the way we built it? Real audience, no sending, volumes per node.
    • Simulation — what happens to one specific person? Path trace and coverage across every branch.
    • Holdout — did the campaign achieve anything? A group that receives nothing.

    The consensus — and where it stops

    At DigIT Pharma in Berlin in early September, one line ran through almost every conversation: omnichannel is rarely a technology problem, it is an organisational one. Dr Kati Wegner of Pfizer put it that way ahead of the event. BCG’s report Cracking the Omnichannel Code quotes a respondent with the same finding: “The biggest challenge is never technical. It is change management.”

    There is nothing to argue with here. It is true. But “organisational” sounds like alignment and change communication. And that is where the discussion stops. In fact the problem has a very concrete shape, and that shape can be described.

    What actually happens in the workshop

    A new system has gone in. There is a workshop. Marketing describes what it needs — and in doing so describes what it already knows: an audience, an asset, a send date, a report afterwards. The platform side listens and says: doable.

    Everyone agrees on a standard. Email deployment, one workflow, maybe two variants. Box ticked. The topic is considered closed.

    And with that, the frame for the next three years is set. Not by a decision, but by the absence of one. What the platform could do beyond that never came up — on either side of the table.

    I see this pattern repeatedly in my own workshops: teams frame requirements along the capabilities they already know. Options outside that frame are rarely examined concretely — the business unit does not know how the pieces interlock or what depth a CRM system offers. The platform side knows the capabilities but not the campaign plan, and so proposes nothing that nobody asked for.

    Three reasons keep this stable. Nobody ever demonstrated it. A release note does not do that. Neither does a click-through training. Demonstrating means: on your own use case, with your own data. The data was never prepared. Many of the interesting capabilities need fields, events or timestamps that were never defined in the batch feed or the API — because at the moment of definition, nobody knew they would be needed. You can get it wrong. And a mistake in HCP communication is expensive. So you stay with the standard, which reliably works.

    The third reason is the most interesting, because it is the only one the platforms already ship an answer for.

    Two questions before the send. One after.

    The answer consists of three tools. Two of them answer what will happen. The third answers whether it made any difference — and that can only be asked after launch. In my projects, I have yet to meet any of the three as a fixed part of a campaign process.

    Question 1 · Does the journey run the way we built it?

    Adobe Journey Optimizer has Journey Dry run for this. The journey runs on real production profiles, but: “Profiles in Dry run mode are not contacted, ensuring no risk of sending communications or impacting live data.” Channel nodes for email, SMS and push are not executed; custom actions are disabled.

    What a campaign team sees before go-live: how many profiles arrive at each node, which branch actually fires, where the audience drains away. The numbers sit directly in the journey canvas, at the nodes where the decisions are made.

    That is the difference between “we assume roughly 5,000 profiles will take the email path” and “we checked”.

    Animation · Journey Dry run, chapter A

    5,000 matching profiles. The email path stays empty anyway.

    This example shows how a faulty condition changes audience distribution — and how a second validation run makes the correction visible.

    Illustrative demo with synthetic data. What is being checked is path distribution, not actual delivery or campaign impact.

    What happens in those 70 seconds: A mismatched spelling in the channel rule — EMAIL in the profile, E-MAIL in the query — pushes 5,000 matching profiles into the default path. Nothing fails technically; the inspector shows the cause right at the node. After the correction, run B confirms the expected distribution. 1,000 profiles remain without a suitable channel — a checkpoint of its own, not a malfunction.

    A content approval does not catch this error — it reviews the message, not the condition. The delivery report afterwards does not flag it either: it shows what went out, not what should have gone out. The gap only becomes visible when expected and actual path distribution are compared — which is exactly where the dry run looks.

    The one limitation worth stating: according to Adobe’s documentation, Journey Dry run is currently a Limited Availability feature, “being rolled out globally over time.” It is documented, but not automatically available in every instance. If you plan around it, clear that with your Adobe contact first.

    Further limits, briefly: after 14 days the journey automatically reverts to draft. The profiles count against the engageable-profiles quota, the journey against the live-journey quota. Reporting values disappear once the dry run is stopped. Wait activities are off by default and can be switched on — but that does not make the dry run a complete check of timing behaviour: for journeys with a scheduled read-audience activity, Adobe anchors the schedule to the moment of dry-run activation, not to the configured time.

    Question 2 · What happens to one specific person?

    That is a different question, and it has a different tool. The dry run delivers volumes. It does not tell you why this particular physician ended up in this particular branch.

    For that there is Journey Simulation: temporary simulated users whose path through the journey is logged step by step — with timestamp, branching decision and errors. And, the underrated part in my view: a coverage view showing which paths the run actually touched.

    This is a question I rarely hear in campaign teams: have we ever run through every branch of our journey — or only the one we had in mind?

    Adobe has since documented how to choose between the three validation methods:

    MethodDataSends real messages?Use for
    Journey Simulationtemporary simulated usersyes — to the execution addresses of the simulated usersfast iteration on new branches
    Journey Test modepersistent AEP test profilesyes — to the real inboxes of the test profileschecking branch and message logic manually
    Journey Dry run (Limited Availability)real production audienceno, actions are skippedreach and branching at real scale

    The sentence that settles the most common worry is in the documentation verbatim: “None of these methods contact real customers.” Two of the three do send messages — but to addresses you entered yourself.

    Adobe’s own recommendation: simulation while building, dry run immediately before publishing. Test mode when you want to walk through manually with real, persistent test profiles.

    Question 3 · Did the campaign achieve anything?

    The first two questions concern execution. This one concerns value — and it can only be answered after launch.

    A campaign report says 3,900 delivered and a 31 percent open rate. What it does not say: how many of those physicians would have booked the appointment anyway?

    No report answers that — only a comparison does. In Journey Builder that runs through the Random Split activity: “Contacts are grouped in up to 10 configurable paths that you create.” One of those paths stays empty. Whoever lands there receives nothing.

    Under suitable conditions — random assignment, stable group membership across the runtime, identical measurement on both sides — the difference between the two groups is an estimate of the campaign’s incremental effect. Not an exact number, but one with an uncertainty you can quantify. Which is more than an open rate will ever deliver.

    Two limits: “Each path is populated randomly, so its distribution of contacts often doesn’t match the configured percentage exactly.” Configure five percent on 800 physicians and you will not get 40. And five percent is not a universal figure — how large the control group needs to be depends on how small an effect you still want to be able to detect.

    What each stack delivers — and where one stops

    Anyone working in both worlds should know this comparison before promising a team anything.

    Level 1 · Does the content render correctly for this person? Subscriber Preview and Test Send renders the email with the data of one selected subscriber: “Marketing Cloud Engagement uses the selected subscriber’s data strictly to render personalization and dynamic content.” The test send goes exclusively to the addresses in the Recipients tab. Limits: test sends count against your purchased send allowance, and nothing is delivered to a status of unsubscribed, bounced or held.

    Level 2 · Does a contact take the right path? Journey Testing in Journey Builder, with a data extension as entry source: “configure a test to simulate a journey with real contacts”, and specifically “without sending messages to them or affecting tracking or reporting”.

    Important for expectation-setting: the test send is off by default — “The test is set to Do Not Send Messages by default” — but it can be switched on with Send Only Test Messages and a stored address. So: the same idea as Adobe’s, with the default inverted.

    Limits: up to ten contacts per test. “Test mode simulates random and decision split activities, but ignores wait times and contact entry settings.” Custom activities are skipped. The method is not available for single-send journeys.

    Level 3 · How many reach which node, at real scale? Here there is no documented equivalent. Journey Builder has no mode that runs the full production audience through and reports node counts without sending.

    What you do instead: count the entry data extension, reconstruct the branches against the consent, frequency and approval fields by query, and model the volumes by hand. It works — it is simply labour instead of a button, and it assumes someone knows which fields actually drive the branching in the first place.

    QuestionAdobe Journey OptimizerSalesforce Marketing Cloud
    Does the content render correctly?Journey Test modeSubscriber Preview and Test Send
    Does the contact take the right path?Journey Simulation · Test modeJourney Testing, up to 10 contacts
    Sending during the testsends to your own test addressesoff by default, can be enabled
    How many reach which node, at real scale?Journey Dry run (LA)no equivalent — manual work on the data layer
    Is timing checked too?partially, with wait activities enabledno, wait times are ignored

    This table is too small for a platform decision, and it is not meant to be one. It is meant for a different question: how much certainty a team in either stack can actually have before it hits send.

    And two questions for the data layer

    The three tools above are documented. Two further points are not features but questions — and both can be answered without a project.

    Which events do we even have available as a triggerable event — and with what delay? What lands in the customer data platform is not automatically available as a trigger. Between “the event is captured” and “the journey can react to it” sit schema, ingestion type and cadence. The answer usually surprises in both directions.

    What actually becomes available at portal login? When an HCP signs in to a portal, a pseudonymous visitor can become a known profile. Which behaviour is then joined to the CRM record is decided by the identity model, the integration and permitted data use — none of it happens automatically. Which attributes become usable is an architecture question. But it is above all a marketing question, because what personalisation is possible hangs on it.

    What the numbers say

    The BCG report draws on a benchmark study of more than 100 senior omnichannel leaders in biopharma and medtech. Two lines from it fit the pattern: 60 percent are not satisfied with their next-best-action engine, and 90 percent follow its recommendations in less than 60 percent of cases. Alongside that: 97 percent consider omnichannel business-critical, 90 percent struggle with data silos, and 95 percent cannot clearly measure omnichannel ROI.

    My explanation — and it is an explanation, not proof: an engine decides on data that was often never prepared for that purpose, and its suggestions are hard to verify as long as the validation tools are not part of the process. The numbers show the pattern. They do not establish the cause.

    The objection you have to raise yourself

    You can read all of this differently: perhaps the recommendations are simply bad, and the team is right to ignore them. That would be a quality problem, not a knowledge problem.

    The objection is fair. It only moves the question one level down: why are they bad? An engine decides on the basis of the data it sees and the rules somebody wrote. If the profile is incomplete and the rule was never run against real data, it will reliably produce weak suggestions. That cannot be proven from the figures. It can be checked, though — on a single concrete journey.

    Checkpoint · what you should know before the next send
    • Has the current journey ever been run against the real audience, without sending?
    • Is Journey Dry run even enabled in your instance?
    • Does anyone know how many profiles arrive at node four — or is it an estimate?
    • Is there a control group, or is the open rate your only evidence of impact?
    • Who writes this sequence into the campaign process?

    What the layer underneath can do

    This, as I see it, is the actual job of a MarTech or omnichannel architect, and it has three parts.

    Make it visible. Not as a feature list, but on the team’s own use case, with their own data, in a session where the marketing team sees for itself what comes out. A dry run on your own audience convinces differently than a screenshot from a demo environment.

    Make it safe. The most common reason an idea never gets tried is fear of the mistake. Dry run and simulation exist for exactly that. Build those tools into the campaign process and you take the risk out of experimenting — which removes the strongest argument for the standard.

    Create the preconditions before anyone asks. The interesting capabilities almost always fail at the same point: a field, a timestamp or an event that was never defined in the interface. Whoever owns the data layer and knows what marketing might want next year creates those fields in advance. That is the difference between a platform that meets requirements and one that enables them. And where a tool is missing, like the dry-run equivalent in Marketing Cloud, the job is to rebuild it on the data layer — rather than telling the team it cannot be done.

    The question to take away

    Not: do we have the right platform? But: who in your organisation shows the business units what the system can do — and who makes sure they can try it out safely?

    If the answer is nobody, that explains more than any technology evaluation. And it also explains why, three years on, the same email deployment is still running — the one everyone agreed on back in that workshop.

    Is this on your plate?

    If you want to know what your journey actually produces before the send — and what your stack can and cannot do about it — let us look at one concrete campaign together.

    Review one concrete journey together

    Sources: Adobe Experience League on Journey Dry run and on choosing a validation method; Salesforce Help on Journey Testing and Random Split; all retrieved 09/2026. Boston Consulting Group, “How Biopharma and Medtech Leaders Can Get Omnichannel Right”, June 2025, benchmark study of more than 100 senior omnichannel leaders in biopharma and medtech. DigIT Pharma 2026, Berlin, 9–10 September 2026.

    What omnichannel means for marketing, analytics, leadership and architecture respectively is covered in the foundations article → What omnichannel marketing really means

  • MarTech under the hood, part 1: nothing works until the data is one person

    MarTech under the hood, part 1: nothing works until the data is one person

    MarTech under the hood · a series in three parts
    1. Part 1 · you are hereCollect · Model · Resolve
    2. Part 2Unify · Segment · Decide · Activate
    3. Part 3Govern · Measure · Warehouse · AI agents
    The 30-second brief

    Omnichannel is not a channel strategy. It is one question about one object: does every channel read the same customer profile?

    Collect›Model›Resolve
    • 7 daysThe staging area everyone hands files through deletes them on a fixed schedule. It is not storage.
    • FixedThe primary identity of a profile-enabled schema cannot be changed after the first production load. It is the one decision you cannot take back.
    • 50An identity graph holds fifty identities, then deletes the oldest to make room. No error is raised, and the profile drops out of segmentation.

    30 seconds to here · 4 minutes for the three stations.

    Every omnichannel programme starts with the same slide: a customer in the middle, channels arranged around them, arrows pointing inward. It is a good slide. It describes an outcome, not a system, and the gap between those two is where most programmes quietly stall.

    Here is the test that separates the two. Multichannel and omnichannel differ in exactly one place: whether every channel reads the same profile, or whether every channel keeps its own list. Everything else – the arrows, the word “seamless”, the customer in the middle – follows from that one architectural fact. If your email platform holds one list, your web personalisation another, and your call centre a third, you are running multichannel with better vocabulary.

    Making all channels read the same profile is not a procurement decision. It is nine of them, each with a technical consequence that shows up eighteen months later. This series walks all nine, using Adobe Experience Platform as the worked example – not because the answer is always Adobe, but because Adobe documents its limits publicly, and documented limits are the only way to talk about this honestly. Every figure links to the page it came from. Part 1 takes the first three – collection, the data model and identity resolution – the stations that decide whether you have a customer at all, and the identity graph where they either hold or quietly stop holding.

    Four roles inside a company mean four different things when they say “omnichannel” – we mapped those four answers separately. This article is the layer underneath all four.

    Part 1 · the first three stations1 / 3

    Batch ingestion moves files, streaming ingestion moves events – and they are not two speeds of the same thing. They land in different stores with different limits: streaming into the profile is guardrailed at 1,500 requests per second, into the data lake at 4,000–5,000. The faster path is the narrower one. And the Data Landing Zone, the staging area most teams hand files through, deletes everything after seven days.

    Source: Data ingestion guardrails

    XDM composes a schema from a class plus field groups, and the class decides whether the data describes things as they are or things as they happened. Schema evolution is purely additive: you may add fields, never remove or rename them. One item on the prohibited list matters more than the rest – changing the primary identity on a profile-enabled schema once data has been ingested.

    Source: XDM schema composition

    Identity Service links a customer’s identifiers into an identity graph. The graph holds fifty. On the fifty-first, the oldest identity is deleted first-in, first-out – cookie identifiers before durable ones – and a profile above the cap is excluded from segmentation, exports and lookups. Namespace priority does not protect you, and a graph that has already collapsed is only repaired when it is next updated.

    Source: Identity Service guardrails

    1. 01 Collect
    2. 02 Model
    3. 03 Resolve

    The stack, not the tool

    The first confusion to clear up is the difference between a platform and an application built on it.

    Adobe lists the applications built on Experience Platform as Real-Time CDP, Real-Time CDP B2B Edition, Journey Optimizer, Customer Journey Analytics, Journey Orchestration, and Mix Modeler. The platform underneath handles ingestion, the data model, identity, the profile, audiences, governance, and activation. The applications consume all of that.

    This matters because of how buying decisions get described internally. “We bought Journey Optimizer” describes an application. It says nothing about whether the data underneath it is modelled, resolved, governed, or activatable – and those four are what decide whether the application does anything useful. The same separation exists in every stack, under different names and in a different arrangement.

    One more piece of vocabulary before the stations, because it recurs at almost every one: the sandbox. It is the isolation boundary – a virtual partition of the platform with its own data, its own configuration, its own limits. Almost every number in this article is defined per sandbox. It is the most consequential invisible line in the architecture, and it appears on none of the diagrams.

    Station 1 – Collect

    Data arrives two ways, and they are not two speeds of the same thing. They are two paths into two different stores with two different sets of limits.

    Batch ingestion moves files. Streaming ingestion moves events. The published timings sit further apart than the word “streaming” suggests.

    Note what that means: the sub-minute figure is an observation in Adobe’s troubleshooting guide rather than a published latency, while the hour into the analytical store is documented. Two answers to “do we have that data yet”, both correct, depending on who is asking.

    01

    Collect

    What arrives, and by which of the two paths it travels.

    Batch and streaming ingestion
    7 daysData Landing Zone · hard

    The throughput numbers run the same way round. Adobe’s performance guardrail for streaming into the profile and into streaming segmentation is 1,500 requests per second; into the data lake it is 4,000–5,000. The faster path is the narrower one. That is not a flaw, it is the trade – real-time processing costs headroom.

    Architecture check · Station 1 · Collect

    Your team uses the Data Landing Zone as a handover point between two systems. How long does a file stay there?

    Your answer

    What Adobe documents

    Seven days, without exception: “Experience Platform enforces a strict seven-day expiration time on all files and folders uploaded to a Data Landing Zone container. All files and folders are deleted after seven days.” It is a staging area, not storage – and the difference has ended more than one handover process quietly.

    Why it matters

    Every handover built on the assumption that a file waits until it is fetched has a seven-day deadline attached to it that nobody wrote down. It surfaces as a gap in a report on day eight, not as an error in an ingestion log.

    Source: Data Landing Zone · retrieved 11 Sep 2026

    Two more figures worth carrying into any implementation plan.

    • Batch into the profile. Adobe’s performance guardrail is 90 combined profile and event batches per sandbox per day – enough for a scheduled architecture, not enough for one that treats batch as a retry mechanism.
    • The staging area. The Data Landing Zone, which many teams use as an informal handover point between systems, deletes everything after seven days: “Experience Platform enforces a strict seven-day expiration time on all files and folders uploaded to a Data Landing Zone container.”

    Your staging area is not storage.

    A note on Adobe’s own documentation here, because it is instructive. The guardrails page states a maximum of 25,000 files and 1 TB per batch. The batch ingestion overview page states 1,500 files and 100 GB for the same thing. Both are current. When a vendor’s own two pages disagree, the practical answer is to design well inside the smaller number and to verify against your own tenant rather than against any article – including this one.

    CD
    What I check first

    Before anyone talks about journeys, I ask for the source inventory with two extra columns: batch or streaming, and the name of the person who chose. Then I hold that column against the latency each downstream use case assumes. Where the two disagree, I have found the problem before the first journey is built – and at that point it is an afternoon of work rather than a migration.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 1 · what has to be true
    • You know which of your sources are batch and which are streaming.
    • That split was decided deliberately – not by whichever source was easiest to wire up.
    • Everyone handing files through the staging area knows it is not storage.

    Station 2 – Model

    This is the station teams rush, and it is the only one in the chain that is effectively irreversible.

    Adobe’s data model is XDM – the Experience Data Model. Its composition rule is stated as a formula: “Class + Schema Field Group* = XDM Schema”. The class decides whether a schema describes things as they are (record data – a customer, a product, an account) or things as they happened (time-series data – a click, a purchase, an email open). That choice is made once, at the class, and everything downstream inherits it.

    02

    Model

    The schema every incoming record has to conform to.

    XDM · Experience Data Model
    FixedPrimary identity, after first load

    Schema evolution follows what Adobe calls a purely additive versioning principle: changes are only permitted if they are non-destructive. You may add fields. You may make a required field optional. You may not remove a field, rename it, move it, relax a value restriction, delete a schema, or disable its participation in the profile. Once real data has been ingested, “the rules of schema evolution become strictly enforced”, and fields “will become non-editable across all XDM schemas in which they are referenced”.

    Architecture check · Station 2 · Model

    After the first production load, which of these can you still change?

    Your answer

    What Adobe documents

    Only additions. Adobe enforces a purely additive versioning principle: you may add fields and make required fields optional. You may not rename, remove or move a field – and the prohibited list explicitly includes “changing primary identity on Profile-enabled schemas with ingested data”. A field’s name is fixed even earlier, the moment the schema is saved.

    Why it matters

    This is the only station in the chain where a wrong decision cannot be corrected in place. Audiences, journeys and destinations can be rebuilt. A primary identity can only be migrated – and the migration touches every object that depends on it.

    Source: XDM schema composition · retrieved 11 Sep 2026

    One item on the prohibited list deserves to be read twice: “Changing primary identity on Profile-enabled schemas with ingested data.”

    The primary identity is the field that says this row is a person, and this is which person. Choosing it is a modelling decision made early, often by whoever is closest to the source system, often before anyone has thought about what the identity strategy will look like in three years. After the first row of production data, it is fixed.

    Everything else can be rebuilt. The data model has to be migrated.

    Everything else in this article can be rebuilt. Audiences can be rewritten, destinations reconnected, policies enabled, journeys redesigned. The data model cannot – not without a migration that touches every downstream object. It deserves a proportionate amount of the project’s attention, which is roughly the opposite of what it usually gets.

    CD
    What I ask for before sign-off

    For every profile-enabled schema I ask two questions and write the answers down: who owns the primary identity, and on what date did they sign it off. Not the integration developer, not the agency – someone who will still be in the room in three years. If either answer is missing, I stop the schema review there rather than after the first production load, because that is the point past which no later project can undo it.

    Christopher Dettinger · MarTech and omnichannel architect

    Architecture checkpoint · Station 2 · what has to be true
    • Every profile-enabled schema has a named owner for its primary identity.
    • That owner understands both the source systems and the three-year identity strategy.
    • The sign-off exists before the first production load, not after.

    Station 3 – Resolve

    Here is where omnichannel either works or fails silently. Not loudly. Silently.

    A customer is not one identifier. They are a browser cookie on a laptop, another on a phone, an app install ID, a hashed email from a newsletter, a CRM record, a loyalty number, a second browser after they cleared cookies last month. Identity resolution is the process of deciding that all of those belong to one person.

    03

    Resolve

    Deciding which of a customer’s many identifiers are one person.

    Identity Service
    50Identities per graph · hard

    Adobe’s Identity Service does this by building an identity graph – the set of identities that represent one customer. Each identifier sits in an identity namespace: Email, Phone, CRMID, ECID, and any custom namespace you define. There is no limit on how many custom namespaces you can create.

    There is, however, a limit on the graph.

    Architecture check · Station 3 · Resolve

    An identity graph fills up. What happens to the fifty-first identity?

    Your answer

    What Adobe documents

    A graph holds a maximum of 50 identities. On the fifty-first, Identity Service applies a first-in, first-out mechanism and deletes the oldest one – cookie identifiers before durable ones. There is no error and no alert, and a profile that exceeds the cap is excluded from segmentation, exports and lookups.

    Why it matters

    Nothing in the interface changes when this happens. The profile stops appearing in segmentation, exports and lookups, and the number in the campaign report is quietly lower than it should be. The only way to see it coming is to look at the distribution of identities per graph before it reaches fifty.

    Source: Real-Time Customer Profile guardrails · retrieved 11 Sep 2026

    Fifty

    “The maximum number of identities in an Identity Graph for an individual profile is 50. Any profiles with more than 50 identities are excluded from segmentation, exports, and lookups.”

    Fifty sounds generous until you count a real household. Four people. Three devices each. Two browsers per device. Cookie clearing every few weeks, each clear generating a fresh ECID. A shared tablet that links two family members’ identities into one graph. A work laptop and a personal one. Add a customer-service interaction that writes a case ID as a namespace, and a loyalty programme that writes its own.

    Fifty arrives faster than anyone plans for. And what happens then is worth quoting exactly: when a graph with 50 linked identities is updated, Identity Service “will apply a ‘first-in, first-out’ mechanism and deletes the oldest identity to make space for the newest identity for this graph”.

    The tipping point · one profile’s identity graph495050 / 50
    Cookie IDDevice IDEmail · Phone · CRMEvicted

    Forty-nine identities, oldest on the left. One household, a few cookie clears, a shared tablet, a loyalty number. Nothing unusual has happened yet.

    Fifty. The graph is full. Nothing in the interface says so.

    The fifty-first did not fail. Identity Service deleted the oldest identity – a cookie ID – to make space for it. No error, no queue, no alert.

    Source: Identity Service guardrails · retrieved 11 Sep 2026

    The eviction is not random. It prioritises by identity type – Cookie ID first, then Device ID, then the durable person identifiers grouped together as Cross-Device ID, Email and Phone – and within a type, by the timestamp on the identity. The design is sensible: throw away the cheap identifiers before the durable ones.

    But note the two things it does not do. It does not warn you. And namespace priority does not protect you: Adobe states plainly that “namespace priority does not affect graph behavior when the limit of 50 identities per graph is reached”. The priority you configured governs which links survive a conflict. It does not govern which identities survive the cap.

    The small things that break an identity graph

    • Identity Service is case-sensitive. Adobe’s own example: “abc@gmail.com and ABC@GMAIL.COM would be treated as two separate Email identities.” If one source system uppercases email addresses and another does not, you are not building one graph. You are building two, and they will never merge.
    • ECIDs have a format. Exactly 38 characters, digits only. Records that do not conform are skipped at ingestion. Identity values in general may not exceed 1,024 characters, and may not be the strings “null”, “anonymous”, “invalid”, or empty.
    • You get three unique namespaces. Declaring a namespace unique means a graph can hold only one identity in that namespace – the mechanism that stops one CRM ID from collapsing into another. You may configure a maximum of three, and changes take up to 24 hours to take effect.

    The repair rule

    When a graph has collapsed – when two people have merged into one profile because of a shared device or a bad key – changing your configuration does not repair it retroactively:

    “Existing collapsed graphs will be affected (‘fixed’) by the graph algorithm only if these graphs get updated after you save your new settings.”

    A collapsed graph for a customer who has not been active since the fix stays collapsed. Your configuration is correct. Your dashboard is green. The profile is still wrong, and it will stay wrong until that person comes back.

    The graph does not fail loudly. It fails silently.

    This is what “fails silently” means in practice. There is no error state, no queue of rejected records, no alert. There is a profile that stopped being targetable, and a number in a report that is quietly lower than it should be.

    CD
    What I check first

    I ask for the distribution of identities per graph, not the average – an average tells you nothing about a cap. What I want is the tail: how many profiles already sit above forty, because those are the ones approaching the point where they stop being targetable. If nobody can produce that number, that is itself the finding, and it goes in the report before anything else does.

    Christopher Dettinger · MarTech and omnichannel architect

    We walked one version of this in detail – an authenticated portal where the ECID, the CRM identity and the streamed consent record all have to line up before a physician sees the right page.

    Architecture checkpoint · Station 3 · what has to be true
    • You know which namespace is your person identity, and whether it is declared unique.
    • You know how many identities your graphs carry today – the distribution, not only the average.
    • Case normalisation has been checked across every source that writes an email address.

    What part 2 covers

    The three stations in this article decide whether you have a customer at all: whether the data arrives, whether it is modelled so it can be used, and whether the fragments resolve into one person. Get those wrong and nothing downstream can compensate – an audience built on a collapsed identity graph is wrong no matter how good the campaign is.

    Part 2 takes the next four: Unify, where fragments become a profile with an expiry date; Segment, where “real time” turns out to be a property of the rule rather than the platform; Decide, where the constraint is not capacity but what a decision can see; and Activate, where the timing assumptions in campaign plans meet documented reality. Part 3 closes with governance, measurement, the warehouse question and what AI agents change.

    Frequently asked questions

    What is the difference between multichannel and omnichannel, technically?

    Whether every channel reads the same customer profile or each keeps its own list. In a multichannel stack, the email platform, the web personalisation engine and the contact centre each hold their own copy of the audience. In an omnichannel stack, all three read one profile, resolved from one identity graph. Everything else – consistent messaging, recognised customers, continuous journeys – is a consequence of that single structural difference.

    How does identity resolution work in a CDP?

    Every identifier a customer produces – cookie IDs, device IDs, hashed emails, CRM records – is placed in a namespace and linked into an identity graph representing one person. Links form when a shared signal ties two identifiers together, such as a login tying a browser cookie to a known account. The quality of resolution depends entirely on the quality and consistency of the keys your source systems write.

    What is an identity graph, and does it have a limit?

    An identity graph is the set of identities that represent one customer. It has a documented ceiling: Adobe caps an individual profile’s graph at 50 identities, and a profile above that is excluded from segmentation, exports and lookups. When a full graph is updated, the oldest identity is deleted first – cookie identifiers before durable ones. No error is raised.

    What does it actually take to run omnichannel marketing?

    Nine capabilities that have to work in sequence: collection, a data model, identity resolution, a unified profile, segmentation, decisioning, activation, governance, and measurement. None can be skipped and none can be bought as a finished product – each is a set of decisions with documented limits attached. The platform is the easy part. The nine decisions are the work.

    Working on this?

    An identity graph rarely fails at go-live. It fails eighteen months later, when a namespace decision nobody wrote down starts dropping profiles. If you want a second pair of eyes on yours before that point – that is the work I do, for teams in pharma, medical and finance.

    Get in touch →

    Related reading: What omnichannel marketing means – four roles, four answers · HCP portal, part 2 – the data walks a permission chain.

    Figures in this article are drawn from Adobe’s public documentation and link to their source; all pages were retrieved on 11 September 2026. Guardrails change with releases, and Adobe distinguishes between system-enforced limits and performance recommendations – verify against your own tenant before designing to any number, including these. Sources: Data ingestion guardrails · Streaming ingestion overview · Data Landing Zone · XDM schema composition · Identity Service guardrails · Identity Service overview · Real-Time Customer Profile guardrails · Identity Graph Linking Rules. Adobe, Adobe Experience Platform and Adobe Real-Time CDP are trademarks of Adobe Inc. This is an independent analysis; no partnership with or endorsement by Adobe.

  • One word, three promises: what ‘sovereign cloud’ means at Adobe, Salesforce and Veeva

    One word, three promises: what ‘sovereign cloud’ means at Adobe, Salesforce and Veeva

    Ask your three biggest cloud vendors: “Is our customer data sovereign?” All three will say yes. All three mean something different.

    Since January, “sovereign cloud” is the loudest word in European IT. AWS opened a separate cloud in Germany – run only by EU staff, physically and logically cut off from its US regions (GA since January 15, 2026, first region Brandenburg). Here is what the three big MarTech vendors actually offer on top of it.

    Three vendors, three promises

    • Adobe put its content platform (AEM Managed Services) on the new AWS European Sovereign Cloud, plus Microsoft Cloud for Sovereignty in the Netherlands. But the customer-profile platform behind it – AEP – runs multi-cloud in standard regions (six Azure regions plus one AWS, fixed at provisioning) with a global Edge Network. Profile data is resident; edge routing is not. Your data sits in Europe – it isn’t sealed there.
    • Salesforce sells the Hyperforce EU Operating Zone: EU data boundary, EU-based 24/7 support, paid extra. Read the product list closely – it covers a vetted subset (Sales, Service, Analytics, Platform and others). Check whether your Marketing Cloud SKU made the list. Forrester calls the EU OZ a “sticking-plaster solution” for sovereignty.
    • Veeva keeps pharma data in European data centers (Germany, Ireland/UK, on AWS) by default, pinned to region, no extra fee. But European hosting by a US company isn’t sovereignty – US law can still reach it.

    The three words that get conflated

    • Residency = where data sits.
    • Operating zone = who runs and supports it.
    • Sovereignty = whose law can touch it.

    The legal core

    The US CLOUD Act can compel US providers to produce data stored abroad; GDPR Article 48 says foreign judgments alone are not a lawful transfer basis. That collision is why “hosted in Frankfurt” answers the residency question – not the sovereignty question. For DACH banks this now shows up in DORA/BaFin outsourcing questionnaires; for pharma, in EMA data-location clauses.

    Questions to settle

    1. When the board asks “are we sovereign?”, does your answer have three columns – residency, operations, jurisdiction – per vendor and per product?
    2. Which products in your stack are actually covered by the sovereign offering – and which (often the marketing platform) are not?
    3. Has “sovereignty” reached your vendor questionnaires and renewal checklists yet?
    4. In most stacks the marketing platform holds the most customer data and offers the least sovereignty – does yours?

    Frequently asked questions

    What is the difference between data residency, operating zone and sovereignty?

    Three different questions. Residency is where the data sits. Operating zone is who runs and supports it. Sovereignty is whose law can touch it. Hosted in Frankfurt answers the residency question and says nothing about the other two, which is why a sovereignty answer needs three columns per vendor and per product.

    Is Adobe Experience Platform covered by the sovereign cloud offering?

    Only in part. Adobe put its content platform, AEM Managed Services, on the AWS European Sovereign Cloud plus Microsoft Cloud for Sovereignty in the Netherlands. The customer-profile platform behind it, Adobe Experience Platform, runs multi-cloud in standard regions – six Azure regions plus one AWS, fixed at provisioning – with a global Edge Network. Profile data is resident; edge routing is not.

    Why does hosting in Europe not equal sovereignty?

    Because of a legal collision. The US CLOUD Act can compel US providers to produce data stored abroad, while GDPR Article 48 states that foreign judgments alone are not a lawful transfer basis. European hosting by a US company therefore answers where the data sits, not which law can reach it.

    Working on this?

    Three vendors, three different promises behind one word. If you have to answer this in a procurement questionnaire or a DPIA, the differences matter more than the label – I help teams write that answer down.

    Get in touch →

    Sources: AWS European Sovereign Cloud launch announcement; Adobe blog on AEM with the AWS European Sovereign Cloud; Adobe Experience Platform multi-cloud documentation; Salesforce Hyperforce EU Operating Zone product page; Veeva cloud infrastructure page – as of August 2026. All product names are trademarks of their respective owners. This is an independent analysis; no partnership with or endorsement by any vendor. First published as part of my LinkedIn series, August 2026.