
The AI node is a new step inside Courier Journeys that classifies users, branches a journey based on the result, and writes per-channel message copy, all from a single prompt. Drop it between your trigger and your sends, define an output schema, and the rest of the journey reads structured data the model returns.
This post covers what the AI node does, how to set one up, and the use cases where it actually helps.
The AI node sits inside a Courier journey. It reads data from the trigger payload (an API invoke, or an event from Twilio Segment), runs a prompt against a model you choose, and returns structured output the rest of the journey reads.
Three common jobs:
The whole point is to replace a thicket of conditional rules and template variants with one node and one prompt. Fewer nodes to maintain, and a journey that's easier to change later.
You configure an AI node in four passes: write the prompt, define the output schema, pick the model, and test.
Give the model a role, name the inputs it'll receive, and describe the task to complete. The data comes from the trigger payload, so reference fields the same way downstream nodes do (for example, {{user.email}} or {{account.arr}}).
A useful pattern is to combine roles in one prompt: an analyst that classifies, and a copywriter that writes. Describe the inputs (account attributes, usage data, qualitative notes), name the decision the model needs to make (which category to assign), and list the outputs you want back (subject lines, message bodies, push text) in concrete terms. The more specific the prompt, the more consistent the output.
The schema tells the AI exactly what fields to return. Downstream sends read from this schema through Handlebars, so the field names you pick are the names you'll use in templates.
You can define the schema two ways:
Both produce the same structured response at runtime. Pick whichever is faster for the work in front of you.
Model choice covers the latest from Anthropic and OpenAI. Match the model to the job:
If you pick an Anthropic model, you get an extra toggle: web search. Turn it on when the prompt benefits from current information (a recent event, fresh competitive data, an external lookup). Leave it off when everything the model needs is already in the payload. It's faster and cheaper without it.
The configuration panel has a test mode. Paste in a sample payload, run the node, and inspect the output. Iterate on the prompt and schema here, before any real user touches the journey.
After the AI node, each send pulls its content from the output schema through Handlebars.
For an email send:
In-app, push, and SMS sends bind their fields the same way. Because the AI writes a version per channel, you don't hand-tune copy for one channel and lose the others.
Templates are designed in context with the journey, so you don't bounce out to a separate library to wire up the bindings.
Add a branching node after the AI node and point it at the field you nominated for routing (category, for example). Each value gets its own path. Skipped branches don't fire.
This is where the AI node pays off. Instead of building a tree of conditional rules around computed scores, the model judges once and the rest of the journey acts on the result.
The AI node is most useful when:
It's less useful when the rule is simple, like if plan == 'free' and trialEndsIn < 3. Use a regular condition node for that. AI nodes add latency and cost; they're worth using when the work isn't easily expressed in code.
Spin up a journey, drop in an AI node, give it a prompt and an output schema, and run a test invoke. The whole loop takes a few minutes to set up, and the result is easier to maintain than nested conditions and a wall of template variants.
For product or growth teams that want personalized messages at scale without maintaining a tree of rules, this is the node to reach for.

What Siri AI means for your email, SMS, and push
Siri AI shipped with iOS 27 and changes what happens to a message after it's delivered. It reads urgent notifications aloud, searches Apple Mail and Messages, can delete or unsubscribe from your email on request, and will soon answer "where's my order?" through apps. Here's what each change means for your email, SMS, and push, and what to do now.

Catch broken lifecycle journeys with synthetic users and AI
Paste one prompt into a coding agent and get a local test of your onboarding journey: synthetic users, real timing, and every send explained. Catch stale reminders before your customers do.

Test Courier emails end to end with your AI agent
Give your coding agent an AgentMail inbox, and it can test your Courier emails the way a user would: send the change, check what arrives, review how it renders, and fix what it finds before the change reaches Production.