Analytics

Analytics

See active users, screens, sessions, retention and push opens for each app.

What you get

Everything shows on your app's Analytics page in the dashboard. App opens count automatically. The rest is opt-in and reported by the native-notify SDK.

MetricNeeds
Active users: DAU, WAU and MAU with growth, new vs. returning users, stickiness (DAU ÷ MAU), daily trendNothing
Screen usage: most-viewed screens, ranked, with daily trendsanalytics: { screens: true } and trackScreen() or the Expo Router hook
Sessions: per day, average lengthanalytics: { sessions: true }
Push opens: delivered vs. opened and unique opens per notification, open-rate trend, best send timesanalytics: { opens: true } (SDK v5.1+)
Retention: weekly cohorts of first-time users who come backNothing
Send failures: delivery failures by error codeNothing, collected on the server

1. Update the SDK to v5.1 or later

npm install native-notify@latest

2. Enable what you want

import { NativeNotify } from "native-notify";

NativeNotify.init({
  appId: yourAppId,
  appToken: "yourAppToken",
  analytics: {
    screens: true,   // screen views
    sessions: true,  // foreground session length
    opens: true,     // per-notification open rates
    deviceId: true,  // stable device id for unique screen views and opens
  },
});

Every flag is independent and defaults to false. Sessions and push opens need nothing beyond their flags. See Analytics setup.

3. Track screens

Only with screens. Expo Router needs one line in the root layout. Other navigators call trackScreen() — see Screen tracking.

import { Slot } from "expo-router";
import { useNativeNotifyScreenTracking } from "native-notify";

export default function RootLayout() {
  useNativeNotifyScreenTracking();
  return <Slot />;
}

How it's counted

An app open is recorded when your app registers, at most once per device or subscriber every 30 minutes. Active users follow the monthly active users rule: devices count, and a subscriber counts only when none of its own devices does.

Agents

Agents read the same data through the analytics tools on the MCP server.