Developers
Webhooks

Webhooks

Receive durable FluxDigest events in your application.

Webhooks deliver events when subscriber, newsletter, campaign, form, and operation state changes. They are the public integration mechanism for durable automation; the dashboard's server-sent event stream is not a public API.

Create an endpoint

Workspace Admins can create an endpoint under Settings > Developers > Webhooks. Provide an HTTPS URL and select only the event types your integration handles.

const endpoint = await fluxdigest.webhookEndpoints.create({
  workspaceId: "ws_123",
  url: "https://example.com/webhooks/fluxdigest",
  events: ["subscriber.created", "campaign.sent", "campaign.failed"],
});

The signing secret is shown once. Store it separately from the API key.

Delivery model

FluxDigest provides at-least-once delivery. Your endpoint must:

  1. verify the signature over the exact raw request body;
  2. reject stale timestamps;
  3. deduplicate by event ID;
  4. enqueue processing before returning a 2xx response;
  5. retrieve current resource state when ordering matters.

Delivery order is not globally guaranteed. Duplicate events are expected during network failures and retries.

Event envelope

{
  "id": "evt_01JEXAMPLE",
  "type": "campaign.sent",
  "api_version": "2026-08-24",
  "created_at": "2026-08-24T12:30:00Z",
  "workspace_id": "ws_123",
  "data": {
    "object": {
      "id": "cmp_123",
      "object": "campaign",
      "status": "sent"
    },
    "previous_attributes": {
      "status": "sending"
    }
  }
}