Journeys & sequences
A journey is a multi-step automation: a trigger, an ordered list of steps with delays, branching logic, and exit conditions. Zubby’s recovery campaigns are journeys with sensible defaults; you can also build your own from scratch for onboarding, replenishment, post- purchase, or win-back.
Anatomy of a journey
| Element | Purpose |
|---|---|
| Trigger | What starts the journey. Cart abandonment, browse abandonment, segment entry, first order, custom event. |
| Step | An action: send email, send SMS/WhatsApp, wait, branch by condition, tag profile, fire outbound webhook. |
| Delay | Wait between steps. Specified in minutes, hours, or days. Honors business hours by default. |
| Branch | Split into two paths based on a condition (opened previous email, made purchase, lifecycle stage…). |
| Exit rule | Conditions that drop the shopper out of the journey early (made purchase, unsubscribed, started new conversation). |
Built-in templates
Six templates are battle-tested and live under Journeys → Templates:
- Classic 3-Step Cart Rescue — 15 min, 1 day, 3 day send. Discount on the third step.
- Browse Bounce-Back — single touch 4 hours after browse abandonment.
- First-Order Replenishment — fires X days after first order, calibrated to your AOV-to-second-order gap.
- Winback 30/60/90 — three sends spaced 30 days apart, escalating offer.
- VIP Concierge — silent journey that pings your team when a VIP browses without buying.
- Post-Purchase Drip — review request, care guide, cross-sell. Three steps over 21 days.
Why templates over a blank canvas
Building a custom journey
Open Journeys → New. The canvas is a top-down flowchart. Drag steps from the right panel, connect them, configure each.
Best practices:
- Start with a strong exit rule (made purchase, unsubscribed). It’s the single biggest factor in keeping a journey from feeling spammy.
- Use branches sparingly — a 3-step linear sequence outperforms a tangled 9-step tree in 80% of tests we’ve run.
- Test on a 10% audience before flipping fully on. Stat sig is usually visible within a week on a Growth-tier store.
- Match channel to context. Email for considered purchases, SMS for time-sensitive (low stock, ending sale).
Conditions
Branches and exit rules support these conditions:
- Profile — lifecycle stage, VIP tier, segment membership, LTV bracket.
- Engagement — opened last email, clicked last email, replied to last email.
- Order behavior — placed order since trigger, ordered specific SKU, refunded recent order.
- Cart state — cart still contains specific SKU, cart value over $X.
- Custom event — fired from your stack via REST API.
Firing events programmatically
Trigger any journey with a custom event from your own code:
curl -X POST https://api.zubbyai.com/api/v1/merchant/{storeId}/events \
-H "Authorization: Bearer sk_live_..." \
-H "X-Store-ID: {storeId}" \
-H "Content-Type: application/json" \
-d '{
"name": "warranty_registered",
"email": "shopper@example.com",
"properties": {
"productSku": "APEX-JACKET-M",
"purchasedAt": "2026-04-22"
}
}'Analytics
Every journey shows step-by-step performance: sent, opened, clicked, converted, revenue attributed. Compare A/B variants from the same screen. Drill into individual shopper paths to debug a flow.
Limits
| Plan | Active journeys | Steps per journey |
|---|---|---|
| Trial | 3 | 5 |
| Growth | 15 | 20 |
| Pro | 50 | 50 |
| Enterprise | Unlimited | Unlimited |