Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
453e1cb
Docs for the push activity tracking
Aviatorscode2 Oct 15, 2025
4f6240c
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Oct 15, 2025
adce17b
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
81598ca
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
ae61565
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
269a6a9
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
9162e34
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
d6ffc80
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
64a7acf
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
827b037
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
1fc1dbb
Break last sentente
Aviatorscode2 Nov 3, 2025
7cb8754
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
c446ba1
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 3, 2025
73d229d
Implement feedback for Push activity docs
Aviatorscode2 Nov 3, 2025
d5d6003
Merge branch 'MRK-1077' of https://github.com/novuhq/docs into MRK-1077
Aviatorscode2 Nov 3, 2025
2e45c6d
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 5, 2025
d2de1ee
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 5, 2025
adf64ca
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 5, 2025
d300f61
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 5, 2025
e51b6e8
Update content/docs/platform/integrations/push/push-activity-tracking…
Aviatorscode2 Nov 5, 2025
3b87eac
Update content based on feedback
Aviatorscode2 Nov 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/docs/platform/integrations/push/meta.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"icon": "Smartphone",
"pages": ["adding-push", "..."]
"pages": ["adding-push", "...", "push-activity-tracking"]
}
148 changes: 148 additions & 0 deletions content/docs/platform/integrations/push/push-activity-tracking.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
pageTitle: 'Push Notification Activity Tracking'
title: 'Activity Tracking'
description: 'Learn how to manually forward push notification events from your application to Novu for unified activity tracking.'
---

To enable activity tracking for Push channel notifications, Novu supports a manual integration approach for push notifications. Where your application captures and forwards push notification events to Novu. Once received, Novu processes and displays these events on the dashboard for a unified tracking experience.

## How it works

The process involves a four-step data flow from your subscriber's device to Novu's servers:

1. **Client application listens**: Your application listens for push notification interactions. For example, the user opens a notification.
2. **Event sent to your backend:** When an event occurs, your application sends a payload containing the event details to an endpoint on your own server.
3. **Backend forwards to Novu:** Your server receives this data and uses the Novu SDK to securely forward the event to Novu's API.
4. **Event appears in Novu:** Novu processes the event and displays it in the **Activity Feed**, alongside events from your other channels.

## Step 1: Enable push activity tracking in Novu

Enable push activity tracking in your Novu dashboard and get the necessary credentials.

1. Log in to the Novu dashboard.
2. Navigate to the **Integration Store** page, and then select your push provider.
3. Enable the **Push Activity Tracking** toggle.
![](/images/channels-and-providers/push/activity-tracking/enable-activity-tracking.png)
4. Once enabled, your unique **Environment ID** and **Integration ID** are displayed. Copy and save both of these; you will need them for your backend code.
5. Click **Save Changes**.

## Step 2: Listen for push events in your application

When push notifications are delivered or interacted with, your application must capture those events and forward them to your backend. The exact code implementation depends on the push provider that you use.

The goal is to capture the event and send a JSON payload to your backend. You must send these fields:
- `eventType`: A string describing the event (for example, `opened`, `clicked`).
- `eventId`: The unique identifier for the notification, which Novu includes in the push payload as `__nvMessageId`.

<Tabs items={['Expo', 'FCM', 'OneSignal']}>
<Tab value="expo">
```jsx
import * as Notifications from 'expo-notifications';
import Constants from 'expo-constants';
import { Platform } from 'react-native';

// Listen for notification interactions
Notifications.addNotificationResponseReceivedListener(async (response) => {
const eventData = {
eventType: "opened",
eventId: response.notification.request.content.data?.__nvMessageId,
timestamp: new Date().toISOString(),
actionIdentifier: response.actionIdentifier,
content: {
title: response.notification.request.content.title,
body: response.notification.request.content.body,
data: response.notification.request.content.data,
},
// Optional device context
deviceId: Constants.sessionId,
platform: Platform.OS,
}});

await fetch("https://your-api.com/api/notifications/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(eventData),
});
```
</Tab>
<Tab value="fcm">
```js
import messaging from '@react-native-firebase/messaging';

messaging().onNotificationOpenedApp((remoteMessage) => {
const eventData = {
eventType: "opened",
eventId: remoteMessage.data?.__nvMessageId,
timestamp: new Date().toISOString(),
content: {
title: remoteMessage.notification?.title,
body: remoteMessage.notification?.body,
},
deviceId: remoteMessage.messageId,
platform: 'android',
};

fetch("https://your-api.com/api/notifications/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(eventData),
});
});
```
</Tab>
<Tab value="onesignal">
```js
import OneSignal from 'react-native-onesignal';

OneSignal.setNotificationOpenedHandler((openedEvent) => {
const { notification } = openedEvent;

const eventData = {
eventType: "opened",
eventId: notification.additionalData?.__nvMessageId,
timestamp: new Date().toISOString(),
content: {
title: notification.title,
body: notification.body,
},
deviceId: notification.notificationId,
platform: 'ios',
};

fetch("https://your-api.com/api/notifications/events", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(eventData),
});
});
```
</Tab>
</Tabs>

## Step 3: Forward events to Novu from your backend

Create an endpoint on your backend that receives the event data from your application and uses the Novu SDK to forward it to Novu.

```typescript
import { Novu } from '@novu/api';

const novuClient = new Novu({
apiKey: process.env.NOVU_API_KEY,
});

// Your backend API endpoint that receives events from your mobile application
app.post('/api/notifications/events', async (req, res) => {
// Forward the event data to Novu
const response = await novuClient.activity.track({
environmentId: process.env.NOVU_ENVIRONMENT_ID,
integrationId: process.env.NOVU_INTEGRATION_ID,
requestBody: req.body,
});

res.status(200).json({ success: true, data: response });
});
```

<Callout>Both `Integration ID` and `Environment ID` can be found in the push provider integration page after enabling Push Activity Tracking.</Callout>

Once these steps are completed, your application will send push notification engagement data to Novu. This gives you a complete, unified view of your notification performance in the Activity Feed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.