Skip to main content
Novu supports the following webhook event types:
  • Email events: Events when Novu receives inbound mail on a verified domain with a webhook route.
  • Message events: Events about message delivery status changes.
  • Preference event: Event about subscriber preference changes.
  • Workflow events: Events about workflow creation, updates, and deletions.
Each event includes detailed information about the affected resource and the changes that occurred.

Email events

  • email.received: Triggered when Novu receives an inbound email that matches an Inbound Email Webhook route on a verified domain. The payload includes normalized mail content (from, to, subject, text, html, headers, attachments, threading fields) plus domain and route metadata.
email.received is for user mail received on your domain. It is not the same as delivery or engagement events from your outbound email provider — see Email Activity Tracking for those.
Example payload shape:
{
  "object": {
    "domain": {
      "id": "domain_id",
      "name": "mail.yourcompany.com",
      "data": {}
    },
    "route": {
      "address": "support",
      "data": { "tenantId": "acme" }
    },
    "mail": {
      "from": [{ "address": "user@example.com", "name": "Jane" }],
      "to": [{ "address": "support@mail.yourcompany.com" }],
      "subject": "Re: Your order",
      "text": "Thanks, that helps!",
      "html": "<p>Thanks, that helps!</p>",
      "messageId": "<message-id@example.com>",
      "inReplyTo": "<original-message-id@novu.co>",
      "references": ["<thread-root@novu.co>"],
      "headers": {},
      "attachments": [],
      "date": "2026-06-30T12:00:00.000Z"
    }
  }
}

Message events

  • message.archived: This webhook is triggered when a subscriber archives a message. The payload contains the details of the event.
  • message.delivered: This webhook is triggered when a message delivery provider acknowledged the message delivery to the end receiving client. The payload contains the details of the event.
  • message.failed: This webhook is triggered when Novu tries to send the message to the delivery provider and it got failed. The payload contains the details of the event.
  • message.read: This webhook is triggered when a message has been read by the subscriber. The payload contains the details of the event.
  • message.seen: This webhook is triggered when a subscriber opens a message. The payload contains the details of the event.
  • message.sent: This webhook is triggered when Novu sends the message to the delivery provider. The payload contains the details of the event.
  • message.snoozed: This webhook is triggered when a message is snoozed by the subscriber. The payload contains the details of the event.
  • message.unarchived: This webhook is triggered when an archived message is unarchived. The payload contains the details of the event.
  • message.unread: This webhook is triggered when a message is unread or marked as unread by the subscriber. The payload contains the details of the event.
  • message.unsnoozed: This webhook is triggered when a message is unsnoozed by a subscriber. The payload contains the details of the event.

Preference event

  • preference.updated: This webhook is triggered when a subscriber preference is updated. The payload contains the details of the event.

Workflow events

  • workflow.created: This webhook is triggered when a workflow is created. The payload contains the details of the event.
  • workflow.deleted: This webhook is triggered when a workflow is deleted. The payload contains the details of the event.
  • workflow.published: This webhook is triggered when a workflow event occurs, that is when a workflow is synced from dev to prod environment. The payload contains the details of the event.
  • workflow.updated: This webhook is triggered when a workflow is updated. The payload contains the details of the event.