API webhooks

Create and monitor webhook resources without exposing secrets.

Webhook management is available under /api/v2/webhooks. Treat webhook URLs and signing material as secrets.

Before you begin

Create an API key with the minimum workspace access and decide which event family your integration needs.

Steps

  1. Open Settings → Integrations.
  2. Create or select a webhook destination.
  3. Record the configured event IDs and endpoint status.
  4. Send a test request to a non-production receiver.
  5. Verify the response and inspect delivery attempts before enabling production processing.

Keep the receiver idempotent. Store the event identifier and acknowledge only after validating the payload. Do not assume that every internal application event is a supported customer webhook.

Configure and verify a webhook

  1. Create an endpoint that accepts the event payload and records the event identifier before returning a success response.
  2. In Settings → Integrations, create a webhook with the visible Name, Target hook URL, Event type, and optional Campaign or custom interest value.
  3. Save it, open the destination, and use Test. Confirm the receiver records the event and the API reports success: true.
  4. Review Webhook events for status_code, success, retry_count, will_retry, and error_message.
  5. Remove or update the destination when its URL changes; deleting a destination does not erase historical delivery attempts.

Use cursor pagination (limit and starting_after) for event history. Treat retries as at-least-once delivery and make the consumer idempotent.

Failure recovery

A 4xx receiver response usually needs a payload or authentication fix; a 5xx or timeout can be retried with bounded backoff. Confirm the next attempt in Webhook events and escalate with the event ID and redacted status.

Webhook field reference

FieldRequiredMeaning
NameYesWorkspace label for the destination.
Target hook URLYesHTTPS endpoint that accepts the delivery.
Event typeYesEvent identifier returned by the event-types endpoint.
CampaignOptionalLimits events to one campaign when selected.
Custom interest valueConditionalRequired when the selected event is a custom interest label.

Delivery verification

After Test, verify the receiver stored the event ID, returned a success response, and did not create a duplicate record on retry. In Webhook events, inspect status_code, success, retry_count, will_retry, error_message, and timestamp_next_retry.