Analytics Overview

Analytics Overview

PushPilot tracks delivery, opens, and conversions at the organisation, campaign, and individual notification level. All analytics are accessible in the dashboard under Analytics.

Organisation-level analytics

The main Analytics page shows a high-level overview of your entire workspace:

Total Sent

All notifications dispatched across all campaigns in the period.

Delivered

Notifications confirmed delivered by FCM or OneSignal.

Opened

Notifications opened by the user (requires SDK event tracking).

CTR

Click-through rate — opened / delivered.

Top Campaigns

Campaigns ranked by delivery volume or open rate.

Daily Trend

Chart of sent / opened counts per day over the selected period.

Conversion funnel

The Funnel view shows the drop-off at each stage of the notification journey:

1Sent → Delivered
2Delivered → Opened
3Opened → Clicked / Converted

Campaign-level analytics

Click any campaign name from the Analytics page or from Campaigns to see campaign-specific metrics:

  • Total notifications sent for this campaign.
  • Open and click rates over time.
  • Daily performance chart — useful for identifying which notification times perform best.
  • Per-notification breakdown — see which individual messages drove the most opens.

Per-notification analytics

Click on any individual notification to see its delivery status, sent timestamp, and open count. This is the most granular view — useful for A/B testing message copy or images.

Tracking events from your app

Delivery and open events can be sent to PushPilot from your mobile app. This gives accurate open rates (rather than estimating from delivery confirmations).

POST /api/analytics/events/
POST /api/analytics/events/

{
  "event_type": "notification_opened",
  "notification_id": "notif_abc123",
  "timestamp": "2026-04-21T10:30:00Z",
  "metadata": {
    "platform": "android",
    "app_version": "2.1.0"
  }
}

The notification_id is included in the push payload data sent by PushPilot. Read it from the notification data payload in your app's FCM message handler:

Flutter — read notification_id from FCM data
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  final notificationId = message.data['notification_id'];
  if (notificationId != null) {
    // Send event to PushPilot
    reportOpen(notificationId);
  }
});

Event types

Currently supported event types: notification_opened, notification_clicked, notification_dismissed.