pex
Adaptive Journeys · Phase 1 shipping

Lifecycle journeys that learn on their own.

Static drip campaigns ship a sequence and hope. Adaptive Journeys ship a sequence and learn what’s working — Thompson-sampling the winning arm, measuring real lift against a global holdout, and putting a number on every workflow. Built so Pinpoint customers have somewhere to land before October 2026.

Migrating from AWS Pinpoint? See the migration guide.

What you get

Four primitives that compose into a self-optimizing journey.

Most lifecycle tools ship a journey builder and expect you to A/B test arms by hand. We ship the four pieces that make a journey actually adaptive — and they all share state, so the dashboard tells you whether the journey worked, not just whether it ran.

Adaptive Branches

Thompson sampling on journey arms

Each arm has a Beta posterior over its conversion rate. The runtime samples each arm and routes the user to the highest sample. Cold-start uses deterministic round-robin until each arm has 200 subjects; then Thompson takes over. Underperforming arms aren't pruned — they're just sampled less. No retroactive re-bucketing.

Math + censoring rules

Global Holdout

A real control group

Five percent of every workspace's end-users are deterministically assigned to a global holdout — they receive nothing from any journey. Same user, same bucket, every time. The difference between holdout and exposed conversion rates is the calibrated impact of your journey portfolio.

Determinism guarantee

Calibrated Impact

An actual lift number

Per journey: exposed-vs-holdout conversion rates with the lift % computed from real outcomes within the configured attribution window. Failed/stopped/timed-out executions are censored — you don't pay an arm penalty for our infrastructure errors.

Methodology

One graph, one engine

Step Functions + DynamoDB

One state machine. One thin dispatcher Lambda. All planning logic in pure functions. No agent loops. No mystery state. Wait-for-event task tokens survive across deploys; orphaned tokens auto-clean. Built for the Series B+ ops profile.

Architecture

Compared

What other tools call ‘optimization,’ we call calibrated.

Most lifecycle platforms let you A/B test journey arms with a fixed sample size and a frequentist p-value at the end. That's slower, less honest, and answers a different question.

FeatureApexPinpointCustomer.ioIterable
Visual journey builder
Thompson-sampled adaptive branches
Global holdout (deterministic)Add-on
Calibrated lift dashboard per journey
Same engine for web + email + push experiments
Mobile push (Capacitor)EOL Oct 2026
AWS-native (single-region durability)

Migration

A real off-ramp for Pinpoint customers.

AWS Pinpoint reaches end-of-life on October 30, 2026. AWS's recommended path (Connect) doesn't include Journeys, In-App Messaging, Push notifications in Campaigns, Custom Channels, or Imported Segments. We do.

Journey parity

Step types: Trigger, Wait (duration + until-event), Branch (conditional + adaptive), Send, Webhook, Exit. Segment predicates over events + attributes + nested segments.

Multi-channel sends

Email, in-app, mobile push (web + iOS + Android). Channel selection per step. Reuses your existing tenant communication assets.

Stronger measurement

Pinpoint never had a global holdout. Customer.io requires you to roll your own. We ship one in the box, with deterministic assignment and council-reviewed census rules.

How it works

From SDK event to attributed conversion.

The same /api/events route you already use for product analytics fires journey triggers, resumes paused waits, and credits goal events to the right arm and segment. One pipeline.

01

SDK event

user fires user.signed_up via /api/events

02

Trigger evaluator

matches the journey contract; assigns holdout deterministically

03

State machine

Step Functions runs Trigger → Wait → Branch → Send → Exit

04

Goal event fires

purchase event within window credits the right segment + arm

05

Lift dashboard

exposed_rate − holdout_rate / holdout_rate, refreshed live

Build a journey that ships, learns, and proves it worked.

Free tier includes 1,000 active end-users in journeys, 10K sends/mo, and one published journey. Adaptive branches + global holdout + calibrated-impact dashboard included on every tier.