Skip to content

Journeys

Multi-step messaging flows. A journey is a trigger plus a steps graph — build it in the dashboard's visual editor (Journeys → New journey) or as JSON via the API. Unlimited journeys on every plan.

A journey is triggered either by an event the subscriber performs, or by their entry into a segment (the scheduler sweeps segment-triggered journeys every few minutes and enrols new members). Re-entry is configurable: once means a subscriber is enrolled at most once ever; always re-enrols them after they exit.

How a journey runs

Subscribers enroll when your app tracks the trigger event (WingBlaze.trackEvent("cart_created") or a Segment inbound event). They then advance through the steps on the scheduler's sweep; sends apply frequency caps and quiet hours like campaigns.

Step types

StepBehavior
WaitPause for minutes/hours/days (max 30 days per wait).
SendDeliver a message to the subscriber's enabled devices — pick an existing message or compose inline in the editor. An optional channels list on the step restricts it like a campaign's; without one, every enabled device receives it. Either way the subscriber's channel preference applies: journeys are marketing.
BranchEvaluate a segment filter at that moment — tags, event history ({ "event": "purchase", "withinDays": 7 }), activity, channels (see Concepts); run the matching side, then continue after the branch. A branch looks at the past; to wait for an event, use a goal.
GoalWait up to N hours for a conversion event. If it happens, the subscriber exits as converted — nothing after runs. On timeout, the flow continues (the nudge path).

The canonical example — abandoned cart

json
{
  "name": "Abandoned cart",
  "triggerEvent": "cart_created",
  "reentry": "always",
  "steps": [
    { "id": "g", "type": "goal", "event": "purchase", "timeoutHours": 24 },
    { "id": "c", "type": "condition",
      "filter": { "all": [{ "tag": "plan", "eq": "pro" }] },
      "then": [ { "id": "pro_nudge", "type": "send", "messageId": "..." } ],
      "else": [ { "id": "free_nudge", "type": "send", "messageId": "..." } ] }
  ]
}

Cart created → enroll. Purchase within 24h → exit converted, no nudge. Otherwise the nudge sends, split by plan.

Lifecycle & rules

  • Go live / pause any time; the graph is frozen while live, and pausing exits in-flight subscribers at their next wake.
  • Re-entry: once (default — a subscriber ever enrolls a single time) or always (re-enroll after finishing; never two active runs at once).
  • Stats: enrolled / in flow / completed / converted / exited, in the editor header and at GET /apps/:appId/journeys/:id/stats.
  • Analytics events journey_enrolled, journey_converted, journey_completed land in the event stream; delivery receipts carry meta.journeyId.

Teknokrat Niaga Sdn Bhd · No. 28-1, Jalan SP 5/2, BSP Business Center, 42610 Bandar Saujana Putra, Selangor, Malaysia · +60 3-5614 3169 · Enquiries: info@teknoniaga.com