Skip to content

[Bug]: External ID and User Tags being cleared/removed automatically #1659

Closed

Description

@bundleberk

What happened?

For the past 2 weeks, we have observed a regression where identified users are being reverted to "Anonymous" status. The external_id is removed, and user tags—specifically "County" and "Language"—are being wiped.

This behavior began around mid-April 2026

1 - We suspect the SDK might be misidentifying the custom tag "Language" as the internal system property language. Is v5.5.0 inadvertently syncing custom tags into system property slots and failing to persist them if they don't match the device's locale settings?

2 - Similarly, is there a new internal logic in the User Model that treats "County" as a protected location-based field, causing it to be overwritten by the SDK's auto-detected location data?

3 - Is this a known issue on the 5.5.0 branch? Should we downgrade to 5.2.14 to avoid this new User Model behavior?

4 - Given that this started 2-3 weeks ago (during the April 15th Data Model migration), is the SDK sending an "Anonymous" heartbeat on launch that the backend processes after the login call, effectively wiping the identified session?

Steps to reproduce?

Some of our 2-3 years old subscriptions suddenly becoming anonymous.

What did you expect to happen?

Once I set the external id and the user tags, I expect them to stay there forever unless I manually remove a tag or log the user out.

OneSignal iOS SDK version

Release 5.5.0

iOS version

18, 17, 16, 15, 14, 13, 12, 11 or below

Specific iOS version

Relevant log output

Code of Conduct

  • I agree to follow this project's Code of Conduct

Activity

  1. afnanalfazary commented on May 3, 2026

    @afnanalfazary

    We are experiencing a very similar issue on iOS using SDK version 5.5.0, and it matches the behavior described here.
    In our case:
    The app calls OneSignal.login(externalId) correctly
    The push subscription is initially created and appears under the correct external_id
    Notifications work correctly (foreground, background, and terminated)
    After some time (e.g., ~1 hour or after lifecycle changes), the push subscription is no longer associated with that external_id
    The subscription either:
    becomes attached to an anonymous OneSignal user, or
    disappears from the expected user’s subscriptions in the dashboard
    Additional observation
    We also consistently observe the following pattern:
    Same physical device
    Same time window
    Multiple active push subscriptions
    Subscriptions distributed across different OneSignal users (one with external_id, another anonymous)
    This appears to be a single underlying identity/subscription association issue, which manifests as:
    The active subscription is temporarily linked to the correct user, then later gets detached
    The same device ends up with subscriptions spread across multiple OneSignal users
    This leads to inconsistent notification delivery when targeting by external_id.
    What we verified on our side
    We do NOT call OneSignal.logout()
    We removed any custom logic using subscription IDs (no active_subscription tag)
    We only target users via external_id
    We re-link the user on:
    app launch
    app became active
    onPushSubscriptionDidChange
    We use manual forwarding with OneSignal_disable_swizzling = true
    Questions
    1-Is this a known issue in SDK 5.5.0 related to identity reconciliation or subscription association?
    2-Is there any scenario where the SDK may overwrite or drop the external_id after login?

  2. marclucraft commented on May 8, 2026

    @marclucraft

    Hello @afnanalfazary!

    Are you using "Country" and/or "Language" as tags, as @bundleberk described in their report, or any other tags that share names with user properties?

    Also, is the behaviour still the same after removing the active_subscription tag logic you described?

  3. nan-li commented on May 8, 2026

    @nan-li
    Contributor

    Additionally, can you elaborate on this point:

    a regression where identified users are being reverted to "Anonymous" status.

    Does the user have the same onesignal_id, but the external_id is gone? Or is the user in the SDK a new user with a new onesignal_id?

  4. bundleberk commented on May 11, 2026

    @bundleberk
    Author

    Onesignal ids seem to be changing too but it is not the case for every subscription that had lost their external ids.

    There is one user that got 11 different onesignal ids in the last 12 days.

    But overall half of the users that lost their external ids had their onesignal ids changed. The other half's onesignal ids stayed the same.

  5. nan-li commented on May 12, 2026

    @nan-li
    Contributor

    Onesignal ids seem to be changing too but it is not the case for every subscription that had lost their external ids.
    There is one user that got 11 different onesignal ids in the last 12 days.

    Ok, so this is saying the push subscription moved to a new user, as a OneSignal ID uniquely identifies a single user instance from the perspective of a OneSignal, and does not change for a OneSignal user. A new OneSignal ID would mean a new user instance.

    When you say one user got 11 different onesignal ids, you mean that a user has logged into a device and hasn't done anything different (no logouts, no other logins to a different user) and the onesignal ID is changing (user instance is changing)? How are you finding this information? Is it reproducible or do you have logs / data that we can look at? Please send any sensitive information to support@onesignal.com and reference this issue.

    But overall half of the users that lost their external ids had their onesignal ids changed. The other half's onesignal ids stayed the same.

    The half whose onesignal IDs stayed the same, did the same onesignal ID previously have an external_id and now the external_id is gone (as the following example illustrates)? Or do you mean the OneSignal User in the app stayed the same?

    // When you View User, you previously see it has an external_id
      "identity": {
        "external_id": "user1",
        "onesignal_id": "1861a7b6-23d3-4751-9454-13889856aae4"
      },
    
    // But now the external_id is gone for the same onesignal_id
      "identity": {
        "onesignal_id": "1861a7b6-23d3-4751-9454-13889856aae4"
      },
    
  6. bundleberk commented on May 13, 2026

    @bundleberk
    Author

    @nan-li is it technically safe to downgrade from 5.5.0 to 5.2.14? would it break anything?

  7. nan-li commented on May 15, 2026

    @nan-li
    Contributor

    Hi, we followed up through another channel of conversation, but no SDK changes should affect what you are seeing since 5.2.14 so we would like to figure out what is happening for you app.

  8. bundleberk commented on Jun 1, 2026

    @bundleberk
    Author

    It is unfortunately not reproducible, cannot provide you logs because it seems random

  9. nan-li commented on Sep 17, 2026

    @nan-li
    Contributor

    Closing this out as we have been in direct conversation. Upgrading to 5.5.4 appears to fix it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions