Skip to main content
POST
/
outbound-campaigns
/
webhook
/
{webhook_token}
/
Add Audience Member (Webhook)
curl --request POST \
  --url https://data.craftflow.co/api/v1/outbound-campaigns/webhook/{webhook_token}/ \
  --header 'Content-Type: application/json' \
  --data '{
  "first_name": "Jane",
  "last_name": "Doe",
  "phone": "5551234567",
  "email": "jane@example.com",
  "custom_fields": {
    "service_type": "HVAC",
    "source": "website"
  }
}'
{
  "id": "<string>",
  "created_at": "<string>",
  "first_name": "<string>",
  "last_name": "<string>",
  "phone": "<string>",
  "email": "<string>",
  "custom_fields": {},
  "status": "active"
}

Path Parameters

webhook_token
string<uuid>
required

The audience's unique webhook token. Found on the audience detail page in Craft.

Body

first_name
string

Contact's first name. Available as {{first_name}} in campaign message templates.

last_name
string

Contact's last name. Available as {{last_name}} in campaign message templates.

phone
string

Phone number. Accepts most common formats (+15551234567, 555-123-4567, (555) 123-4567). At least one of phone or email is required.

email
string<email>

Email address. At least one of phone or email is required.

custom_fields
object

Arbitrary key-value pairs. Each key becomes a template variable in campaign messages (e.g., {"service_type": "HVAC"}{{service_type}}).

Response

Contact with this phone or email already exists. Existing contact returned (idempotent).
id
string<uuid>
required

Unique identifier for the audience member.

created_at
string<date-time>
required

When the member was added to the audience.

first_name
string
required

Contact's first name.

last_name
string
required

Contact's last name.

phone
string
required

Phone number in E.164 format.

email
string<email>
required

Email address.

custom_fields
object
required

Custom key-value pairs attached to this contact.

status
enum<string>
required

Current status of the audience member.

Available options:activeopted_outdo_not_contact