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.

GET/api/campaigns

Returns all campaigns with their current status and metadata.

Response

json
[
  {
    "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.

GET/api/campaigns/steps?campaign_id=1

Returns ordered steps for a campaign.

Parameters

NameTypeDescription
campaign_id*numberID of the campaign

Response

json
[
  {
    "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.

GET/api/campaigns/stats?campaign_id=1

Returns statistics for a specific campaign.

Parameters

NameTypeDescription
campaign_id*numberID of the campaign

Response

json
{
  "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.

Example step with branching
{
  "step_order": 3,
  "subject": "Still interested?",
  "delay_hours": 48,
  "condition": {
    "type": "not_opened",
    "step_id": 2
  }
}