Splio OneSignal Connector

Trigger personalized Push notification messages from your Splio Campaigns through our integration with OneSignal.

📘

Provided by: Splio & Partner Connector type: Destination Third-party system: Channels Required license or add-on: : "Marketing Automation"

Introduction

Splio now supports Push Notifications as a messaging channel, powered by OneSignal. This allows you to send push notifications to your contacts' mobile devices (iOS, Android) and web browsers (coming soon) directly from Splio, using the same campaign workflow you already know for email and SMS/RCS.

You need to be on the Splio Edition 2025 version to have the Push Notification option and therefore be able to connect OneSignal and Splio.

Setup process

Technical guide for connecting a client's App and OneSignal account to the Splio platform (Marketing Automation).


Checklist

  • Client has an active OneSignal account
  • Client has an active Splio Marketing Automation universe and is on the Splio Edition 2025
    • Client has the Push notification feature flag active on Splio
  • Client's SDK is configured with OneSignal
  • Client's OneSignal App ID available (OneSignal → Settings → Keys & IDs)
  • Client's OneSignal REST API Key is available

Step 1 — Configure the OneSignal platform credentials and SDK on the client App

  1. Follow the OneSignal documentation to setup the platform credentials and SDK
  2. Ensure that the Splio customer key is matched with the OneSignal External ID
    • The external_id in OneSignal corresponds to the unique_key in Splio
    • Example: if external_id = email, the app must call OneSignal.login("[email protected]")
    • Without this, push events cannot be matched back to Splio contacts

Step 2 — Register the App in Splio

  1. Open the Splio universe
  2. Navigate to General Settings → Integrations → OneSignal
  3. Click Add an app and fill in:
FieldValueSource
NameFree text label to identify the app
App IDOneSignal application identifierOneSignal → Settings → Keys & IDs
API KeyOneSignal REST API keyOneSignal → Settings → Keys & IDs
  1. Save
⚠️

The API Key is encrypted at rest by Splio. Never share it in tickets, chat, or documentation.

You can edit or delete apps from this page. One app per universe is supported.


Step 3 — Copy the Generated JWT

On successful app creation, Splio automatically generates a JWT (JSON Web Token). This token authenticates OneSignal when it calls back into Splio via the webhook.

  • Copy the JWT displayed (needed to unlock Step 4)
  • You can always revoke the JWT generated

Step 4 — Configure the Event Stream in OneSignal

In the OneSignal dashboard, go to Data → Event Streams → New Event Stream.

4.1 — Select Events

Choose the push events to forward to Splio:

Event KindDescription
message.push.sentPush sent to delivery services (FCM/APNS)
message.push.receivedPush received by device
message.push.clickedUser tapped the notification
message.push.failedPush delivery failed
message.push.unsubscribedUser unsubscribed from push

Only select events you actually need — each event counts toward OneSignal's message-event volume.

4.2 — Configure the Endpoint

SettingValue
MethodPOST
URLhttps://webhooks.splio.com/webhooks/v1/push-notification/events

4.3 — Set Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer <jwt-from-step-2>

4.4 — Set Custom Body

Under Body, select Custom Body and paste the Liquid template that maps OneSignal fields to the Splio expected payload format.

Liquid template (click to expand)

The template maps the following OneSignal fields to Splio's internal event schema:

{
"event_id": "{{ event.id }}",
"event_type": "pushNotificationEvent",
"sub_tenant_id": "{{ event.app.custom_app_id }}",
"source_type": "push-notification",
"source_id": "one-signal",
"event_timestamp_micro": {{ event.occurred_at | date: "%s" }}000,
"app_id": "{{ event.app.id }}",
"event_kind": "{{ event.kind }}",
"message_id": "{{ event.message.id }}",
"message_name": "{{ event.message.name }}",
"user_provider_id": "{{ event.user.onesignal_id }}",
"user_external_id": "{{ event.user.external_id }}",
"user_subscription_id": "{{ event.subscription.id }}",
"user_subscription_device_type": "{{ event.subscription.device_type }}",
"user_device_model": "{{ event.subscription.device_model }}",
"user_device_os": "{{ event.subscription.device_os }}",
"user_language": "{{ event.user.language }}",
"user_sdk": "{{ event.subscription.sdk }}"
}

4.5 — Save

Save the Event Stream configuration.


Step 5 — Test the Connection on OneSignal

  1. Go to Data > Event Streams and activate the appropriate stream
  2. Go to Audience > Subscriptions, choose a contact, and add them as a tester (select as "Add as test subscription")
  3. In the OneSignal Event Streams > click on Edit > use Send Test to fire a sample request
  4. Send a real test push from OneSignal to a test device
  5. Check the Logs tab in OneSignal — a 2xx response means Splio received it

Architecture Overview

┌──────────────┐         ┌──────────────────┐          ┌──────────────────┐
│   CLIENT     │   SDK   │    ONESIGNAL     │  Events  │      SPLIO       │
│  (App/Web)   │────────▶│  (Push Provider) │─────────▶│   (sp-ring)      │
│              │         │                  │◀─────────│                  │
└──────────────┘         └──────────────────┘  Send    └──────────────────┘
                                │                              │
                                │ Delivers to                  │ Sends campaign
                                ▼                              │ via OneSignal API
                         ┌─────────────┐                       │
                         │   Device    │◀──────────────────────┘
                         │ iOS/Android │
                         │    /Web     │
                         └─────────────┘

Event flow:

  1. Splio triggers a push campaign → calls OneSignal Messaging API
  2. OneSignal delivers the push to the contact's device(s)
  3. OneSignal generates events (sent, received, clicked, failed, unsubscribed)
  4. Events are forwarded to Splio via the webhook (Event Stream + JWT auth)
  5. Splio enriches events, updates statistics, and handles unsubscribes

Troubleshooting

IssueCauseFix
Events not received in SplioJWT missing or invalid in Authorization headerRegenerate JWT on the Splio Admin Settings and update Event Stream in OneSignal
Contact not matchedExternal ID not set in OneSignal SDKClient must call OneSignal.login(external_id)
Events received but no statsFeature flag not enabledGet in touch with your Contact at Splio

💡

If you need have questions on this integration, you can send a request to your Splio or OneSignal contact.