Features
Campaigns
Build automated drip campaigns
Overview
Drip campaigns let you build automated multi-step email sequences. Define a series of steps with configurable delays, and the platform handles delivery scheduling and progress tracking for each recipient automatically.
List Campaigns
Retrieve all campaigns along with their current status.
/api/campaignsReturns all campaigns with their current status and metadata.
Response
[
{
"id": 1,
"name": "Onboarding Sequence",
"status": "active",
"created_at": "2026-01-15T10:00:00Z",
"steps_count": 5,
"recipients_count": 230
},
{
"id": 2,
"name": "Re-engagement",
"status": "draft",
"created_at": "2026-02-20T14:30:00Z",
"steps_count": 3,
"recipients_count": 0
}
]Campaign Steps
Fetch the ordered list of steps for a specific campaign. Each step includes its delay, subject, and position in the sequence.
/api/campaigns/steps?campaign_id=1Returns ordered steps for a campaign.
Parameters
| Name | Type | Description |
|---|---|---|
campaign_id* | number | ID of the campaign |
Response
[
{
"id": 1,
"step_order": 1,
"subject": "Welcome to the platform",
"delay_hours": 0,
"template_id": 10
},
{
"id": 2,
"step_order": 2,
"subject": "Getting started guide",
"delay_hours": 24,
"template_id": 11
},
{
"id": 3,
"step_order": 3,
"subject": "Pro tips for power users",
"delay_hours": 72,
"template_id": 12
}
]Campaign Stats
Get aggregate statistics for a campaign including total recipients and overall completion rate.
/api/campaigns/stats?campaign_id=1Returns statistics for a specific campaign.
Parameters
| Name | Type | Description |
|---|---|---|
campaign_id* | number | ID of the campaign |
Response
{
"campaign_id": 1,
"recipients": 230,
"completed": 185,
"completion_rate": 0.804,
"open_rate": 0.62,
"click_rate": 0.18
}Campaign Flow
Each campaign consists of a series of steps executed in order with configurable delays between them. When a recipient enters a campaign, they progress through each step according to the defined schedule.
Steps can also branch based on engagement conditions. For example, you can configure a step to only send if the recipient opened the previous email, or to send an alternative message if they clicked a specific link. This allows you to build adaptive sequences that respond to recipient behavior.
{
"step_order": 3,
"subject": "Still interested?",
"delay_hours": 48,
"condition": {
"type": "not_opened",
"step_id": 2
}
}