
Courier Journeys now includes an AI node you can drop into any customer journey. It covers four things that used to require custom engineering or a separate ML stack: branching on logic too nuanced for if/then, generating message copy shaped by each user's context, enriching user profiles with live data mid-flow, and summarizing activity into recurring digests. Existing deterministic journeys keep working. The AI node is additive, not a replacement.
The AI node is available on the Business and Enterprise plans and runs on AI credits.
Courier Journeys now has an AI node. You can drop it into any customer journey to branch on logic too nuanced for if/then, generate message copy shaped by each user's context, pull live data into user profiles while the journey is running, and summarize activity into recurring digests.
That's the short version. The longer version is that customer journeys have always had a ceiling: you could send the right message to the right person at the right time, but only if you'd manually encoded every branch, every template, and every edge case in advance. The AI node lifts that ceiling.
For the broader picture of what a journey is in the first place, the customer journey orchestration guide covers the category, the node types, and where AI fits among the deterministic primitives.
Journeys break when the real world gets complicated. A user drifts between active and dormant. A trigger fires without enough context to route correctly. Two helpful messages on Monday turn into six by Friday and the user stops opening any of them.
The usual response is to add more branches, split templates into more segments, and wire up another conditional. The journey gets harder to reason about, and the messages still don't actually feel personal. They feel targeted, which is a different thing.
The AI node cuts through that. Instead of pre-programming every path, you let the model read the context and make the call.
Four capabilities, all available from a single node you drag into the canvas.
Deterministic branching asks a narrow question: did this event have property X equal to value Y? That works when your data is clean and your logic is simple. It falls apart when you need to route based on urgency, tone, engagement trajectory, or anything that requires interpretation.
The AI node reads the context at the branch point and picks the path. A ticket mentioning an outage routes to the urgent flow. A question about pricing routes to sales enablement. Same journey, and you didn't have to pre-flag any of it in the payload.
In practice, you can use it to:
Merge tags replace {{first_name}} with "Kyle." That is not personalization. It's mail merge with better branding.
The AI node can write the body copy itself, using product events, profile attributes, and activity from earlier nodes in the journey. You can also compose those messages in Design Studio and let the AI node fill specific blocks dynamically instead of the whole body. A re-engagement email might reference the specific feature a user stopped using and suggest their most likely next step. Post-purchase confirmations can acknowledge what the customer ordered last time and how this order fits. The same workflow alert can be phrased one way for an admin and another way for an end user without maintaining two templates.
The output reads like you wrote it for that person. Effectively, you did. You wrote the system prompt and the context, and the model filled in the rest.
Two common patterns to start with:
Profiles don't always arrive complete. A signup event might carry an email and nothing else. A webhook from a third-party tool might pass an ID but no segment. A lead might come in with ten fields, three of which are wrong.
The AI node can patch that while the journey is running. Pull in live data, classify the user, tag the profile, update attributes. The next time you query that user in Courier, or downstream in your CDP, the information is there.
This matters more than it sounds. Branching on attributes the trigger didn't carry has historically required either a round-trip to your backend or a stack of fallback logic in the journey itself. The AI node handles it inline, and you can send classifications back to your CDP so the enrichment compounds over time instead of living inside one flow.
Agents and product systems can generate more notification-worthy events than any human wants to read. Throttling caps volume, but it doesn't help the user understand what actually happened while they were away.
The summarization capability batches messages a user received over a window you define and rolls them into a digest. That might be a weekly roll-up of internal activity, a morning brief of overnight alerts, or an end-of-shift summary for on-call rotations. The output fits the channel, whether that's an email, a Slack post, or a line of text in an in-app inbox.
You control the window, the format, and the channel. The model handles the compression.
The AI node is a node. It sits alongside Send, Delay, Branch, Batch, Throttle, and Digest nodes you already use. You don't rebuild anything. You drop it in wherever you want the journey to get smarter.
If you already have a journey running, you can add an AI node to a single step and leave the rest untouched. Journeys built with deterministic logic keep behaving the way they did. The AI node is additive.
Two things to think about before you start replacing if/then with prompts.
Determinism. Traditional branch nodes are predictable. Given the same input, they produce the same output. AI nodes are probabilistic. For high-stakes routing like compliance notifications or financial alerts, stick with deterministic logic, or use the AI node to enrich and then branch deterministically on the enrichment.
Cost. Every AI node call is an inference call. For high-volume sends where every message requires unique generation, that adds up. For low-volume, high-value journeys, the math usually works the other way.
Neither of these is a reason not to use the AI node. They're reasons to use it where it pays off, and to keep the rest of the journey on the cheaper, more predictable primitives.
Open any journey. Drag in the AI node. Give it context, give it a task, connect it to the next step.
The AI node is available on the Business and Enterprise plans, and it runs on AI credits you buy in the Courier console. Read the AI node docs for supported models and credit costs, or see how Journeys fits into the rest of the Courier platform.
The AI node runs a language model prompt inside a journey, using the run's context, and adds the model's structured output back to the journey. Later nodes can branch on those fields, use them in message content, or update user data, which covers jobs like classifying users, writing personalized copy, and enriching profiles. You pick the model from a list that includes OpenAI and Anthropic models.
No. The AI node is additive. Journeys built with deterministic logic keep working exactly as they did. You can add an AI node to a single step and leave the rest of the journey untouched.
A standard Branch node checks fixed conditions against fields in the run's data. The AI node reads the run's context, such as the text of a support ticket, and returns structured fields like an urgency level, which a Branch node then routes on. That means a ticket that mentions an outage can go down the urgent path without you flagging it in the payload.
Yes. The AI node can write subject lines and body copy from the run's context, including trigger data, the user's profile, and earlier fetch results, instead of swapping merge tags into fixed text. It returns the copy as fields you define, like subject_line and body_copy, and you reference those fields in the send node's template.
The two main tradeoffs are determinism and cost. An AI node calls a language model, so the same input can produce different output, which makes it a poor fit for compliance notifications or financial alerts where the path has to be predictable. Each AI node run also uses AI credits, and the amount depends on the model you pick, so high-volume journeys where every run calls a model will add up.
The AI node is available on the Business and Enterprise plans, and it runs on AI credits that you buy as packs in the Courier console. It isn't available on the Developer plan. See the AI node docs for the supported models and what each one costs.

Control how fast Courier sends to your providers
You shouldn't have to think about how fast you send to Courier. Set a send rate limit on any provider, and Courier sends your notifications to it at the rate you choose. Anything over the limit is queued, not dropped.

Know the moment users change notification preferences
Every preference change in Courier now reaches your systems two ways. A `preferences:user:updated` webhook fires the moment a user opts in, opts out, or changes a topic's channels, wherever they made the change. `GET /preferences/logs` returns the history, newest first, with the previous value where Courier knows it. Keep your CRM, warehouse, or marketing tools in step with what users chose.

Courier vs Customer.io: 2026 messaging platform comparison
Courier and Customer.io both send across email, push, SMS, and in-app, but they are not priced or built the same way. Courier bills by the send, puts journeys, experiments, broadcasts, an in-app inbox, preferences, and 50+ delivery providers on one platform, and exposes all of it through an API, a CLI, and an MCP server. Customer.io bills by the number of profiles in your database and fits a marketing team that needs deep behavioral segmentation. This comparison covers pricing, journeys, channels, in-app messaging, localization, and preferences, with every competitor figure linked to Customer.io's own pages.