メインコンテンツへスキップ

概要

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

PropertyDescription
ChannelThe Subscriptions the user has, such as Push, Email, or SMS.
OneSignal IDA UUID v4 auto-generated by OneSignal for each user. It may change upon assigning an External ID.
Last sessionThe latest timestamp of app interaction.
First sessionWhen the user was initially created in OneSignal.
EmailEmail from the most recent Email Subscription.
PhonePhone number from the most recent SMS Subscription.
IP AddressFrom the latest updated Subscription.
External IDA unique identifier you assign to unify the user with your system.
TagsCustom metadata (e.g. preferences, behavior). See Data Tags.
LocationGPS coordinates of mobile subscriptions (if location tracking is enabled). See Location-Triggered Notifications.
Timezonetimezone_id in IANA TZ format, set by the SDK. Can be updated via API.
LanguageUser’s language in ISO 639-1 format. Can be updated via API or setLanguage.
AliasesKey-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
Once an External ID is used via 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, calling OneSignal.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.

You can set or remove the External ID via:

Restricted IDs

Do not use placeholder values or temporary values for External IDs. The following values cannot be used for External IDs:
  • NA
  • NULL
  • -1
  • 0
  • 1
  • all
  • 00000000-0000-0000-0000-000000000000

Multiple users on the same device

When multiple users share a device, each new login should trigger a call to OneSignal.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 with optIn when 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
  • Email
  • SMS
Only iOS and Android mobile Subscriptions count, resulting in 2 MAUs. The subscription status does not matter for MAU billing.

Reducing MAUs (e.g., paywall use cases)

You can delay SDK initialization and Subscription creation using the mobile SDK privacy methods.
  1. Call setConsentRequired() before initializing the SDK – this prevents auto-creation of a Subscription
  2. Call setConsentGiven() when ready to create a Subscription for the user