Docs Home Log in

Webhooks

Two URLs your other tools call: one adds leads to a list, one reports conversions. Each carries its own secret, so no key header is needed.

Add leads to a list

Each lead list has its own webhook URL. A form, Zapier, n8n or your CRM posts leads to it; they join the list and enter the campaigns it feeds. Get the URL with list_webhook.

http
POST https://api.katasend.com/hooks/lists/<token>
Content-Type: application/json

Body: one lead, or {"leads": [...]} with up to 1000 leads.

json
{
  "email": "jane@acme.com",
  "first_name": "Jane",
  "company": "Acme",
  "priority": 1,
  "country": "US"
}
FieldNotes
emailRequired.
first_name, companyOptional.
priority1 is sent first, then 2, 3…; no priority goes after the others.
anything elseBecomes a variable on the lead, like {{country}}. Field names are lowercased. Nested objects are ignored.

New addresses get the free email check. A person already live in a sequence is not enrolled twice. When the list feeds several campaigns, leads are split between them.

Answer:

json
{
  "ok": true,
  "list": "Brokers Ireland",
  "received": 1,
  "new_contacts": 1,
  "added_to_list": 1,
  "email_check": { ... },
  "enrolled": [ ... ]
}

Errors: 401 for an unknown URL, 400 when no lead has an email. list_webhook with rotate: true makes a new URL; the old one stops working.

If the list feeds an active campaign, people you post here will get emails.

Conversion postback

Your backend calls it when a lead converts. Get the URL in Integrations or with get_postback.

url
https://api.katasend.com/hooks/postback/<key>

GET or POST. Query string, JSON or form: all work. Field names are matched loosely.

FieldAlso acceptedMeaning
katatoken, click_id, clickid, subid, sub_id, kata_tokenThe token Kata added to your landing URL. Best.
emaile-mail, mail, user_email, customer_email, contactThe lead's email, when you have no token.
valueamount, revenue, payout, price, total, sumMoney value, added to the lead.
eventevent_name, type, action, goalWhat happened: signup, purchase…
notecomment, labelFree text.
datadata[key]=…, data.key=…Fields saved on the lead. Alone, it is not a conversion.

Send kata or email; one is required.

bash
curl "https://api.katasend.com/hooks/postback/<key>?kata=TOKEN&event=purchase&value=490"
bash
curl -X POST https://api.katasend.com/hooks/postback/<key> \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@acme.com","event":"call booked","data":{"plan":"pro"}}'

Answer:

json
{
  "ok": true,
  "message_id": 812,
  "campaign_id": 3,
  "contact": "jane@acme.com",
  "converted": true,
  "value_added": 490,
  "lead_value": 490
}
StatusWhen
400Neither kata nor email was sent.
401Unknown postback key.
404Kata never emailed this contact.

A conversion marks the lead converted, adds the value, stops its sequences and cancels its queued emails. Making a new postback URL in Integrations stops the old one at once.