Overview
OneSignal records metrics at each step of a message’s lifecycle, from when OneSignal hands the message to a third-party provider (FCM, APNs, Twilio, or an email ESP) through delivery, engagement, and any follow-up events. In-app messages and Live Activities have different lifecycles, which are covered in their own sections below. Use this page to reconcile numbers across the dashboard, API, CSV exports, and Event Streams, or when building internal reports. Each channel section contains:- Terms: the glossary of metrics and their definitions.
- Delivery lifecycle: a visual representation of where each metric is captured.
- Metrics mapping: the name of each metric across every OneSignal surface (dashboard, API, CSV, Event Streams).
Channel metrics comparison
Different channels have different delivery states and engagement metrics. The table below lists which metrics apply to each channel.- Some metrics have both Total and Unique variants in the per-channel tables. This applies to Opens (email) and Clicks (email, SMS/RCS, in-app).
Push terms
Push lifecycle
Push metrics mapping
Dashboard
API, CSV, and Event Streams
1 The API also includes per-platform metrics for all fields except
remaining (for example, ios_clicked, android_clicked).
2 The composite Sent metric does not have a direct field in the View Message(s) API. To derive it, sum successful + failed + errored. Audience activity exports also do not include a Sent field.
3 In the View Message(s) API and Notifications CSV, the field name failed represents unsubscribed Subscriptions and errored represents delivery errors (what the dashboard calls Failed). This naming is preserved for backward compatibility.
Email terms
Total vs Unique clicks and opens
Unique clicks and opens are counted once per Subscription, regardless of how many times that user opens or clicks the same email. Total clicks and opens count every interaction, including repeats from the same user.
Email lifecycle
Email metrics mapping
Dashboard
1 The dashboard uses different labels for the same metric across surfaces: Reported as Spam (stat cards, Journey stat cards), Spam (timeseries charts), and Complained (Audience Activity). All refer to recipients who marked the message as spam or junk.
API, CSV, and Event Streams
SMS/RCS terms
SMS/RCS lifecycle
SMS/RCS metrics mapping
Dashboard
1 Audience Activity combines Failed and Rejected into a single Failed & Rejected bucket. Stat cards and Journey stat cards show them separately.
2 Delivery Report timeseries charts break the provider-side failures into Failed (Errored) and Failed (Undelivered), which map to Provider Errored and Provider Undelivered. Stat cards roll these up under Failed.
API, CSV, and Event Streams
3 The sum of
failed and errored (both recorded in OneSignal’s internal system when attempting to send to Twilio) is surfaced as Failed in the dashboard.
In-app terms
In-app lifecycle
There is no delivery lifecycle to consider. All metrics captured for an in-app message are from the device through the OneSignal SDK.In-app metrics mapping
Dashboard
1 We exclude “Close Button” clicks from Total Clicks on the in-app message Delivery
Report stat card.
2 While we don’t have a label on the dashboard for unique clicks, we show
unique clicks count alongside the CTR.
Event Streams
Live Activities terms
Live Activities lifecycle
Live Activities metrics mapping
Dashboard
API, CSV, and Event Streams
1 The Event Streams names are shifted relative to the dashboard concepts:
message.live_activity.sent maps to Delivered (accepted by APNs), and message.live_activity.delivered maps to Confirmed Receipt (acknowledged by the device). Wire report pipelines to the concept, not the literal event name.
2 As with push, the View Message(s) API and CSV field failed represents unsubscribed Subscriptions and errored represents delivery errors (Failed).
FAQ
Why don’t my dashboard and API counts match for push?
The dashboard Sent metric is a composite: it equals Delivered + Unsubscribed + Failed. The View Message(s) API does not return a directsent field; sum successful + failed + errored to get the equivalent value.
Why does the Push API return failed for unsubscribes and errored for delivery errors?
The field names are preserved from an earlier version of the API. In the View Message(s) API and Notifications CSV, failed means the Subscription is no longer reachable (uninstalled, cleared browser data, or opted out) and errored means a delivery error that OneSignal will retry. The dashboard labels these as Unsubscribed and Failed respectively.
What’s the difference between Total Opens and Unique Opens?
Total Opens counts every open event, including repeat opens from the same recipient. Unique Opens counts each recipient at most once. The same pattern applies to Total Clicks vs Unique Clicks for email, SMS/RCS, and in-app messages.Why does the Live Activities message.live_activity.sent event map to Delivered instead of Sent?
The event name is historical. message.live_activity.sent fires when APNs accepts the activity update (the Delivered concept), and message.live_activity.delivered fires when the device acknowledges receipt (the Confirmed Receipt concept). Use the mapping table above when configuring downstream analytics.
Why does Twilio’s delivery count sometimes differ from OneSignal’s Delivered for SMS/RCS?
OneSignal’s Delivered metric reflects carrier-confirmed receipt reported back by Twilio. Differences usually come from messages that are still in flight at the time you compare, late status callbacks from carriers, or messages that moved to Provider Undelivered after an initial acceptance. See the SMS/RCS lifecycle above for where each state is captured.How do I map dashboard labels for SMS Failed to the timeseries chart?
The stat cards show a single Failed bucket, while the timeseries chart splits provider-side failures into Failed (Errored) (Provider Errored) and Failed (Undelivered) (Provider Undelivered). Audience Activity combines Failed and Rejected into Failed & Rejected.Related
Analytics overview
Tour the dashboards, APIs, and export tools OneSignal provides for measuring performance.
Confirmed Receipt
Platform requirements and SDK setup for the Confirmed Receipt metric on push and Live Activities.
Event Streams
Stream real-time message events to your warehouse using the event names in this glossary.
Engagement trends
Review aggregate engagement over time using the metrics defined here.
Exporting data
Export the Notifications CSV and other data sets referenced in the mapping tables.
Journey analytics
Measure conversion and drop-off across multi-step Journeys using Journey node reports.