概要
OneSignalでは、ユーザーはメッセージングチャネル(モバイルプッシュ、Webプッシュ、メール、SMS)全体で1つ以上のサブスクリプションを持つ個人を表します。- 各ユーザーは最大20のサブスクリプションを持つことができます。
- すべてのユーザーには自動的にOneSignal ID(UUID v4)が割り当てられます。
- ユーザーは、External IDを割り当てるまで匿名として開始されます。External IDを割り当てると、サブスクリプションがリンクされ、ユーザーがアプリにすでに存在する場合は既存のOneSignal IDが置き換えられる可能性があります。
- ユーザーとサブスクリプションには異なるプロパティがあります。 たとえば、タグはユーザーレベルで保存されますが、サブスクリプションステータス(オプトイン/アウト)はサブスクリプションに属します。
- ユーザーコンテキストが変更される場合(たとえば、ログイン(匿名→識別済み)またはアカウントの切り替え(UserA→UserB))、サブスクリプションは古いユーザーから新しいユーザーに再割り当てされます。
- サブスクリプションは、新しいユーザーのプロパティを継承します。
- 以前のユーザーに関連付けられたプロパティ(タグ、言語、External IDなど)は適用されなくなります。
- UserAにはタグ
premium=trueがあります - UserBにはタグ
premium=falseがあります - サブスクリプションがUserAからUserBに移動すると、
premium=trueに関連付けられなくなり、代わりにUserBのプロパティが反映されます。
匿名ユーザーと識別済みユーザー
- 匿名ユーザー: External IDがない→各サブスクリプションは独自のOneSignal IDで分離されます(別々のユーザーとして扱われます)。
- 識別済みユーザー: External IDがある→OneSignalはすべてのサブスクリプションを単一のOneSignal IDの下にマージします。
- Webプッシュサブスクリプション →
OneSignal_ID_1 - モバイルサブスクリプション →
OneSignal_ID_2 - メールサブスクリプション →
OneSignal_ID_3 - SMSサブスクリプション →
OneSignal_ID_4 - 結果: 4人のユーザー(各サブスクリプションは独自のプロパティを持つ別々のユーザー)
- External ID
External_ID_Aを持つWebプッシュサブスクリプション →OneSignal_ID_1 - 同じ
External_ID_Aを持つモバイルサブスクリプション →OneSignal_ID_1にマージ - 同じ
External_ID_Aを持つメールサブスクリプション →OneSignal_ID_1にマージ - 同じ
External_ID_Aを持つSMSサブスクリプション →OneSignal_ID_1にマージ - 結果: 4つのサブスクリプションを持つ1人のユーザー(すべて同じユーザーに関連付けられています)
常にExternal IDを割り当ててください。これにより、チャネルとデバイス全体のサブスクリプションが単一のユーザープロファイルの下で統合され、重複が防止されます。
- 安定した非汎用識別子(例:内部ユーザーIDまたはメールアドレス)を使用します。
- アプリのライフサイクルの早い段階で
OneSignal.loginを呼び出します。
匿名ユーザーと識別済みユーザー
- 匿名ユーザー: External IDがない→各サブスクリプションは独自のOneSignal IDで分離されます(別々のユーザーとして扱われます)。
- 識別済みユーザー: External IDがある→OneSignalはすべてのサブスクリプションを単一のOneSignal IDの下にマージします。
- Webプッシュサブスクリプション →
OneSignal_ID_1 - モバイルサブスクリプション →
OneSignal_ID_2 - メールサブスクリプション →
OneSignal_ID_3 - SMSサブスクリプション →
OneSignal_ID_4 - 結果: 4人のユーザー(各サブスクリプションは独自のプロパティを持つ別々のユーザー)
- External ID
External_ID_Aを持つWebプッシュサブスクリプション →OneSignal_ID_1 - 同じ
External_ID_Aを持つモバイルサブスクリプション →OneSignal_ID_1にマージ - 同じ
External_ID_Aを持つメールサブスクリプション →OneSignal_ID_1にマージ - 同じ
External_ID_Aを持つSMSサブスクリプション →OneSignal_ID_1にマージ - 結果: 4つのサブスクリプションを持つ1人のユーザー(すべて同じユーザーに関連付けられています)
常にExternal IDを割り当ててください。これにより、チャネルとデバイス全体のサブスクリプションが単一のユーザープロファイルの下で統合され、重複が防止されます。
- 安定した非汎用識別子(例:内部ユーザーIDまたはメールアドレス)を使用します。
- アプリのライフサイクルの早い段階で
OneSignal.loginを呼び出します。
User properties
| Property | Description |
|---|---|
| Channel | The Subscriptions the user has, such as Push, Email, or SMS. |
| OneSignal ID | A UUID v4 auto-generated by OneSignal for each user. It may change upon assigning an External ID. |
| Last session | The latest timestamp of app interaction. |
| First session | When the user was initially created in OneSignal. |
| Email from the most recent Email Subscription. | |
| Phone | Phone number from the most recent SMS Subscription. |
| IP Address | From the latest updated Subscription. |
| External ID | A unique identifier you assign to unify the user with your system. |
| Tags | Custom metadata (e.g. preferences, behavior). See Data Tags. |
| Location | GPS coordinates of mobile subscriptions (if location tracking is enabled). See Location-Triggered Notifications. |
| Timezone | timezone_id in IANA TZ format, set by the SDK. Can be updated via API. |
| Language | User’s language in ISO 639-1 format. Can be updated via API or setLanguage. |
| Aliases | Key-value pairs like mixpanel_id : 1234. See Aliases. |
OneSignal ID
The OneSignal ID is an internal UUID v4 generated to uniquely represent a user. It’s automatically created in scenarios such as:- First-time mobile app open (or after reinstall)
- New web push Subscription
- Creating Users/Subscriptions via Create user or CSV Import
- Clearing browser cache and returning to the site
- Logging out with
OneSignal.logout
OneSignal.login, any existing OneSignal ID tied to the current Subscription is replaced by the one associated with that External ID. Subscriptions across platforms (Push, Email, SMS) will be merged under the same OneSignal ID if they share the same External ID.
Reassignment and behavior
If a user reinstalls the app or clears cache, a new OneSignal ID and Subscription are created. However, callingOneSignal.login will link the new Subscription back to the original user profile.
Subscriptions added via OneSignal.User.addEmail or addSms will inherit the current OneSignal ID.
SDK references:
External ID
The External ID is a unique string you assign to users to track them across devices and subscriptions.
Use the External ID to track the user across their subscriptions.
OneSignal.login- Recommended see Mobile SDK and Web SDK- Create user API
- Transfer subscription API
OneSignal.logout(to remove)
Restricted IDs
Do not use placeholder values or temporary values for External IDs. The following values cannot be used for External IDs:NANULL-101all00000000-0000-0000-0000-000000000000
Multiple users on the same device
When multiple users share a device, each new login should trigger a call toOneSignal.login with a different External ID. This reassigns the OneSignal ID and Subscription to the new user.
To handle logout, you can do the following to remove the user context:
- Call
OneSignal.logout()→ clears External ID, removes previous user properties (Tags, Aliases, etc.), and assigns anonymous OneSignal ID. - Optionally disable notifications using
optOut, and re-enable withoptInwhen logging back in.
Monthly active users (MAU)
MAU is used for billing and is defined as a mobile Subscription that has a last session within the 30 day billing period. This includes:- Users that open your app for the first time, creating a mobile Subscription via our SDK
- Users that reinstall the app and open it again, creating another mobile Subscription via our SDK
- Users that get imported via our API
MAU billing example
If a User has these Subscriptions:- iOS mobile (active in the last 30 days)
- Android mobile (active in the last 30 days)
- Web push
- SMS
Reducing MAUs (e.g., paywall use cases)
You can delay SDK initialization and Subscription creation using the mobile SDK privacy methods.- Call
setConsentRequired()before initializing the SDK – this prevents auto-creation of a Subscription - Call
setConsentGiven()when ready to create a Subscription for the user