Campaigns
Campaign lifecycle, sequence building, and execution.
Campaigns
Campaigns are the core unit of outreach in Pipelime. Each campaign contains a sequence of email steps sent to a list of contacts.
Campaign Lifecycle
draft → active → paused → completed| Status | Description |
|---|---|
draft | Initial state. Edit steps, assign contacts and email accounts |
active | Campaign is executing. Emails are being sent on schedule |
paused | Temporarily stopped. Can be resumed |
completed | All contacts have been processed through all steps |
Creating a Campaign
# Via CLI
Pipelime campaign create --name "Q1 Outreach"
# Via API
curl -X POST https://api.pipelime.app/campaigns \
-H "Authorization: Bearer ki_your_key" \
-H "Content-Type: application/json" \
-d '{"name": "Q1 Outreach"}'Sequence Steps
Each campaign has one or more steps. Steps are executed in order with configurable delays between them.
# Add initial email (sent immediately)
Pipelime campaign add-step <campaign-id> \
--subject "Hi {{first_name | \"there\"}}" \
--body "<p>Your email body here...</p>" \
--delay-days 0
# Add follow-up (sent 3 days after previous step)
Pipelime campaign add-step <campaign-id> \
--subject "Re: Hi {{first_name | \"there\"}}" \
--body "<p>Just following up...</p>" \
--delay-days 3Email Account Assignment
Assign one or more email accounts to a campaign. You can select accounts in the Sending from dropdown when editing a sequence step.
Pipelime campaign assign-accounts <campaign-id> \
--account-ids ea_123,ea_456How Multiple Accounts Work
When you assign multiple email accounts to a campaign, Pipelime distributes them across your contacts using round-robin. For example, with two accounts (A and B) and four contacts:
| Contact | Account |
|---|---|
| Contact 1 | A |
| Contact 2 | B |
| Contact 3 | A |
| Contact 4 | B |
Once a contact receives their first email from a specific account, all follow-up steps for that contact are sent from the same account. This keeps the email thread consistent and improves reply rates.
Automatic Failover
Pipelime switches to a different account only when the assigned one becomes unavailable:
- High bounce rate — if an account exceeds the bounce threshold, it is auto-paused and a healthy account takes over
- Daily send limit reached — if the assigned account has no remaining sends for the day, another account with capacity is used
In both cases, the contact's future steps continue from the new account.
Editing Sending Accounts on Active Campaigns
You can change the assigned email accounts at any time, even while a campaign is active. Changes apply to all emails that have not been sent yet.
Scheduling
Configure when emails are sent:
Pipelime campaign update <campaign-id> \
--timezone "America/New_York" \
--send-days "mon,tue,wed,thu,fri" \
--send-window-start "09:00" \
--send-window-end "17:00" \
--send-interval 3See Scheduling Guide for details.
Stop Conditions
Campaigns automatically stop sending to a contact when:
- The contact replies (if
stop_on_replyis enabled) - The contact unsubscribes
- The contact is added to the blocklist
- The contact's email bounces
Activation Preflight
Before activating a campaign, Pipelime runs preflight checks:
- At least one step exists
- At least one contact is assigned
- At least one email account is assigned
- Email accounts are connected and healthy
- Physical address is configured (CAN-SPAM)
Pipelime campaign start <campaign-id>