Outbound Webhooks

Send your data anywhere the moment it happens. A webhook POSTs a signed JSON message to your URL for every new conversion, approval, affiliate sign-up or cap hit — no polling the API.

What Webhooks Do

Open Tools → Webhooks. Each endpoint receives the events it subscribes to, filtered by campaign or affiliate if you like, and signed with its own secret. You can add up to 20 endpoints.

To send data to HubSpot, Salesforce, Zapier or Make without code, see CRM & Zapier.

Events

EventSent whenArrives
conversion.createdA conversion is recorded — any status, including pending and rejected.Within about a minute
conversion.status_changedA conversion is approved, rejected or otherwise changed by your team, the API or an advertiser.Within about a minute
cap.reachedA campaign or affiliate hits a click or conversion cap — once per cap per period.Within about a minute
affiliate.signupAn affiliate signs up, is added by your team or is imported.Instantly
affiliate.status_changedAn affiliate is approved, rejected, suspended or reactivated.Instantly

A new endpoint starts with events from the moment it is created; past events are not replayed. Imported conversion history is never sent.

Adding an Endpoint

  1. Click Add webhook

    Start from a template (Conversions to my system, New affiliates to my CRM, Cap alerts) or from scratch.

  2. Enter the endpoint URL

    It must be HTTPS and reachable from the internet. You can add custom headers, for example an API key your receiver expects.

  3. Choose events and optional filters

    Limit to certain campaigns (conversion and cap events) or affiliates. Leave filters empty to send everything.

  4. Copy the signing secret and send a test

    Put the secret in your receiver, then use Send test event. Test messages carry sample data and have "test": true.

If the secret leaks, rotate it from Edit. The old secret stops working immediately, so update your receiver straight away.

Message Format

Every message has the same envelope; the event-specific fields are in data.

JSON
{
  "id": "5d1c0e0a-7f8e-4a7b-9d55-3e2f8f1b6c21",
  "event": "conversion.created",
  "created_at": "2026-10-19T08:15:02Z",
  "account_id": 10001,
  "webhook_id": 14,
  "test": false,
  "data": { … }
}

Money values are numbers in the currency named next to them. Times are UTC in ISO 8601. The full field reference for each event is in the Developer guide tab on the Webhooks page.

Verifying the Signature

Each request carries these headers:

HeaderMeaning
X-Affclix-EventEvent name, for example conversion.created
X-Affclix-DeliveryUnique delivery ID — the same as the envelope id
X-Affclix-Attempt1 for the first try, 2 or more for retries
X-Affclix-Signaturet=<unix time>,v1=<signature>

To verify, compute HMAC-SHA256 of the timestamp, a dot and the raw request body, using your signing secret, and compare it with v1. Reject requests whose timestamp is more than five minutes old.

PHP
$body = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_X_AFFCLIX_SIGNATURE']), $sig);

$expected = hash_hmac('sha256', $sig['t'] . '.' . $body, $secret);

if (! hash_equals($expected, $sig['v1']) || abs(time() - (int) $sig['t']) > 300) {
    http_response_code(400);
    exit;
}

Delivery and Retries

  • Answer with any 2xx status within 10 seconds. Do slow work after you respond.
  • Anything else is retried 6 more times: after 1 minute, 5 minutes, 30 minutes, 2 hours, 8 hours and 24 hours.
  • Redirects are not followed — use the final URL.
  • Events can arrive more than once or out of order. Use the id to ignore duplicates.
  • If every delivery fails for 72 hours, the endpoint is turned off and the account owner gets an e-mail.

Delivery Log

The Delivery log tab lists every event sent, what your endpoint answered and any retries, searchable by conversion or affiliate ID. Successful deliveries are kept for 14 days and failed ones for 30. Click Resend on a single delivery, or Resend failed deliveries on an endpoint after you fix your receiver.

Permission

Managing webhooks needs the Outbound webhooks permission (Integrations › Developer).

Rate this article
★★★★★
Thanks for rating!

Was this article helpful?