Introducing Workflows
We're excited to announce Workflows - the easiest way to automate customer journeys with event-driven automation.
What are Workflows?
Workflows let you define automated sequences that trigger based on user events, execute actions across multiple channels, and adapt to user behavior in real-time. No more stitching together multiple tools or writing complex orchestration code.
The Problem We're Solving
Modern customer engagement requires coordinated communication across multiple touchpoints. A user abandons their cart - you need to send an email, then a push notification, then maybe an SMS. If they complete the purchase, you need to stop the sequence immediately.
Building this yourself means:
- Managing complex state machines
- Handling timing and delays reliably
- Coordinating across multiple notification providers
- Dealing with race conditions and edge cases
Workflows handles all of this for you.
How It Works
1. Define a Trigger
Every workflow starts with a trigger - an event that kicks off the automation:
// Track events from your appawait fbf.track({ userId: 'user-123', event: 'cart.abandoned', properties: { cartValue: 149.99, items: ['product-abc', 'product-xyz'] }});2. Add Conditions
Control who enters the workflow with powerful conditions:
// Only trigger for high-value carts from active usersuser.status == "active" && event.properties.cartValue > 503. Chain Actions
Build your sequence with our visual builder or via API:
- Notify: Send messages via email, SMS, push, or in-app
- Wait: Pause for a specific duration
- Wait for Event: Pause until a user takes an action (or times out)
- Update User: Modify user attributes
- Webhook: Call external APIs
4. Monitor Everything
Real-time visibility into every workflow instance:
- See which step each user is on
- Track conversion rates at each step
- Debug failed instances
- Cancel running workflows
Example: Cart Abandonment Flow
Here's a complete cart abandonment workflow:
- Trigger:
cart.abandonedevent - Condition:
event.properties.cartValue > 25 - Wait: 1 hour
- Wait for Event:
purchase.completed(timeout: 24h) - If no purchase: Send email reminder
- Wait: 24 hours
- Wait for Event:
purchase.completed(timeout: 48h) - If no purchase: Send SMS with discount code
The workflow automatically exits if the user completes their purchase at any point.
Built for Scale
- Millions of concurrent instances: Handle your entire user base
- Sub-second trigger latency: Workflows start immediately
- Exactly-once execution: No duplicate actions
- Automatic retries: Failed actions are retried with backoff
Getting Started
- Create a workflow in the dashboard
- Define your trigger event
- Add your actions
- Enable and deploy
// Start tracking eventsawait fbf.track({ userId: 'user-123', event: 'signup.completed'}); // The workflow takes it from hereCheck out the documentation to build your first workflow.