Overview
OneSignal provides multiple ways to measure message performance, understand user behavior, and export engagement data. Whether you are reviewing campaign results in the dashboard or sending events to your internal analytics stack, this page gives you a complete picture of what data is available and how it is structured. Use this guide to:- Understand which analytics exist and where to find them
- Learn how message events and outcomes are attributed
- Decide when to use reports, trends, or exports
Event Streams
Send real-time message events like sent, opened, clicked, and dismissed to your data warehouse or analytics tools.
Journey analytics
Measure conversion, drop-off, and performance across multi-step Journeys.
Template analytics
Aggregate analytics across many messages sent from the same Template.
Custom outcomes
Track actions like purchases or sign-ups that occur after users interact with messages.
Confirmed delivery for push
Verify that each push notification was successfully delivered to a device.
Exporting data
Export message and user data to CSV for offline analysis.
Message reports
Every message sent through OneSignal’s API or Dashboard > Messages form has a message report. These reports show delivery, engagement, and outcome metrics for that specific message. You can view reports in the OneSignal Dashboard or retrieve them programmatically using the: Each message has a unique message ID. Analytics only exist if a message ID was created (for example, API requests that fail validation do not create reports).
Push message reports
Delivery, opens, clicks, confirmed delivery, and outcomes for push notifications.
In-app message reports
Impressions, clicks, dismissals, and conversion metrics for in-app messages.
Email message reports
Sends, opens, clicks, bounces, and unsubscribes for email messages.
SMS message reports
Delivery, clicks, failures, and opt-outs for SMS/RCS messages.
Live activity message reports
Updates, engagement, and lifecycle events for Live Activities.
Engagement trends
Engagement Trends show how message activity changes over time across your entire app. These charts help you identify seasonality, spikes, or long-term engagement changes. Use Engagement trends to track message:- Sends (aka Delivered, Impressions)
- Opens and clicks
- Unsubscribes

Engagement Trends chart in the Dashboard
Subscription trends
Subscription Trends show how Users’ Subscriptions subscribe and unsubscribe to messaging over time, broken down by channel. Use this chart to understand:- Growth or decline in subscribed users
- The impact of permission prompts
- Unsubscribe spikes after campaigns

Subscription Trends chart in the Dashboard
| Metric | Description |
|---|---|
| Total Subscribed | The count of all subscribed Subscriptions. Counts will fluctuate as users install and uninstall your app, clear browser data, subscribe and unsubscribe to your messages, or get deleted. For details on how these events are tracked, see Subscriptions. |
| New Subscribes | The count of subscription status changes from unsubscribed to subscribed. This includes newly created subscribed Subscriptions and current Subscriptions that subscribed to messages in the selected timeframe. |
| New Unsubscribes | The count of subscription status changes from subscribed to unsubscribed. This does not include newly created Subscriptions that never subscribed or denied the push prompt. |
Subscriptions
Learn how Subscriptions are created, stored, and marked as subscribed or unsubscribed.
Users
Users can have multiple Subscriptions and are identified by their external ID.
Outcomes
Outcomes measure what users do after sending messages. Outcomes help you understand downstream impact—such as purchases, sign-ups, or content views—not just clicks. Outcomes include:- Built-in engagement outcomes like clicks and confirmed deliveries
- Custom Outcomes you define in your app or site

The Global Outcomes Chart in the dashboard.
Outcome attribution
Each outcome is attributed based on how the user interacted with messages before the action occurred.| Attribution | When it applies |
|---|---|
| Direct | The user clicked the in-app message block, email link, or push notification which launched a new session (app was closed >30s), and triggered the outcome. |
| Influenced | The user did not click a push notification, but opened the app within the influence window (default: 24 hours) and triggered the outcome. Applies to the 10 most recent push notifications. |
| Unattributed | The outcome occurred outside of any attribution window or click. Not linked to a specific message. |
Influenced attribution
Influenced attribution applies only to push notifications and helps measure passive impact. How Influenced Outcomes work:- Configure the Influenced time period under Settings > Push & In-App > Influenced Opens (changes take effect per-device on the next new session).
- As push notifications are sent, if the user doesn’t click it, but opens the app, they will be considered “influenced”.
- This attribution is credited to up to 10 messages sent within the Influence time period.
- Example: If your Influenced time period is 24 hours, you send 15 messages that day, and the user doesn’t click any of them, but opens the app and performs the action that calls our Outcomes SDK methods, the most recent 10 messages will be considered “influencing the Outcome”.
- A push notification is sent.
- The user opens the app without clicking the notification.
- The app stays open for at least 30 seconds to establish a session.
- The app is closed or backgrounded for at least 60 seconds.
- The user opens the app again, which creates a new session and triggers the influenced Outcome.
FAQ
How long is message data retained?
| Message Type | Retention Period |
|---|---|
| Dashboard-sent messages | Lifetime of the app |
| API-sent messages | 30 days |
| Audience activity CSV | 30 days |
| Journeys messages | See Journeys analytics |
How to aggregate data across multiple messages?
Each message has a unique message ID, which makes manual aggregation via the API possible but inefficient. Recommended approach:- Use Templates analytics to aggregate performance across related messages sent from the same Template.
- Use Journeys analytics to aggregate performance across related Journeys.
Which analytics should I use?
Use this section to quickly choose the right analytics tool based on your goal. Most teams use more than one option depending on whether they are optimizing campaigns, debugging delivery, or analyzing long-term behavior.| Your goal | Use this |
|---|---|
| Review performance of a single message | Message reports |
| Compare performance across many similar messages | Template analytics |
| Measure conversion across a multi-step flow | Journey analytics |
| Track trends over time (opens, clicks, sends) | Engagement trends |
| Monitor opt-ins and opt-outs | Subscription trends |
| Measure downstream actions like purchases or sign-ups | Outcomes / Custom Outcomes |
| Confirm delivery to individual devices | Confirmed delivery (push) |
| Send raw events to your own analytics stack | Event Streams |
| Export data for offline analysis | CSV exports |