notifly
IntegrationsPush providerUpdated

Push through your OneSignal app, from Notifly workflows.

Keep the OneSignal app your users already subscribe to. You connect it to Notifly with its App ID and an API key, register each user's OneSignal id on their subscriber, and the push steps of your Notifly workflows are delivered by OneSignal.

Notifly adds the workflow around each send: one trigger for push, in-app, email, SMS and chat; digest, delay and throttle steps; subscriber preferences checked before each send; and an activity feed with OneSignal's answer. Weighing OneSignal's plans against Notifly's? The Notifly vs OneSignal comparison sets out OneSignal's free plan and pricing next to ours.

What you need from OneSignal

These are the fields the dashboard asks for when you connect OneSignal, quoted from the create form.

FieldRequiredStoredNotes
Application IDRequiredAs entered
API KeyRequiredEncrypted at rest
One Signal APIOptionalAs enteredSelect the One Signal API to use Default (Player Model) or External ID.
  • Application ID and API Key. Your OneSignal app's id and an API key for it, stored encrypted at rest. Notifly sends the key as Authorization: Basic <API Key>. OneSignal's current API reference documents Key <API key> for the App API keys it issues today, which start with os_v2_app_, so send a test push before relying on a newly created key.
  • One Signal API. Which OneSignal id you register per subscriber: player ids with the Player Model default, or External IDs.

Connect OneSignal in the dashboard

  1. Sign in at app.notifly.io, open Integration Store in the sidebar and choose Connect Provider.
  2. In the Connect Integration sheet, open the Push tab (or search across channels), find OneSignal and choose Connect.
  3. Pick the environment the integration belongs to. Development and Production keep separate integrations, so you can point each at a different OneSignal account or key.
  4. Fill in Delivery Provider Credentials with the fields in the table above, then choose Create Integration.

Register a OneSignal id, then trigger a push

Notifly keeps OneSignal ids the way it keeps device tokens: on the subscriber, under the provider id one-signal. The trigger then only names the user.

Node.js · @notiflyio/api@0.1.26
// npm install @notiflyio/api@0.1.26
import { Notifly } from "@notiflyio/api";

const notifly = new Notifly({ security: { secretKey: process.env.NOTIFLY_SECRET_KEY } });

// With "One Signal API" set to External ID, register the External ID your app
// logs the user in to OneSignal with. With the Player Model default, register their player id.
await notifly.subscribers.credentials.registerToken({
  subscriberId: "user_123",
  providerId: "one-signal",
  registerSubscriberDeviceTokenRequestDto: { token: "user_123" },
});

await notifly.trigger({
  workflowId: "weekly-summary",
  to: "user_123",
  payload: { unread: 4 },
  overrides: {
    // Merged into the notification Notifly posts to OneSignal, converted to snake_case.
    providers: { "one-signal": { webUrl: "https://example.com/inbox" } },
  },
});

Prefer plain HTTP? The same trigger is POST https://api.notifly.io/v1/events/trigger with an Authorization: ApiKey header and a body of { "name", "to", "payload" }.

What reaches OneSignal

  • A notification per registered id. A POST /notifications to your app for each id on the subscriber, targeted by player id or by External ID.
  • Title, body and data. The push step's title and body as English headings and contents, and the trigger payload as data, with Notifly's message id as __nvMessageId.
  • Your notification fields. overrides.providers["one-signal"] is merged in, converted to snake_case.
  • No id, no call. A subscriber with no OneSignal id is skipped and recorded in the activity feed.

What Notifly adds on top of OneSignal

Workflows around the send

One trigger runs a workflow: this provider’s step can sit beside in-app, email, SMS, push and chat steps, behind digest, delay and throttle steps.

Digest notifications →

Subscriber preferences, enforced at send

Before each step runs, the subscriber’s workflow and channel preferences are checked; an opted-out step is skipped and the reason is recorded.

An in-app Inbox next to it

The same workflow can write to the Notifly Inbox, a real-time in-app feed you embed with the React component or the JavaScript SDK.

React notification inbox →

Per-trigger provider parameters

Anything the trigger passes under overrides.providers.<provider id> is merged into the request Notifly sends to the provider, per workflow or per step.

Activity you can debug

Every message gets execution details in the activity feed, including the response or error the provider returned.

Secrets encrypted at rest

API keys, tokens and service accounts are stored encrypted with AES-256; new and re-saved credentials use authenticated AES-256-GCM. The table above marks which of this provider’s fields that covers.

Go deeper in the docs

Frequently asked questions

Which One Signal API option should I pick?

Default (Player Model) sends through OneSignal's v1 API with include_player_ids, so the ids you register on a subscriber are OneSignal player ids. External ID sends through api.onesignal.com with include_aliases.external_id and target_channel push, so you register the External ID your app gave the user in OneSignal. The form preselects neither, and an empty choice means the Player Model.

Does OneSignal still bill for pushes Notifly sends through it?

Yes. Every push goes out through your OneSignal app with your API key, so OneSignal's own plan and limits apply to those sends. Notifly's plan meters the workflow events you trigger, whichever provider delivers them.

Does Notifly remove OneSignal ids that stop working?

No. Unlike the FCM, APNs and Expo integrations, the OneSignal integration has no invalid-token check, so a player id or External ID stays on the subscriber until you remove it with subscribers.credentials.removeToken. Notifly records the notification id OneSignal returns for each send, and a refused request records OneSignal's error instead.

Can I pass other OneSignal notification fields?

Yes. Anything under overrides.providers["one-signal"] is merged into the notification Notifly posts, converted to OneSignal's snake_case, so webUrl arrives as web_url. The push step's title and body become OneSignal's English headings and contents, and on iOS each push increases the badge by one.

Bring your provider account. Keep your sender reputation.

One POST /v1/events/trigger — email, SMS, push, in-app, and chat. 10,000 events a month, free.

Get started freeSee pricing