Documentation overview

Journeys

Build it once. It keeps running. A journey is an automation your AI CMO runs over time – a welcome series, a win-back play, a weekly content engine – built on a visual canvas and executed for you, person by person.

Creating a journey

Journeys in the sidebar gives you three ways in:

  • Describe it. Type what you want – "every Monday, research AI news and draft a LinkedIn post" – and press Draft it. The AI builds the journey and opens it on the canvas for review. Nothing is saved until you save it.
  • Templates. A gallery of ready-made journeys in two groups – Get customers (lead welcome, launch amplifier, SEO content engine, ad creative refresh and more) and Keep customers (win-back for at-risk, reactivation, loyalty boost, referral ask). One click opens the template on the canvas.
  • Blank canvas. New journey starts you from a trigger and an empty canvas.

Every journey belongs to one brand profile and works in that brand's voice – the builder header shows which.

The building blocks

Drag steps from the left rail. The main groups:

  • Triggers – a journey can carry several, each with its own audience scope and its own on/off switch: Audience (a segment or picked people enter when you publish), Manual (you run it yourself), Repeat (a schedule – hourly, daily, weekdays, weekly on one or several days, monthly), On event (a person enters when something happens – a form submitted on a specific landing page, a specific tracked link clicked, a lifecycle stage change, or one of your own events).
  • Messaging: Email, SMS, Push, Website message – covered below.
  • Flow: Wait, Condition (branch yes/no on things like "did they open the email?", "did they click a tracked link?", audience membership, or a profile attribute like total spend, days since last purchase, or RFM group), In audience?, A/B split, Notify me (an alert to you with the run's results), and Goal (the finish line).
  • And the rest of the toolkit: social posts (LinkedIn, X and X threads, Facebook, Instagram), blog and SEO articles, images, ad drafts, web research, page scraping, tracked links, webhooks to call your own systems, and reusing content from your library. Content steps work draft-first – the AI writes, you approve.

Event triggers

The On event trigger enrolls a person the moment something happens. The options, exactly as they appear:

  • someone submits a form
  • someone clicks a tracked link
  • someone is active on your website (daily)
  • someone becomes At Risk / Can't Lose / a Champion / Loyal – these fire when a customer's lifecycle stage changes, so a save play can run itself the day someone starts slipping
  • someone triggers one of your registered custom events – register events in Data → Events and they appear here

Event triggers are polled continuously; a matching person is enrolled and their run starts within about a minute.

The Email step

The Email step is AI-written: you give it a prompt ("Monthly product update – friendly, one CTA to the changelog"), choose Campaign (one message, one CTA) or Newsletter (a multi-section issue), and the journey drafts it for your approval before anything sends.

  • Send to: by default, the person moving through the journey. You can instead broadcast to a segment – each run emails the whole audience, up to 500 people. Unsubscribed people are always skipped.
  • Test send: send just that email to any address, subject prefixed [Test].
  • Setup required once: email sending is configured per brand profile in settings – either The AI CMO sends for you on a verified domain, or use your own provider (Resend, Postmark, SendGrid, or any SMTP). Sending stays off until a verification email arrives, so a misconfigured domain can never send to customers.

The SMS step

SMS defaults to word-for-word: with "I write it" selected, the text you type is the message that sends – no rewriting, which is what most teams want for compliance-sensitive texts. Switch the Content selector to "the AI writes it from my brief" and the step writes the message fresh from your brief each run instead. It needs SMS sending connected first (Twilio, Telnyx, Vonage, MessageBird, or sms.to), contacts need a phone number, and opted-out numbers are always skipped. STOP replies opt people out automatically.

The Push step

Sends a push notification to the person in the journey. Three routes, any of which works alone:

  • Your mobile app, directly – ship @aicmo/react-native and upload your Firebase service account on the Website SDK page; notifications go straight through your own Firebase project, no third party.
  • Your website – visitors who enabled notifications through the Website SDK get the push in their browser (real phone notifications on Android, iPhone once your site is on their home screen).
  • OneSignal – if your app already runs OneSignal, connect it (Connections → search "OneSignal") and the step notifies through it, matched by the customer id your app registers.

Like SMS, the message defaults to word-for-word ("I write it"), with an AI mode that writes from your brief. You set the title, where a tap lands, and which routes to use – every route available, mobile app only, or browsers only – and the panel previews the notification as the phone will show it. People on your blacklist or self-exclusion lists are never sent – the block happens before anything leaves, on every route.

The Website message step

Shows a message on your own site to the person in the journey – a corner card, top banner, or modal, rendered by the Website SDK. You control when it appears (immediately, after a delay, at scroll depth, on exit intent, when they arrive from this journey's email, or after an event), how long it stays live, and whether a dismissal is final.

Each website message can carry a measured goal – "success is a purchase / a conversion / a form submitted within N days of seeing it" – counted against your warehouse, with revenue summed. The node shows its performance right on the canvas: shown, clicked, converted, and revenue.

Who enters – and who never will

  • Audience triggers enroll everyone in the segment when you publish; publishing again picks up people added since. Each person goes through a journey once.
  • Enroll people in the Activity panel lets you hand-pick contacts into a running journey.
  • Blacklisted people are dropped at the door – they never enroll, and the block is logged. Unsubscribed and opted-out people are skipped at every send step. The weekly frequency cap (set in your sending settings: at most N messages per person per 7 days, across all journeys) skips anyone already at their limit.

Running and watching

  • Save keeps a draft. Start publishes; once live, edits go out with Publish changes.
  • Test rehearses the published version without publishing anything. Run now publishes what's on the canvas and runs it.
  • The live canvas shows the running step pulsing, with per-step counts of who's here and who has passed.
  • The Activity panel is the full ledger – every run, step by step: drafts waiting for your approval, sends, branches taken, skips with their reasons, and completions. Filter by Needs you to see only the runs waiting on your approval.

Measuring what a journey earns

Turn on the Uplift holdout and a random slice of enrollments (5, 10, or 20%) is deliberately left unmessaged as a control group. Comparing their revenue against everyone else's tells you what the journey actually caused – not just what happened near it.