Developers
API reference

Outbound webhooks

Outbound webhooks push Pulse events to your own systems in near-real-time. Use them to sync customer data to your warehouse, notify Slack on campaign completion, or trigger downstream automation.

Adding a destination

  1. Go to Integrations → Outbound webhooks → + New destination.
  2. Give the destination a name and URL.
  3. Pick the events to subscribe to (or * for all).
  4. )
  5. Copy the generated signing secret — you'll use it to verify deliveries.

Delivery format

POST https://your-endpoint.com/pulse
Content-Type: application/json
X-Pulse-Event: order_completed
X-Pulse-Signature: hmac-sha256 of body using your secret

{
  "event_type": "order_completed",
  "workspace_id": "uuid",
  "payload": { ... },
  "sent_at": "2026-05-10T14:03:05Z"
}

Signature verification

Compute HMAC-SHA256 over the raw request body using the destination's secret, then compare to the X-Pulse-Signature header.

import crypto from 'node:crypto'

function verify(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex')
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expected, 'hex')
  )
}

Delivery log

Every delivery attempt is recorded with the HTTP status, response snippet, and timestamp. If a delivery fails, use the Replay button to retry it manually.

Testing

Click Test on any destination to deliver a synthetic ping event through the same pipeline.

Common event types

  • customer.created, customer.updated
  • campaign.sent, campaign.completed
  • journey.entered, journey.exited
  • order_created, order_completed, order_refunded
  • email_bounced, email_complained, unsubscribed