SocialHub.AI
Developer Center · Journeys

Multi-step journeys that actually run.

The campaign canvas isn't just a picture. A journey enrolls each member once and advances them through the steps over time — sends, waits and A/B branches executed per member — and reports how each node performed. Same consent rules and send engine as a single campaign; the journey just adds the sequence.

How a journey runs

Enroll → advance → measure.

01

Enroll once

Members enter one of two ways — a segment resolved when the journey starts, or a live trigger event (a checkout abandoned, an order paid, a new sign-up, a member gone quiet) that enrolls that single member the moment it fires. Either way each member is enrolled once, and their A/B branch is decided deterministically at enrollment so their path is stable.

02

Advance over time

A scheduler advances each enrollee through the canvas: send a message node; hold at a wait node until its delay elapses — or at a reactive wait-for-event node that releases the moment the member acts, up to a timeout; follow the member's branch; then continue — one member at a time, on their own clock. Condition- and segment-based decision splits are judged on the member's state at the moment they reach the split — after any waits — so "wait three days, then route by whether they purchased" routes on what actually happened, not a stale snapshot from enrollment.

03

Measure per node

Every node entry and send is logged, so the campaign's Flow tab shows a per-node funnel: entered → sent, what was skipped, and where members drop off. An optional journey-level holdout arm measures incremental lift (treatment vs a held-out control), and goal conversions carry attributed revenue.

Start from a proven flow

Templates and triggers, not a blank canvas.

Five DTC flows, ready to run

A starter library ships with the engine — Welcome & Onboarding, Abandoned Cart Recovery, Post-Purchase → Repeat, Replenishment Reminder, and Win-Back Lapsed Members — each a complete multi-step canvas you tune, not a blank page.

Or describe it in plain language

Tell the AI the outcome you want and it drafts the journey — entry trigger, steps, waits and messages — as an editable canvas you review before anything runs.

Trigger-based entry

Beyond a segment, a journey can enter members from a live behavior — a checkout abandoned, an order paid, a new sign-up, a member gone inactive — enrolling that one member the moment the event fires.

Goals & exit rules

Set a conversion goal (say, a purchase) and exit conditions; a member who converts or meets an exit rule leaves the journey early, and the goal surfaces in the per-node conversion analytics.

Recurring, without the spam

Recurring flows (birthday, abandoned-cart, replenishment) re-enter a member only after their previous run has ended and a per-journey cooldown has passed; a member with a live run never re-enters, so the journey recurs without over-messaging.

Per-node analytics

See exactly which step loses people.

Every node logs who entered and who was actually sent (the gap = held back for consent or frequency). The Flow tab turns that into a funnel per node.

GET /api/campaigns/:id/journey-analytics
{
  "enrollments": { "active": 120, "completed": 640, "exited": 40, "total": 800 },
  "nodes": [
    { "nodeId": "welcome-email", "entered": 800, "sent": 786, "skipped": 14 },
    { "nodeId": "day3-followup",  "entered": 640, "sent": 590, "skipped": 50 }
  ]
}

Guarantees

Built on the campaign engine you already trust.

Consent at every step

Each node's send goes through the same delivery path as a normal campaign — unsubscribe and marketing-consent withdrawal are checked per member, per step. A member who opts out mid-journey stops receiving the rest.

One enrollment per member

A member is enrolled at most once per journey (unique per campaign+member), and each node send is idempotent — a retry or an overlapping scheduler tick never double-sends.

Reuses the send engine

Journey sends ride the existing channel plan (email / push / SMS) — the same rendering, tracking and deliverability as single-send campaigns. Journeys add the sequencing, not a second send stack.

Live, with a kill switch

The journey engine runs in production by default; a single environment switch disables it, falling back to single sends with no change to existing behavior. Every journey send also passes the same frequency cap, quiet hours, topic opt-out and per-team send quota as a normal campaign.

One canvas. Every member, in sequence.