Skip to main content
Solved

What functionality do we lose if we don't use a UUID for app user ID?


Forum|alt.badge.img

In reading over the documentation, I see that the appAccountToken in the StoreKit transaction is only set if the app user ID is a UUID (https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notifications#user-identity). 

We use firebase for auth and their user IDs are not UUIDs. We can generate a UUID from the Firebase ID, but we’d need to to create a UUID → Firebase UID lookup. We can easily do this if necessary, but I’m not clear on the benefits. "

What do we lose out on if appAccountToken is not set because we aren’t using UUIDs? 

Best answer by guilherme

Hey ​@Jacob from Deglaze ,

Since Firebase UIDs aren’t UUIDs, this field will be empty unless you generate and use a UUID as the App User ID in RevenueCat (and then through a mapping in your system, as you mentioned.

This is important for Apple StoreKit server-to-server (S2S) notifications, which are used to track subscription events (like renewals, cancellations, billing issues) without relying on the app being open. RevenueCat listens to these notifications to update user status and trigger webhooks or integrations.

If appAccountToken is set, RevenueCat can link the incoming transaction directly to your user. If it’s not set, RevenueCat creates a new anonymous user and attaches the purchase there.

As to what can happen without it:

  • User identity fragmentation: purchases may get linked to a new anonymous user instead of your actual App User ID.

  • Broken restore flows: when a user reinstalls or switches devices, their subscription may not map correctly unless the SDK posts the receipt again.

  • Missing or misaligned attributes: customer attributes you sync (like email or device) may end up on the wrong user ID, breaking integrations.

  • Transfer behavior complexity: if you're relying on "keep with original App User ID" or similar logic, the absence of appAccountToken can create unexpected behavior.

You’ll still get basic purchase tracking and entitlement unlocks, but data consistency and supportability will suffer.

If you plan to rely on StoreKit server notifications or want clean user identity across devices and platforms, we strongly recommend generating a UUID for each user and using that as the App User ID in RevenueCat.

More context on the transfer behavior:


Best,

View original
Did this post help you find an answer to your question?

guilherme
RevenueCat Staff
Forum|alt.badge.img+3
  • RevenueCat Staff
  • May 30, 2025

Hey ​@Jacob from Deglaze ,

Since Firebase UIDs aren’t UUIDs, this field will be empty unless you generate and use a UUID as the App User ID in RevenueCat (and then through a mapping in your system, as you mentioned.

This is important for Apple StoreKit server-to-server (S2S) notifications, which are used to track subscription events (like renewals, cancellations, billing issues) without relying on the app being open. RevenueCat listens to these notifications to update user status and trigger webhooks or integrations.

If appAccountToken is set, RevenueCat can link the incoming transaction directly to your user. If it’s not set, RevenueCat creates a new anonymous user and attaches the purchase there.

As to what can happen without it:

  • User identity fragmentation: purchases may get linked to a new anonymous user instead of your actual App User ID.

  • Broken restore flows: when a user reinstalls or switches devices, their subscription may not map correctly unless the SDK posts the receipt again.

  • Missing or misaligned attributes: customer attributes you sync (like email or device) may end up on the wrong user ID, breaking integrations.

  • Transfer behavior complexity: if you're relying on "keep with original App User ID" or similar logic, the absence of appAccountToken can create unexpected behavior.

You’ll still get basic purchase tracking and entitlement unlocks, but data consistency and supportability will suffer.

If you plan to rely on StoreKit server notifications or want clean user identity across devices and platforms, we strongly recommend generating a UUID for each user and using that as the App User ID in RevenueCat.

More context on the transfer behavior:


Best,


Forum|alt.badge.img

Thank you ​@guilherme! This is very useful. We’ll go ahead and build the mapping.

One suggestion that would be useful for future integrators - it’d be nice if you could set a customer attribute $appleUuid similar to $mixpanelDistinctId and other integration identifiers so that we could use our actual user IDs and still get this functionality. Even better would be if RevenueCat did this under the hood. For example, if the user ID is not a UUID, generate a deterministic UUID using uuidv5 and associate this with the RevenueCat customer as an additional alias or attribute. 


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings