Outbound Webhooks
What is a webhook?
Section titled “What is a webhook?”A webhook is an HTTP callback. KickoffLabs sends a request to your URL when a selected campaign event happens, so your app can receive lead updates in near real time.
What are KickoffLabs webhooks used for?
Section titled “What are KickoffLabs webhooks used for?”Use outbound webhooks to send KickoffLabs lead data to your CRM, database, backend service, marketing platform, or automation tool.
How to setup an outbound webhook from KickoffLabs
Section titled “How to setup an outbound webhook from KickoffLabs”- Go to your campaign dashboard and open outbound webhook settings.
- Select “Add a New Outbound Webhook”.
- Configure the webhook:
- Post URL: The URL where KickoffLabs should send data.
- Events: One or more events that should trigger this URL.
- Save the webhook.


Most integrations start with the new_signup event. You can subscribe one URL to multiple events.
API setup
Section titled “API setup”You can also create an outbound webhook with the API.
POST https://api.kickofflabs.com/v2/CAMPAIGN_ID/outbound-webhook
Required parameters:
api_key: Your API key, or send it in anAuthorization/Authenticationheader for JSON requests.url: Destination URL. Must start withhttp.eventorevents: One event or an array of events.
Optional parameters:
source: Stored with the webhook for source tracking.
Example request:
curl -X POST "https://api.kickofflabs.com/v2/CAMPAIGN_ID/outbound-webhook" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer KEY" \ -d '{ "url": "https://example.com/kickofflabs-webhook", "events": ["new_signup", "referral"] }'Successful response:
{ "message": "Webhook Created", "referenceId": 123, "events": ["new_signup", "referral"]}Delete a webhook by URL:
DELETE https://api.kickofflabs.com/v2/CAMPAIGN_ID/outbound-webhook
Required parameters:
api_keyurl
Supported webhook events
Section titled “Supported webhook events”KickoffLabs supports these outbound webhook event names:
new_signuprepeat_signupscore_changemarked_as_fraudulentopted_outreferraltaggedreward_levelverifiedphone_number_opt_outnew_signup_not_excludeddeleted
For backwards compatibility, API requests that submit fraudulent are converted to marked_as_fraudulent.
Invalid event names return 409 with a message like Invalid event type ....
Data posted with webhooks
Section titled “Data posted with webhooks”KickoffLabs posts the same common lead payload used by the API, plus an __event field containing the event name. See Create Lead API Response for the common lead field reference.
Common data
Section titled “Common data”Common webhook payload data can include:
- Lead identity:
id,social_id,email,phone_number,uid - Campaign identity:
campaign_id,list_id - Name/display:
first_name,given_name,family_name,display_name,avatar - Referral state:
rank,counter,lead_count,referrals, referral-count groups,social_url - Status:
verified,verified_email,verified_phone_number,waitlisted,opted_out,sms_opted_out,fraudulent - Custom data:
custom_fields,utm,tags - URLs:
redirect_url,thankyou_url,status_url,unsubscribe_url __event: Trigger event name
Event-specific data
Section titled “Event-specific data”Some events add extra fields:
referral: Adds__referralwith the referred lead’ssocial_idand, when available,emailand/orphone_number.marked_as_fraudulent: Adds__fraudulentwith the lead’s excluded/fraudulent flags.score_change: Adds__score_changewith score-change event data.tagged: Adds__taggedwithtag_id,name, andpoints.reward_level: Adds__reward_levelwithreward_level_id,subject,required_points, andemailed.
Delivery format
Section titled “Delivery format”By default, KickoffLabs sends webhook payloads as JSON:
Content-Type: application/json- Body: JSON string of the lead/event payload
User-Agent: KickoffLabs
For legacy/backport webhook configurations and URLs containing klaviyo, KickoffLabs sends application/x-www-form-urlencoded data instead.
Technical considerations
Section titled “Technical considerations”- Your endpoint should accept
POSTrequests. - Treat webhooks as at-least-once delivery and make your handler idempotent.
- Return a
2xxresponse quickly after receiving the payload. - Large campaigns can generate significant webhook traffic.
- Store the
social_id,campaign_id,list_id, and__eventfields to dedupe and debug deliveries.