For the complete documentation index, see llms-docs.txt or the site index llms.txt. Full docs corpus: llms-full-docs.txt. Prefer the markdown version of this page at /docs/webhooks/event-types.md. Product capabilities: skill.md. Docs MCP: /docs/mcp. Site MCP: /mcp.

Event Types

List of all events you can subscribe to via webhooks.

Reloop supports the following active event types. Each delivery uses a consistent top-level envelope; event-specific fields live under data and use snake_case.

Email lifecycle

EventDescription
email.sentEmail accepted for delivery (immediate send)
email.scheduledEmail accepted with a future scheduled_at (replaces email.sent for that message)
email.deliveredDelivered to the recipient MTA
email.bouncedPermanent delivery failure
email.delivery_delayedTransient failure / delay
email.complainedRecipient marked as spam (feedback loop)
email.failedPermanent send failure before delivery (or message expired)
email.openedRecipient opened the email
email.clickedRecipient clicked a link in the email
email.receivedInbound email successfully received

Email data shape (outbound)

{
  "email_id": "em_…",
  "from": "Acme <onboarding@example.com>",
  "to": ["user@example.com"],
  "subject": "Hello",
  "status": "delivered",
  "error": {
    "code": 550,
    "message": "User unknown"
  },
  "url": "https://example.com/path"
}
  • error is present on bounce, delay, complaint, and failure events.
  • url is present on email.clicked.
  • scheduled_at is present on email.scheduled.

Inbound email.received data shape

{
  "email_id": "in_…",
  "mailbox_id": "mb_…",
  "from": "sender@example.com",
  "from_name": "Sender",
  "to": ["inbox@yourdomain.com"],
  "cc": [],
  "subject": "Inbound Message",
  "thread_id": "thr_…",
  "has_attachments": false,
  "is_spam": false,
  "status": "received",
  "message_id": "<rfc822@id>"
}

Domain lifecycle

EventDescription
domain.createDomain created
domain.updateDomain updated
domain.deleteDomain deleted
domain.undeleteDomain restored
domain.verifyDomain DNS verified

Domain data shape

{
  "id": "dom_…",
  "name": "example.com",
  "status": "active"
}

API key lifecycle

EventDescription
api-key.createAPI key created
api-key.updateAPI key updated / enabled / rotated
api-key.deleteAPI key deleted
api-key.revokeAPI key revoked (disabled)

API key data shape

{
  "api_key_id": "key_…",
  "status": "disabled",
  "action": "revoked"
}

status and action are optional and only set for some transitions.

Contact lifecycle

EventDescription
contact.createContact created
contact.updateContact updated
contact.deleteContact deleted
contact.subscribedContact status set to subscribed
contact.unsubscribedContact status set to unsubscribed
contact.blockedContact status set to blocked
contact.group.createContact group created
contact.group.updateContact group updated
contact.group.deleteContact group deleted

Contact data shape

{
  "id": "con_…",
  "email": "contact@example.com",
  "first_name": "Ada",
  "last_name": "Lovelace",
  "status": "subscribed"
}

Contact group data shape

{
  "id": "grp_…",
  "name": "VIP"
}

Envelope

{
  "id": "whev_…",
  "type": "email.delivered",
  "created_at": "2026-07-22T12:00:00.000Z",
  "data": { }
}

Coming soon (not subscribable yet)

These event IDs exist in the catalog but are inactive until the pipeline emits them:

EventNotes
email.suppressedPre-send suppression event not wired yet
api-key.rate_limitedRate-limit publisher not wired yet

Learn More

Was this page helpful?

Edit this page