Skip to main content

Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See Getting Started on the OneSignal connector page.

Create the Event Stream

OneSignal delivers events through an Event Stream you configure in the dashboard. There is no API for creating one, so this is done by hand. Configure a single stream pointed at your StackOne Native Webhook URL.

1

Retrieve your StackOne Native Webhook URL

The Native Webhook URL is generated once an account has been linked. You will paste it into OneSignal in a later step.

  • Open the linked account in StackOne.
  • Copy the value from Native Webhook URL.
2

Sign in to OneSignal

Open the OneSignal dashboard and sign in with the account whose API key you connected to StackOne. Enter your Email and Password on the Log in to Your Account screen, then click Log in with Email.

The OneSignal Log in to Your Account screen with the Email and Password fields and the Log in with Email button highlighted.
3

Open the Event Streams page

Select the app you connected to StackOne, then click Event streams under Data in the sidebar. Click New Event Stream in the top right.

  • The page lists existing streams by Name, Status, Created, Last activated and Destination URL, with All, Active, Inactive and Disabled tabs above them.
The OneSignal Event Streams page with the Event streams sidebar entry and the New Event Stream button highlighted.
4

Name the stream and open the event picker

Type a name you will recognise later into Event Stream Name, for example StackOne. Under Event Selection, click Select Events.

  • Free plans allow one active Event Stream. If you already have one, OneSignal shows You’ve reached the limit of 1 active Event Streams and you must set the existing stream inactive or upgrade before activating another.
The New Event Stream page with the Event Stream Name field filled in and the Select Events button highlighted.
5

Select the event types

The Select an event dialog groups every event by channel — In-App Message, Push Notification, Email, SMS and Live Activity — and shows each event’s payload name beneath it. Tick the events you want delivered, then click Done.

  • Select All ticks every event your plan allows; Clear All empties the selection.
  • Events your plan cannot receive are greyed out with a padlock.
  • Each event counts toward your plan’s message-event volume. A single send to 100,000 users produces 100,000 delivery events on its own, so select only what you need.
  • Apply Filters on the previous screen narrows a stream to specific messages or templates instead of all traffic.
The Select an event dialog with events grouped by channel, the Select All control and the Push Delivered option highlighted, and plan-locked events greyed out behind padlocks.
6

Set the method, URL and Content-Type header

Under Configure, leave Method on POST and paste your Native Webhook URL into URL. Under Headers, enter Content-Type as the Key and application/json as the Value.

  • The Content-Type header is required. OneSignal sends no content type of its own, and without it StackOne cannot parse the body — every delivery fails with a 500.
  • No authentication header is needed. StackOne authenticates the delivery using the token already in the Native Webhook URL.
  • Add Header adds further rows if you need them.
The Configure section with Method set to POST, the URL field, and the Headers row holding Content-Type and application/json, all highlighted.
7

Paste the JSON body

Under Body, set the dropdown to Custom Body and paste this template exactly. OneSignal fills the Liquid placeholders in at delivery time, and these key names are what the connector’s event routing reads.

  • Paste it as written. The keys are flat and underscored on purpose — OneSignal’s documentation shows a form with dotted keys like "event.kind", which cannot be routed.
  • Adding extra fields is safe. Removing event_kind, message_id or event_timestamp is not — routing, record ids and event times come from those three.
The Body section set to Custom Body with the JSON template in the editor, highlighted, and the Content-Type header visible above.
8

Save and activate the stream

Click Send Test to post a sample request, then Save to keep the configuration and Activate to start delivering live events.

Confirm events are reaching StackOne

Each stream has its own Report and Logs tabs. Use them to tell a delivery problem from a mapping one when events are not arriving.

1

Check the delivery statistics

The Report tab shows Successful, Failed Permanently and Total Sent for all time, alongside an Errors panel counting 4xx Responses, 5xx Responses and Timeouts. The Actions menu in the top right holds the stream’s own controls.

  • A run of 5xx Responses with no 4xx Responses usually means StackOne could not read the body — check that the Content-Type header is set.
The Report tab showing Successful, Failed Permanently and Total Sent figures with the Errors panel, and the Report, Logs and Actions controls highlighted.
2

Review individual deliveries

The Logs tab lists recent deliveries under Success and Failures, each with the response status and timestamp. Expand an entry to see the full request body, the headers OneSignal sent, and the response your endpoint returned.

  • This is the fastest way to confirm what OneSignal actually sent — including whether the Content-Type header reached StackOne.
  • A delivery that fails repeatedly is retried with increasing delays and then marked permanently failed. Sustained failures disable the whole stream, and admins are emailed before that happens.
The Logs tab with the Success and Failures sub-tabs and a list of deliveries returning 200 OK, with the Logs tab and Failures filter highlighted.

Available webhook events

The following event kinds can be selected. Only events ticked in OneSignal are delivered — nothing is sent for kinds that are not selected. The deprecated message.email.sent and message.sms.sent kinds cannot be added to new Event Streams and are not handled here; use Email Delivered and SMS Delivered instead.

1

Enable push notification events

Events covering push notification delivery and interaction.

  • Push Delivered (message.push.sent) — Fired when a push notification is successfully delivered to the push service (FCM or APNs).
  • Push Confirmed Receipt (message.push.received) — Fired when a push notification is received on the device. Needs Confirmed receipt, which requires a paid plan, the OneSignal SDK on the device and a supported platform.
  • Push Clicked (message.push.clicked) — Fired when a user taps the push notification to open the app.
  • Push Failed (message.push.failed) — Fired when a push fails to be sent.
  • Push Unsubscribed (message.push.unsubscribed) — Fired for subscriptions that did not receive the notification because the app was uninstalled, browser data was cleared, or the user opted out. This is a reachability state detected at send time, not an opt-out triggered by this message.
2

Enable in-app message events

Events covering in-app messages shown inside your app.

  • In-App Impression (message.iam.impression) — Fired when an in-app message is successfully displayed on the device.
  • In-App Clicked (message.iam.clicked) — Fired when a user taps an element on an in-app message.
  • In-App Card Displayed (message.iam.page_displayed) — Fired when an in-app message page is displayed. Useful for tracking carousels.
3

Enable email events

Events covering email delivery, engagement and deliverability.

  • Email Delivered (message.email.received) — Fired when an email is received by the recipient.
  • Email Opened (message.email.opened) — Fired when an email is opened by the recipient.
  • Email Link Clicked (message.email.clicked) — Fired when a user taps a link in the email.
  • Email Unsubscribed (message.email.unsubscribed) — Fired when a user unsubscribes via the unsubscribe link.
  • Email Reported as Spam (message.email.reported_as_spam) — Fired when a user reports the email as spam. Gmail requires Google Postmaster Tools to track this.
  • Email Bounced (message.email.bounced) — Fired when an email is returned to sender due to a permanent error.
  • Email Failed (message.email.failed) — Fired when an email could not be delivered.
  • Email Suppressed (message.email.suppressed) — Fired when an email could not be sent because the address is on the suppression list.
4

Enable SMS events

Events covering SMS delivery.

  • SMS Delivered (message.sms.delivered) — Fired when an SMS is successfully delivered.
  • SMS Failed (message.sms.failed) — Fired when an SMS fails to send.
  • SMS Undelivered (message.sms.undelivered) — Fired when an SMS could not be delivered.
5

Enable Live Activity events

Events covering iOS Live Activities.

  • Live Activity Delivered (message.live_activity.sent) — Fired when a Live Activity is successfully sent to APNs.
  • Live Activity Confirmed Receipt (message.live_activity.delivered) — Fired when a Live Activity is received by the recipient.
  • Live Activity Clicked (message.live_activity.clicked) — Fired when a Live Activity is clicked by the user.
  • Live Activity Failed (message.live_activity.failed) — Fired when a Live Activity fails to send.
  • Live Activity Unsubscribed (message.live_activity.unsubscribed) — Fired when a user unsubscribes from Live Activities.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.