OneSignal · AsyncAPI Specification

Onesignal Webhooks

Version

View Spec View on GitHub NotificationPushEmailSMSMobilePush NotificationsWeb PushCustomer EngagementMarketing AutomationLive ActivitiesRCSIn-App MessagingJourneysLifecycle MarketingMCPAgent ReadyAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://documentation.onesignal.com/docs/en/event-streams, https://documentation.onesignal.com/docs/en/webhooks,
  https://documentation.onesignal.com/docs/en/journeys-webhook
provider: OneSignal
providerId: onesignal
type: webhooks
asyncapi_published: false
asyncapi_note: >-
  OneSignal publishes no AsyncAPI document. Its event surface is outbound HTTP
  POST from OneSignal infrastructure to a customer endpoint — there is no
  WebSocket, SSE, MQTT or gRPC endpoint a customer connects to. This confirms
  and extends the 2026-05-29 review in review.yml. No AsyncAPI was authored;
  fabricating one would misrepresent the surface.
description: >-
  Three distinct things at OneSignal are called "webhooks" and they are not
  interchangeable. Event Streams is the real server-side event surface and the
  one OneSignal recommends. Web push webhooks are a legacy browser-side callback
  limited to web push. Journey webhook steps are an outbound action inside an
  automation flow, gated to annual plans.
surfaces:
- id: event-streams
  name: Event Streams
  recommended: true
  url: https://documentation.onesignal.com/docs/en/event-streams
  data_reference: https://documentation.onesignal.com/docs/en/event-streams-data
  direction: outbound
  transport: HTTP POST (method configurable)
  configured_in: Dashboard > Data > Event Streams
  body_format: JSON, fully caller-defined via key/value pairs or a custom body block
  templating: Liquid syntax over event, message and user properties
  authentication: customer-defined request headers (Authorization or custom headers)
    set on the stream configuration
  filtering: optional filters limiting a stream to specific message IDs or template
    IDs
  scope: all channels — push, email, SMS, in-app messages, Live Activities
  events:
  - channel: push
    types:
    - sent
    - received
    - clicked
    - failed
    - unsubscribed
  - channel: email
    types:
    - sent
    - opened
    - clicked
    - bounced
    - unsubscribed
  - channel: sms
    types:
    - sent
    - delivered
    - undelivered
    - failed
  - channel: in-app message
    types:
    - impression
    - clicked
  - channel: live activity
    types:
    - sent
    - delivered
    - confirmed receipt
    - failed
    - unsubscribed
    - clicked
  quota_note: >-
    Every event counts against the plan's message-event volume. One send to
    100,000 users generates 100,000 `sent` events on its own, so OneSignal
    advises selecting only the needed event types and using stream filters.
  billing_gate: message event retention is plan-tiered (none on Free, 30/60/90 days
    on Growth/Professional/Enterprise)
- id: web-push-webhooks
  name: Web push webhooks
  recommended: false
  legacy: true
  url: https://documentation.onesignal.com/docs/en/webhooks
  direction: outbound
  transport: HTTP POST from the browser service worker
  scope: web push only — does not fire for mobile push, email, SMS or in-app messages
  headers:
  - name: X-OneSignal-Event
    description: Event type that triggered the webhook.
  body_fields:
  - name: event
    type: string
    description: Event type that triggered the webhook.
  events:
  - name: notification.willDisplay
    browsers:
    - Chrome
    - Firefox
    - Safari
  - name: notification.clicked
    browsers:
    - Chrome
    - Firefox
    - Safari
  - name: notification.dismissed
    browsers:
    - Chrome
    note: Chrome only.
  browser_support:
  - browser: Chrome
    platforms:
    - macOS
    - Windows
    - Android
    events: all (display, click, dismiss)
  - browser: Firefox
    platforms:
    - macOS
    - Windows
    - Android
    events: display and click
  note: Kept for teams that specifically need client-side web push callbacks. OneSignal
    directs most integrations to Event Streams instead.
- id: journey-webhooks
  name: Journey webhook steps
  url: https://documentation.onesignal.com/docs/en/journeys-webhook
  direction: outbound
  transport: HTTP request issued as an action step inside a Journey
  scope: per-Journey, per-user
  use_case: calling an external system mid-automation — for example sending WhatsApp
    messages via a third-party API
  billing_gate: annual plans only; talk to sales
network:
  outbound_origin: Google Cloud Platform, europe-west4 (Groningen, Netherlands)
  allowlist_guidance: allow inbound traffic from https://api.onesignal.com, or filter
    GCP's published IP ranges to europe-west4
  source: https://documentation.onesignal.com/reference/rest-api-overview
inbound_streaming:
  websocket: false
  server_sent_events: false
  grpc: false
  mqtt: false
  note: >-
    The one SSE response observed anywhere on OneSignal's surface is the MCP
    transport at documentation.onesignal.com/mcp, which is an MCP session
    channel, not a customer event stream.
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com