- Registering VoIP tokens in your app using Apple PushKit
- Creating a dedicated OneSignal app with a VoIP Services Certificate
- Registering tokens and sending pushes through the OneSignal REST API
Platform differences
| Platform | VoIP push supported? | How it works |
|---|---|---|
| iOS | Yes | Uses Apple PushKit and a VoIP APNs certificate |
| Android | No | Uses data-only pushes to simulate call-style behavior |
iOS: send VoIP push notifications
On iOS, VoIP notifications use Apple PushKit and follow special delivery rules that differ from standard push notifications. Because Apple treats VoIP pushes differently, OneSignal requires a separate app configuration for VoIP.Register a VoIP token using PushKit
Use Apple’s PushKit framework to register for VoIP notifications and receive a VoIP token.
Apple resources:
- Implement PushKit in your app
- Store and refresh the VoIP token as Apple rotates it
- Follow Apple’s VoIP policies closely
Example: PushKit delegate implementation
Example: PushKit delegate implementation
This is standard Apple PushKit code. OneSignal does not provide a PushKit SDK — you register the token yourself and pass it to OneSignal in Step 4.
Create a separate OneSignal app for VoIP
Apple VoIP pushes require a different certificate type than standard push notifications. A single OneSignal app can only use one certificate type, so you must create two separate OneSignal apps:
- Main Push App: Uses your APNs certificate for standard push notifications
- VoIP Push App: Uses a VoIP Services Certificate for VoIP-only notifications
The bundle ID (e.g.,
com.yourcompany.appname) is found in Xcode under your target’s General tab.Upload a VoIP Services Certificate
In your VoIP OneSignal app, upload a VoIP Services Certificate (.p12). This is a different certificate type than the standard APNs push certificate you use for regular notifications.To create one:

- Go to the Apple Developer Portal
- Select VoIP Services Certificate
- Follow the prompts to generate and download the certificate
- Open it in Keychain Access and export it as a
.p12file - Upload the
.p12file to your VoIP OneSignal app’s iOS settings


Register the VoIP token with OneSignal
Use the Create User API to register the VoIP token with your VoIP OneSignal app.To update the token later, use the Update Subscription API.
A valid VoIP token is a 64-character lowercase hex string (e.g.,
a1b2c3d4e5f6...). PushKit does not work on the iOS Simulator — you must use a real device to obtain a valid token.Send VoIP notifications
Use the Create Notification API with the following parameters:
"apns_push_type_override": "voip"— tells Apple this is a VoIP pushapp_id— your VoIP app IDinclude_subscription_ids— the VoIP subscription ID you registered- Either
contentsorcontent_availableis required
Verify your VoIP setup
Your iOS VoIP integration is working correctly if:
- The VoIP token appears as an iOS push subscription in your VoIP app
- A VoIP push triggers
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)in your app - The app wakes even when it is terminated or backgrounded
Android: simulate VoIP-style behavior
Android does not support VoIP push notifications. There is no equivalent to Apple PushKit. Instead, Android calling apps simulate VoIP behavior using:- Data-only push notifications
- Foreground services
- Custom call-style UI
- Send data-only notifications
- Handle them in your app to:
- Start a foreground service
- Launch a call UI activity
- Display a custom incoming call notification
Android setup is not specific to OneSignal. OneSignal only delivers the push payload; your app handles call behavior.
FAQ
Do confirmed deliveries work with VoIP?
No. Confirmed Deliveries are not tracked for VoIP pushes. Confirmed Deliveries rely on the Notification Service Extension, which does not trigger for VoIP notifications. Instead, track receipt via the native iOS PushKit event:Can I send VoIP notifications from the OneSignal dashboard?
No. VoIP notifications must be sent via the Create Notification API with"apns_push_type_override": "voip". The dashboard does not support this parameter.
Why is my VoIP push silently failing?
VoIP pushes can fail without any error from the OneSignal API. Work through this checklist:- Are you using a sandbox/development build? You must include
"test_type": 1when registering the token via the Create User API. Without it, the token registers as production, Apple rejects the push, and it silently fails. - Did you upload the correct certificate? The VoIP OneSignal app must use a VoIP Services Certificate (.p12), not a standard APNs push certificate. Both look similar in Keychain Access — verify the certificate name starts with “VoIP Services”.
- Are you sending to the right OneSignal app? The
app_idin your send request must be your VoIP app, not your main push app. TheREST API Keymust also come from the VoIP app. - Is the VoIP token valid? Tokens expire when the app is reinstalled or the device is restored. Check that the token is a 64-character lowercase hex string and was recently registered.
- Does your app call
reportNewIncomingVoIPPushPayload? Starting in iOS 13, Apple terminates apps that receive a VoIP push but do not report a call to CallKit. This is an Apple requirement, not a OneSignal limitation.
Related pages
Create message API
Send push notifications programmatically using the REST API.
Confirmed deliveries
Track push notification delivery confirmation on supported platforms.
Service extensions
Customize notification handling with Notification Service Extensions.
Create User API
Register users and subscriptions with the OneSignal API.