Skip to main content
POST
Send a contact to a splitter and let it pick which campaign to enroll them in. This uses the same POST /contacts endpoint as Create Contact — the only difference is that you send splitterId instead of campaignId. All splitter management (create, update, stats, distribution strategies) is handled by admins in the dashboard. This endpoint is the only one integrators need.

Request Body

string
required
Phone number in E.164 format (e.g., +15551234567).
string (UUID)
required
The ID of the splitter to route this contact through.
Send either splitterId or campaignId, not both. If both are provided, campaignId takes priority and the splitter is ignored.
string
Full name of the contact.
object
Flat key-value pairs of custom data to store on the contact. All values must be strings — send numbers as "50000", not 50000.These variables are passed to the assigned campaign and available for template substitution in SMS, WhatsApp templates, and voice agent prompts as {{company}}, {{leadSource}}, etc.

Authentication

Either method works:
  • JWT token: Authorization: Bearer <jwt-token>
  • API key: X-API-Key: <api-key> — rate limited to 30 writes per minute.

What happens after the contact is created

  1. The splitter picks a campaign based on its distribution strategy (percentage, time-weighted, or adaptive).
  2. The contact is created in the chosen campaign with all provided customVariables.
  3. The distribution decision is logged (visible in the splitter’s Distribution Logs in the dashboard).
  4. The campaign’s schedule kicks in — calls, SMS, and WhatsApp are scheduled based on that campaign’s configuration.
  5. customVariables are available for template substitution in all outbound messages.

Existing contacts

If a contact with the same phone number already exists for this admin:
  • If active: the contact is updated with the new name and customVariables, then reassigned to the splitter’s chosen campaign. Existing scheduled calls, SMS, and WhatsApp are cancelled and rescheduled.
  • If soft-deleted: the contact is reactivated with the new data and assigned to the splitter’s chosen campaign.
This matches the existing behavior for direct campaignId contact creation.

Response

boolean
Always true on a successful request.
object
The created or updated contact object.

Errors

Zapier

The Zapier endpoint also supports splitters:
Same fields, same behavior. Custom variables can be sent as flat top-level fields — Zapier transform middleware will nest them into customVariables automatically.