Webhooks

Receive real-time notifications when events happen in your newsletter.

What Are Webhooks?

Webhooks are automated messages sent to your server when specific events occur. They let you:

  • Sync subscribers to external systems
  • Trigger actions in other tools
  • Build custom integrations
  • Track events in real-time

Creating a Webhook

  1. Go to Settings → Webhooks
  2. Click "Add Webhook"
  3. Enter your endpoint URL
  4. Select events to subscribe to
  5. Click "Create Webhook"

Available Events

Event Description
subscriber.created New subscriber signed up
subscriber.updated Subscriber details changed
subscriber.deleted Subscriber removed
issue.sent Newsletter was sent
issue.published Issue published to the web
email.opened Subscriber opened an email
email.clicked Subscriber clicked a link
email.bounced Email delivery failed
email.unsubscribed Subscriber unsubscribed via email link

Webhook Payload

Each webhook sends a JSON payload:

{
  "event": "subscriber.created",
  "timestamp": "2025-01-10T14:30:00Z",
  "newsletter": {
    "id": 123,
    "name": "Tech Weekly",
    "subdomain": "tech-weekly"
  },
  "data": {
    "subscription_id": 456,
    "email": "[email protected]",
    "name": "John Doe",
    "status": "active",
    "subscribed_at": "2025-01-10T14:30:00Z",
    "tags": []
  }
}

See the API Webhooks reference for detailed payload examples for every event type.

Webhook Security

Verify webhooks are from DailyDraft:

Signature Verification

Each webhook includes an X-DailyDraft-Signature header. Verify it using your webhook secret.

IP Allowlist

Optionally restrict your endpoint to accept requests only from DailyDraft IPs.

Testing Webhooks

  1. Go to your webhook settings
  2. Click "Send Test"
  3. A sample payload is sent to your endpoint
  4. Verify it was received correctly

Webhook Logs

View delivery logs for each webhook:

  • Timestamp of each delivery attempt
  • HTTP response code
  • Response body (first 1KB)
  • Retry attempts if failed

Retry Policy

Failed webhooks are retried up to 3 times with polynomial backoff. After all retries are exhausted, the delivery is marked as failed.

Endpoints that accumulate 10 consecutive failures are automatically disabled.

Tip: Return a 2xx status code quickly. Process webhook data asynchronously to avoid timeouts.

Still need help?

Can't find what you're looking for? Chat with our AI assistant or create a support ticket.

Sign in to get support