Headers (every request)
?o={organization_id} for tenant context.
Concepts
Status Lifecycle
draft → scheduled → pending → in-progress → completed
Audience Types
Template Variables
Templates support placeholder variables like{first_name}, {last_name}, etc. These are replaced per-recipient using the recipient model’s getVariableBindings(). The template body is localized per customer’s preferred locale.
1
2
Create an Audience
- Dynamic audience (filtered customers)
- Dynamic audience (filtered bookings)
filters object accepts the same filters available on the /customers endpoint (for customers type) or /bookings endpoint (for bookings type).Includes
3
Create a Campaign
4
Preview Draft Messages
Before sending, preview the generated messages (max 10):Returns a collection of
broadcast-messages with variable placeholders resolved per recipient, channels determined (invalid channels auto-removed if customer lacks email/mobile), and content localized.5
Start the Campaign
The campaign transitions through:
scheduled → pending → in-progress → completed.Progress is tracked via sent_count, failed_count, and total_count attributes. These update in real-time (a WebSocket event broadcast-campaigns.updated fires every 5 messages and on completion).Stop a Campaign
Reverts the campaign todraft and deletes all unsent (pending/draft) messages:
List Campaigns
Filters
Sorting
Includes
List Campaign Messages
Message Attributes
Message Includes
Full Workflow
?o={organization_id} for tenant context.