What Is Decisioning? The Engine That Chooses

What Is Decisioning? The Engine That Chooses

Concept

Decisioning is the capability that chooses the next best action for a customer. It answers a single question, given everything we know about this person right now, what should happen next, and it does so independently of the channel that will carry the action. A channel sends an email or a push. Decisioning decides whether anything should be sent at all, to whom, and why.

Why it matters

The reason decisioning deserves its own name is that it is a placement decision, and placement is where architectures quietly succeed or fail. If the logic that chooses the next action lives inside one channel tool, every other channel either duplicates it or ignores it. Put the same logic in three places and you now maintain three copies that drift apart the moment someone edits one. The architectural consequence is ownership, though it pays to be precise about what is being centralised, because four different things hide inside the word. There is the policy, meaning the rules about frequency, eligibility and suppression. There is the definition of the audiences and signals those rules run on. There is arbitration, the act of picking one action when several qualify. And there is execution, the sending itself. Policy and definitions genuinely have to be single-owner, because two copies of a frequency rule are two rules the moment somebody edits one. Execution is distributed by nature and should be. Arbitration is the interesting case: it can sit centrally, or it can sit per channel provided every channel arbitrates against the same centrally owned policy. A stack that centralises the policy and distributes the execution is a stable middle, and a common one. Once you see decisioning as a layer rather than a feature, the question stops being which tool has the best journey builder and becomes where the decision lives and what it is allowed to see.

A simple example

Consider a customer who abandons a cart, opens the app an hour later, and is also part-way through a post-purchase onboarding flow from last week. Three systems could plausibly react. The email tool wants to send a cart reminder, the push tool wants to nudge the app session, and the onboarding flow wants to continue its sequence. Without a decisioning layer, all three fire, because each one only sees its own slice of the customer. With a decisioning layer, one engine holds the whole picture, suppresses two of the three, and lets the most valuable action through. Same data, very different experience on the other end.

The architecture view

Two architectures for the same customer profile. On the left, decisioning is scattered: each channel tool holds its own decision and reads the profile directly, so the same offer can fire twice and no system owns the choice. On the right, decisioning is centralised: a single decision engine sits between the data and the channels, inside the governance boundary, and the channels only deliver what it decides.

Where decisioning lives. The difference is not the tools, it is where the decision sits.

You can see this split in the tools themselves. Adobe ships decisioning inside Journey Optimizer as a capability distinct from the journey canvas, while Braze grew from a channel-first Canvas and has been adding cross-channel arbitration on top of it. That is the useful lens when you evaluate a platform: not whether it has a journey builder, because they all do, but whether it gives you one place to own the decision and have every channel honour it, or whether it quietly leaves that arbitration to you.

The mistake I often see

The recurring error is confusing a journey builder with decisioning. A journey builder is a canvas for drawing flows, and almost every channel platform ships one. Teams see the canvas, assume they already have decisioning, and start drawing the same suppression and prioritisation logic into every journey. A year later the email canvas, the push canvas, and the SMS canvas each encode a slightly different version of do not contact this person more than twice a week, and nobody can say which one is correct. A journey builder executes a decision, but it is not the place the decision should be owned. When I audit a stack that feels busy yet behaves inconsistently, this is almost always what I find.

Go deeper

For how this plays out inside a real platform, the Field Notes on Braze show where a channel-native canvas ends and where shared logic has to begin. For the larger placement question of whether the engine belongs in the CDP or the CEP, the CDP–CEP architecture decision works through the trade.

This node sits next to what a CEP is, the layer that usually executes the choice, and batch vs event-driven, which decides what gets to trigger one. For whether the engine needs its own product or can live inside one you already run, see layer or product.

Open full size