Activity Tracking
Learn how to enable activity tracking to get real-time delivery and engagement events like delivered, opened, and clicked from your email providers.
Activity tracking gives you visibility into what happens to notifications after they are sent to the subscriber. With it, Novu receive and process real-time events from third-party providers, so that you know when the notification is delivered, opened, clicked, or bounced.
How activity tracking works
When your provider emits an event (for example, an email delivered or bounced), Novu:
- Receives the event via inbound webhooks.
- Create step-run trace, so the event is visible in the activity feed.
- Forwards supported events to outbound webhooks if they are enabled in your project.
- Enriches the workflow-run lifecycle with engagement and delivery data, which empowers analytics and workflow variables.
With activity tracking enabled, you get a full picture of the workflow-run lifecycle, not just that a message was “sent,” but whether it reached the recipient, was opened, or engaged with. This closes the feedback loop and allows you to build more reliable notification experiences.
How to enable activity tracking
First create the integration. After that, you can enable activity tracking by following these steps:
- Log in to the Novu dashboard
- Navigate to the Integrations Store page from the sidebar of your Novu dashboard.
- Click Connect Provider and select the email provider you want to configure.
- Scroll down to find the Email Activity Tracking section and click the toggle to enable it.
When enabled, Novu will auto-configure delivery webhooks using your existing API key.
Manual configuration
If auto-configuration fails or isn’t supported for your provider, you will need to set it up manually. You can do that by following these provider specific guides:
Event semantics in Novu
Inbound webhook events are normalized into a consistent set of Novu event statuses. These statuses let you track the full lifecycle of a notification across providers in a unified way.
Novu status | Meaning |
---|---|
bounced | The message was rejected by the recipient’s server (hard or soft bounce). |
clicked | The recipient clicked a link inside the message. |
complaint | The recipient marked the message as spam or filed a complaint. |
delayed | The provider delayed the message delivery (for example, due to throttling). |
delivered | The provider confirmed that the message was delivered to the recipient’s server. |
dropped | The provider dropped the message before attempting delivery. |
opened | The recipient opened the message (tracked via the provider’s open logic). |
rejected | The provider could not send the message (for example, invalid address, failed policy check). |
sent | The provider has accepted the message for delivery. |
unsubscribed | The recipient unsubscribed from further messages. |
Supported providers and events
Novu currently supports inbound webhooks for several email providers. Each provider sends events in its own format, which Novu normalizes into a consistent set of internal statuses. These normalized statuses are used in the activity feed, step-run traces, and outbound webhook forwarding.
Events not listed in the tables below are ignored.
SendGrid
Provider event (<native_status> ) | Novu event (<novu_event_status> ) |
---|---|
bounce | bounced |
click | clicked |
delivered | delivered |
dropped | dropped |
open | opened |
Mailgun
Provider event (<native_status> ) | Novu event (<novu_event_status> ) |
---|---|
clicked | clicked |
complained | complaint |
delivered | delivered |
opened | opened |
permanent_fail , failed | rejected |
unsubscribed | unsubscribed |
Resend
Provider event (<native_status> ) | Novu event (<novu_event_status> ) |
---|---|
email.bounced | bounced |
email.clicked | clicked |
email.complained | complaint |
email.delivered | delivered |
email.delivery_delayed | delayed |
email.failed | rejected |
email.opened | opened |
email.sent | sent |
Amazon SES
Provider event (<native_status> ) | Novu event (<novu_event_status> ) |
---|---|
Bounce | bounced |
Complaint | complaint |
Click | clicked |
Delivery | delivered |
DeliveryDelay | delayed |
Open | opened |
Reject | rejected |
Send | sent |
Viewing event data
Once your inbound webhooks are configured, Novu will start processing events from your provider. You can see this new data in two key places within the platform.
Activity feed
The Activity Feed provides the most direct view of the notification lifecycle. After a notification is sent, you will see new status updates such as Delivered, Opened, and Clicked appear in the timeline as they are received from your provider. This gives you a complete, real-time picture of subscriber engagement for each notification.
Outbound webhooks integration
Inbound webhooks don’t just update Novu internally, they can also trigger outbound webhooks, allowing you to send normalized events to your own systems in real time. This makes it possible to extend Novu’s notification lifecycle into your existing infrastructure.
How it works:
- A provider emits an event (for example, delivered).
- Novu receives and normalizes the event (for example, → delivered).
- Novu updates its internal message entity and step-run trace.
- If outbound webhooks are enabled, Novu forwards the normalized event to your configured outbound webhook endpoint.
This is useful in a number of use cases including:
- Internal logging: Forward all events into your organization’s centralized logging pipeline.
- Custom analytics: Combine Novu’s lifecycle data with your own metrics to measure engagement and delivery performance.
- Workflow triggers: Kick off custom business logic when specific events occur (for example, flagging accounts with high bounce rates).