Campaign Lifecycle
Campaigns move through a defined set of states from creation to completion. Understanding this lifecycle helps you know when to start, pause, or inspect a campaign.
Campaigns are created in the
not_started state by default. Use the startImmediately flag (see below) to move directly to running on creation, or start the campaign manually via the API or dashboard later.
Campaign Kinds
Scalysis supports three campaign kinds, each optimised for a different merchant workflow:cod
Cash-on-Delivery — Confirm COD orders with customers before dispatch to reduce return rates.
list
List — General-purpose outbound dialing for any contact list, such as re-engagement or surveys.
ndr
NDR (Non-Delivery Report) — A specialised flow for following up on failed delivery attempts.
kind field when creating a campaign to select the appropriate flow.
Uploading Contacts
You can supply contacts to a campaign in two ways:contacts[] Array (recommended for API use)
Pass contacts as a JSON array of objects. Each object should include the fields your script expects (at minimum a phone number):csvText String
If you have a CSV export from your order management system, pass the raw CSV content as a string in thecsvText field:
Key Campaign Options
startImmediately
Controls whether dialing begins as soon as the campaign is created.true— the campaign moves torunningimmediately after creation.false(default) — the campaign is created innot_startedstate; you start it manually.
maxConcurrency
Sets the maximum number of simultaneous outbound calls Scalysis will place for this campaign. This is useful for rate-limiting your outreach or staying within carrier thresholds.The server may enforce an upper cap on
maxConcurrency regardless of the value you provide. Contact Scalysis support if you need a higher concurrency limit for your account.Creating a Campaign
Send aPOST request to /api/v1/campaigns with your contact list, script, and options. A successful response returns the campaign_id you will use for all subsequent control operations.
Save the
campaign_id immediately. You will need it to start, pause, resume, or stop the campaign through subsequent API calls.Controlling a Campaign
Once a campaign is created, usePOST /api/v1/campaigns/{campaign_id}/control to change its state. Pass an action field in the request body: