Skip to content

Webhooks event types

Learn more about the types of events that Novu sends webhook events for.

Novu supports the following webhook event types:

  • 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.

Message events

Where message events come from

Not every message.* event is triggered the same way. Some fire when Novu sends a notification; others arrive later from your delivery provider or from subscriber actions in the Inbox.

EventTypical sourceRequires Email Activity Tracking?
message.sentNovu worker, right after the provider accepts the sendNo
message.failedNovu worker (send error) or provider bounce/drop via activity trackingPartial — provider failures need activity tracking
message.deliveredProvider inbound webhook (for example, SendGrid delivered)Yes, for email
message.seenProvider inbound webhook (for example, SendGrid open) or InboxYes, for email opens from the provider

message.sent vs message.delivered (email)

  • message.sent means Novu successfully handed the email to SendGrid (or another provider). It fires immediately.
  • message.delivered means the provider later confirmed the recipient's mail server received the email. It only arrives if Email Activity Tracking is enabled on the integration that sent the message.

Seeing message.sent in your outbound webhook logs does not mean delivery or open tracking is configured.

Event reference

  • 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 delivery provider confirms the message was delivered to the recipient's mail server (for email, via activity tracking). The payload contains the details of the event.
  • message.failed: This webhook is triggered when Novu fails to send the message to the provider, or when the provider reports a bounce, drop, or block (via activity tracking). The payload contains the details of the event.
  • message.read: This webhook is triggered when a message has been read by the subscriber (for example, via the Inbox). The payload contains the details of the event.
  • message.seen: This webhook is triggered when a message is opened. For email, provider open events (for example, SendGrid open) are forwarded as message.seen — not message.opened. The payload contains the details of the event.
  • message.sent: This webhook is triggered when Novu hands the message off 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.

On this page

Edit this page on GitHub