Start Drip Campaign
Put a contact into a drip campaign — a sequence of follow-up messages sent on a schedule you configured in the app.
This is the integration point for your own systems: a customer completes an order, a CRM stage changes, a trial starts, and you want the matching follow-up sequence to run without anyone in your team doing it by hand.
The endpoint enrols only. Timing, opt-out checks, template validation and billing all stay with the campaign, so calling this cannot make a contact receive messages faster than the campaign allows, or receive one they have opted out of.
Endpoint
https://api.splashifypro.com/api/v1/public/drip/start
Headers
Request body
Identify the contact by either phone_number or contact_id.
{
"campaign_id": "8f1c2a30-9b44-11f1-9c3e-2f5b7a1d4e60",
"phone_number": "919876543210"
}The contact must already exist. This endpoint does not create one — a mistyped number would silently add a contact your campaign then personalises with empty values. Create it first with Create Contact.
Example
curl -X POST https://api.splashifypro.com/api/v1/public/drip/start \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaign_id": "8f1c2a30-9b44-11f1-9c3e-2f5b7a1d4e60",
"phone_number": "919876543210"
}'Successful response — 200 OK
{
"result": true,
"message": "Campaign started for this contact",
"campaign_id": "8f1c2a30-9b44-11f1-9c3e-2f5b7a1d4e60",
"contact_id": "3a109d91-5a58-423f-bf4d-5d5c4b341c4d"
}The first message goes out after that step's configured wait — not immediately, unless the first step's delay is zero.
Errors
Retrying is safe
409 already_enrolled is not a failure to recover from — it means the contact
is already in the sequence. If your webhook delivery retries, or an order event
fires twice, the second call reports this and changes nothing. A contact is
never enrolled twice and never receives a duplicate message.
To let a contact go through the same campaign again later, enable
re-enrolment on the campaign. Without it, a contact who has already
completed the sequence is refused with the same 409.
List your campaigns
https://api.splashifypro.com/api/v1/public/drip/campaigns
curl https://api.splashifypro.com/api/v1/public/drip/campaigns \
-H "Authorization: Basic YOUR_API_KEY"{
"result": true,
"campaigns": [
{
"campaign_id": "8f1c2a30-9b44-11f1-9c3e-2f5b7a1d4e60",
"name": "Post-purchase onboarding",
"status": "active",
"trigger_type": "manual"
}
]
}Only campaigns with "status": "active" can be started.
Campaigns built for API use
A campaign's trigger decides what starts it. Choosing Manual / API means it starts only when you call this endpoint or a chatbot flow starts it — no message, tag or chat event will enrol anyone.
The other trigger types (new message, tag added, chat resolved, chat assigned) keep working as normal and can also be started through this endpoint when you want to add someone deliberately.
What the campaign still controls
Calling this does not bypass anything the campaign was configured to do:
- Opt-outs are checked when each message is about to send, not when you enrol. A contact who opts out mid-sequence stops receiving the rest.
- Stop conditions still apply — if the campaign stops on reply, a reply ends it.
- Quiet hours still hold messages that would land overnight.
- Wallet balance is checked before each send; an empty wallet pauses the contact at their current step and resumes there after a top-up.
SMS messages
A campaign can include SMS messages next to WhatsApp and RCS ones. A contact you start through this endpoint gets them like any other contact. To add one to a campaign and see who gets it, see SMS in drip campaigns.