For existing customers who need to migrate to OneSignal’s new user-centric APIs and SDKs
Multi-channel messaging
OneSignal has migrated away from a device-centric model (player ID) to a new user-centric data model (OneSignal ID). To learn more, check out the User Model Migration Guide.
This guide helps you make sense of our new user model compared to the old player model and provides high-level guidance on migrating an existing app to the User Model.
We’ve updated our core model from a device-centric system to a user-centric one. Previously, you managed relationships between devices and users by assigning an external_id
to Player objects. This complexity made it difficult to unify devices into a concept of a user, limiting adoption of features like Journeys.
The new User Model lets you represent real users directly.
A User represents a unique person who engages with your product. Each user:
external_id
, email
, or a custom IDUser objects can be identified using any alias. For example:
onesignal_id
: auto-generated, read-only, reservedexternal_id
: writable, auto-migrated, reservedfacebook
, email
, user_id
): fully customizableLearn more: Users and Aliases & External ID
User objects also include:
tags
, language
, and last_active
player to user's and subscriptions diagram
external_id
during migration.Unify via external ID
Set external_id
to group devices under the same user using:
SDK login()
method
API:
CSV Import:
Ship an updated app and site with our latest SDKs
Use our v5.x.x SDKs for the new user-centric APIs. These SDKs may not be at feature parity with previous versions.
We recommend using phased rollouts:
See the SDKs section below for supported platforms.
If you encounter challenges, contact support@onesignal.com
.
Update your backend to call new User Model APIs
Replace all deprecated API calls with new User Model equivalents. See Deprecated APIs.
Platform | SDK | Migration Guide |
---|---|---|
Android | onesignal-android-sdk v5 | Android Native 5.0 Upgrade Guide |
iOS | onesignal-ios-sdk v5 | iOS Native 5.0 Upgrade Guide |
Platform | SDK | Migration Guide |
---|---|---|
Android | onesignal-android-sdk v5 | Android Native 5.0 Upgrade Guide |
iOS | onesignal-ios-sdk v5 | iOS Native 5.0 Upgrade Guide |
Platform | SDK | Migration Guide |
---|---|---|
Unity | onesignal-unity-sdk v5+ | Unity 5.0 Upgrade Guide |
Flutter | onesignal-flutter-sdk v5+ | Flutter 5.0 Upgrade Guide |
React Native | react-native-onesignal v5+ | React Native 5.0 Upgrade Guide |
MAUI | onesignal-dotnet-sdk v5+ | .NET 5.0 Upgrade Guide |
Xamarin | Not available | .NET 5.0 Upgrade Guide |
Platform | SDK |
---|---|
Node | onesignal-node-api v2+ |
Go | onesignal-go-api v2+ |
Java | onesignal-java-api User Model Updates Coming Soon |
.NET | onesignal-dotnet-api v2+ |
Rust | onesignal-rust-api v2+ |
Ruby | onesignal-ruby-api v2+ |
C++ | onesignal-cpp-api User Model Updates Coming Soon |
Python | onesignal-python-api v2+ |
PHP | onesignal-php-api User Model Updates Coming Soon |
Rails | onesignal-rails-plugin User Model Updates Coming Soon |
Deprecated Player Model API | New User Model API |
---|---|
View device | View user |
View device(s) | View user |
Add device | Create user or Create subscription |
Edit device | Update user or Update subscription |
Edit tags with External ID | Update user |
Delete player record | Delete user or Delete subscription |
Deprecated Player Model API | New User Model API |
---|---|
View device | View user |
View device(s) | View user |
Add device | Create user or Create subscription |
Edit device | Update user or Update subscription |
Edit tags with External ID | Update user |
Delete player record | Delete user or Delete subscription |
API | Route | Description |
---|---|---|
Create user | POST /v1/apps/{app_id}/users | Create a new user |
View user | GET /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | View user data |
Update user | PATCH /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | Update a user |
Delete user | DELETE /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | Delete a user |
Create alias | PATCH /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity | Add alias to user |
Delete alias | DELETE /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity/{alias_label_to_delete} | Remove alias from user |
API | Route | Description |
---|---|---|
Create subscription | POST /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions | Create subscription |
Update subscription | PATCH /v1/apps/{app_id}/subscriptions/{subscription_id} | Update subscription |
Delete subscription | DELETE /v1/apps/{app_id}/subscriptions/{subscription_id} | Delete subscription |
Transfer subscription | PATCH /v1/apps/{app_id}/subscriptions/{subscription_id}/owner | Transfer to another user |
For existing customers who need to migrate to OneSignal’s new user-centric APIs and SDKs
Multi-channel messaging
OneSignal has migrated away from a device-centric model (player ID) to a new user-centric data model (OneSignal ID). To learn more, check out the User Model Migration Guide.
This guide helps you make sense of our new user model compared to the old player model and provides high-level guidance on migrating an existing app to the User Model.
We’ve updated our core model from a device-centric system to a user-centric one. Previously, you managed relationships between devices and users by assigning an external_id
to Player objects. This complexity made it difficult to unify devices into a concept of a user, limiting adoption of features like Journeys.
The new User Model lets you represent real users directly.
A User represents a unique person who engages with your product. Each user:
external_id
, email
, or a custom IDUser objects can be identified using any alias. For example:
onesignal_id
: auto-generated, read-only, reservedexternal_id
: writable, auto-migrated, reservedfacebook
, email
, user_id
): fully customizableLearn more: Users and Aliases & External ID
User objects also include:
tags
, language
, and last_active
player to user's and subscriptions diagram
external_id
during migration.Unify via external ID
Set external_id
to group devices under the same user using:
SDK login()
method
API:
CSV Import:
Ship an updated app and site with our latest SDKs
Use our v5.x.x SDKs for the new user-centric APIs. These SDKs may not be at feature parity with previous versions.
We recommend using phased rollouts:
See the SDKs section below for supported platforms.
If you encounter challenges, contact support@onesignal.com
.
Update your backend to call new User Model APIs
Replace all deprecated API calls with new User Model equivalents. See Deprecated APIs.
Platform | SDK | Migration Guide |
---|---|---|
Android | onesignal-android-sdk v5 | Android Native 5.0 Upgrade Guide |
iOS | onesignal-ios-sdk v5 | iOS Native 5.0 Upgrade Guide |
Platform | SDK | Migration Guide |
---|---|---|
Android | onesignal-android-sdk v5 | Android Native 5.0 Upgrade Guide |
iOS | onesignal-ios-sdk v5 | iOS Native 5.0 Upgrade Guide |
Platform | SDK | Migration Guide |
---|---|---|
Unity | onesignal-unity-sdk v5+ | Unity 5.0 Upgrade Guide |
Flutter | onesignal-flutter-sdk v5+ | Flutter 5.0 Upgrade Guide |
React Native | react-native-onesignal v5+ | React Native 5.0 Upgrade Guide |
MAUI | onesignal-dotnet-sdk v5+ | .NET 5.0 Upgrade Guide |
Xamarin | Not available | .NET 5.0 Upgrade Guide |
Platform | SDK |
---|---|
Node | onesignal-node-api v2+ |
Go | onesignal-go-api v2+ |
Java | onesignal-java-api User Model Updates Coming Soon |
.NET | onesignal-dotnet-api v2+ |
Rust | onesignal-rust-api v2+ |
Ruby | onesignal-ruby-api v2+ |
C++ | onesignal-cpp-api User Model Updates Coming Soon |
Python | onesignal-python-api v2+ |
PHP | onesignal-php-api User Model Updates Coming Soon |
Rails | onesignal-rails-plugin User Model Updates Coming Soon |
Deprecated Player Model API | New User Model API |
---|---|
View device | View user |
View device(s) | View user |
Add device | Create user or Create subscription |
Edit device | Update user or Update subscription |
Edit tags with External ID | Update user |
Delete player record | Delete user or Delete subscription |
Deprecated Player Model API | New User Model API |
---|---|
View device | View user |
View device(s) | View user |
Add device | Create user or Create subscription |
Edit device | Update user or Update subscription |
Edit tags with External ID | Update user |
Delete player record | Delete user or Delete subscription |
API | Route | Description |
---|---|---|
Create user | POST /v1/apps/{app_id}/users | Create a new user |
View user | GET /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | View user data |
Update user | PATCH /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | Update a user |
Delete user | DELETE /v1/apps/{app_id}/users/by/{alias_label}/{alias_id} | Delete a user |
Create alias | PATCH /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity | Add alias to user |
Delete alias | DELETE /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity/{alias_label_to_delete} | Remove alias from user |
API | Route | Description |
---|---|---|
Create subscription | POST /v1/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions | Create subscription |
Update subscription | PATCH /v1/apps/{app_id}/subscriptions/{subscription_id} | Update subscription |
Delete subscription | DELETE /v1/apps/{app_id}/subscriptions/{subscription_id} | Delete subscription |
Transfer subscription | PATCH /v1/apps/{app_id}/subscriptions/{subscription_id}/owner | Transfer to another user |