{{ }} to include it in your Event Stream body. See Examples.
event properties
Every event includes the core fields below. Channel-specific fields under event.data.* are included only when applicable — see Channel-specific fields.
The event type, combining channel and action (e.g.
message.push.clicked, message.email.bounced). See the full list of values in the event kind reference below. Liquid: {{ event.kind }}A unique, OneSignal-generated identifier for each individual event in UUID v4 format. Use this ID for idempotent delivery tracking. For the message or template identifier, use
message.id or message.template_id. Liquid: {{ event.id }}UNIX timestamp of the event. Liquid:
{{ event.timestamp }}Human-readable time of the event in UTC as an ISO 8601 string (e.g., “2024-02-21T23:45:15.228Z”). Liquid:
{{ event.datetime }}The subscription type (e.g.
iOS, Android, Chrome, Email, SMS). Liquid: {{ event.subscription_device_type }}The OneSignal Subscription ID. Liquid:
{{ event.subscription_id }}Your user ID set as the OneSignal External ID alias. Can be empty if not set. Liquid:
{{ event.external_id }}Channel-specific fields
Theseevent.data.* fields are only present for certain event kinds.
In-app message events
Included withmessage.iam.* events. See In-app message Event Streams for details.
The name of the in-app message page or card displayed. Liquid:
{{ event.data.page_name }}Unique identifier for the in-app message page or card displayed. Liquid:
{{ event.data.page_id }}The name of the button or image block element clicked. The element must contain an in-app click action. Liquid:
{{ event.data.target_name }}Unique identifier for the button or image block element clicked. Liquid:
{{ event.data.target_id }}Live Activity events
Included withmessage.live_activity.* events.
Unique identifier for a specific Live Activity (e.g., “Knicks vs Cavs - Oct 22 7PM”). Liquid:
{{ event.data.live_activity_id }}Grouping label for Live Activity categories (e.g., “Knicks_games”). Liquid:
{{ event.data.live_activity_type }}Failed events
Included withmessage.push.failed and message.email.failed events.
The reason the message failed to send. See Push Message Reports or Email Message Reports for common reasons. Liquid:
{{ event.data.failure_reason }}Event kind reference
For detailed definitions of each metric, see the Metrics Glossary.| Message Event Kind (OneSignal) | Event name (in data set) | Event Description |
|---|---|---|
| Push Sent | message.push.sent | Push notification successfully sent to the push services (FCM, APNS, etc). |
| Push Received | message.push.received | Push notification received by recipient. Not available on all platforms. See Confirmed Delivery for more details. |
| Push Clicked | message.push.clicked | User tapped the push notification to open the app on device. |
| Push Failed | message.push.failed | Push failed to be sent. See Push Message Reports for details. |
| Push Unsubscribed | message.push.unsubscribed | User unsubscribed on push subscription. See When do push subscription statuses update?. |
| In-App Impression | message.iam.impression | In-App Message successfully displayed on device. |
| In-App Clicked | message.iam.clicked | User tapped an element on the In-App Message. |
| In-App Page Displayed | message.iam.page_displayed | In-App Message page was displayed. Helpful for tracking carousels. |
| Email Sent | message.email.sent | Email successfully sent. |
| Email Received | message.email.received | Email received by recipient. |
| Email Opened | message.email.opened | Email was opened by recipient. See Email Message Reports for details. |
| Email Link Clicked | message.email.clicked | User tapped a link in the email. |
| Email Unsubscribed | message.email.unsubscribed | User unsubscribed from email via the unsubscribe link. |
| Email Reported As Spam | message.email.reported_as_spam | User reported the email as spam. Gmail requires Google Postmaster Tools to track. See Email deliverability for more details. |
| Email Bounced | message.email.bounced | Email returned to sender due to permanent error. See Email Message Reports for details. |
| Email Failed | message.email.failed | Email could not be delivered. See Email Message Reports for details. |
| Email Suppressed | message.email.suppressed | Email could not be sent because the email address is on the Suppression list. |
| SMS Sent | message.sms.sent | SMS sent to recipient. |
| SMS Failed | message.sms.failed | SMS failed to send. See SMS Message Reports for details. |
| SMS Delivered | message.sms.delivered | SMS successfully delivered. |
| SMS Undelivered | message.sms.undelivered | SMS could not be sent. See SMS Message Reports for details. |
| Live Activity Sent | message.live_activity.sent | Live Activity successfully sent to FCM/APNS. |
| Live Activity Delivered | message.live_activity.delivered | Live Activity received by recipient. |
| Live Activity Unsubscribed | message.live_activity.unsubscribed | User unsubscribed from Live Activities. |
| Live Activity Failed | message.live_activity.failed | Live Activity failed to send. |
| Live Activity Clicked | message.live_activity.clicked | Live Activity clicked by user. |
Example event object
Copy this Liquid template into your Event Stream body to capture all event fields:JSON
Example rendered output
Example rendered output
What a push click event looks like after Liquid rendering:Channel-specific fields like
JSON
event.data.page_name are empty for event kinds that don’t include them.message properties
The message object describes the message sent to the end-user, including its ID, template, content, and URLs.
The message ID generated by OneSignal. Liquid:
{{ message.id }}The name of the message as set in the dashboard or using the API
name property. Liquid: {{ message.name }}The push message title or email subject. For push, returns a localized object like
{'en':'Your title'}. For email, returns the subject line as a plain string. Set via the dashboard or the API headings / email_subject properties. Liquid: {{ message.title }}The push or SMS message content (clipped at 50 characters). Email contents (
email_body) are not provided. Set via the dashboard or the API contents property. Liquid: {{ message.contents }}The template ID for a message sent via Journeys or the API
template_id property. Liquid: {{ message.template_id }}The message’s launch URL when using a single URL that is web and app agnostic. See URLs, Links and Deep Links. Liquid:
{{ message.url }}The app-specific launch URL when using separate web and app URLs. See URLs, Links and Deep Links. Liquid:
{{ message.app_url }}The web-specific launch URL when using separate web and app URLs. See URLs, Links and Deep Links. Liquid:
{{ message.web_url }}The Live Activity action type:
start, update, or end. Only present for message.live_activity.* events. Liquid: {{ message.live_activity_event_kind }}Example message object
Copy this Liquid template into your Event Stream body to capture all message fields:JSON
Example rendered output
Example rendered output
A push notification message:An email message —
JSON
message.title is the subject line as a plain string, and message.contents is empty because email body content is not included in Event Stream data:JSON
user properties
The user object contains profile-level data for the user who received the message.
The user’s OneSignal ID. Liquid:
{{ user.onesignal_id }}The user’s External ID. Liquid:
{{ user.external_id }}The user’s tags. Access the full object with
{{ user.tags }} or a specific tag with {{ user.tags.your_tag }}. Use a default to handle missing tags: {{ user.tags.your_tag | default: '' }}.The user’s language code. Liquid:
{{ user.language }}subscription properties
These properties describe the subscription that received the message.
The subscription’s OneSignal ID. Liquid:
{{ user.subscription.id }}The OneSignal App ID. Liquid:
{{ user.subscription.app_id }}The subscription’s platform-specific token. For Email, this is the email address. For SMS, a phone number in E.164 format. For Push, the push token. Liquid:
{{ user.subscription.subscription_token }}Total sessions recorded for this subscription. Liquid:
{{ user.subscription.session_count }}The language code set on the subscription. Liquid:
{{ user.subscription.language }}The app or game version reported by the subscription. Liquid:
{{ user.subscription.game_version }}UNIX timestamp of the subscription’s most recent session. Liquid:
{{ user.subscription.last_active }}Total play time recorded for this subscription, in seconds. Liquid:
{{ user.subscription.play_time }}Total in-app purchase amount recorded for this subscription. Liquid:
{{ user.subscription.amount_spent }}UNIX timestamp of when the subscription was created. Liquid:
{{ user.subscription.created_at }}Whether the subscription is currently opted in. Liquid:
{{ user.subscription.subscribed }}The OneSignal SDK version on the subscription’s device. Liquid:
{{ user.subscription.sdk }}The device hardware model (e.g., “iPhone14,2”, “Pixel 7”). Liquid:
{{ user.subscription.device_model }}The device operating system and version (e.g., “iOS 17.2”, “Android 14”). Liquid:
{{ user.subscription.device_os }}Related pages
Event Streams
Set up and configure Event Streams, including setup, body templates, and debugging.
Using Liquid syntax
Reference for Liquid syntax used to personalize Event Stream bodies.
In-app message Event Streams
Details on in-app message event data and carousel tracking.
Metrics Glossary
Definitions for all message event metrics across channels.
FAQ
Why is some event data missing or blank?
Message data for Journeys and API sends is retained for 30 days. If a user interacts with a message (click, open, unsubscribe) more than 30 days after it was sent, the associated message properties may be blank. To work around this, correlate themessage.id from the interaction event with the original sent event, which contains the full message data.
What is the difference between event.id and message.id?
event.id is a unique identifier for the individual event (e.g., one specific click). message.id is the identifier for the message that was sent — multiple events can share the same message.id (for example, a sent event and a clicked event for the same push notification).
What format is message.title for push vs email?
For push notifications, message.title returns a localized object like {'en':'Your title'}. For email, it returns the subject line as a plain string. The format depends on the channel.
Are Custom Events included in Event Streams?
No. Event Streams contain message events (sent, clicked, opened, bounced, etc.) — not Custom Events. Custom Events are user actions you send into OneSignal. Event Streams export message delivery and engagement data out of OneSignal.How do I reference a specific tag in my Event Stream body?
Use{{ user.tags.your_tag_key }} with the exact tag key. To avoid errors when a tag is not set, add a default: {{ user.tags.your_tag_key | default: '' }}. See Using Liquid syntax for more details.