Mobile Push Dev documentation states :

Initializing the SDK without setting the delayRegistrationUntilContactKeyIsSet flag to true in an app that will eventually associate the device users with a known identifier. The first launch of the app the SDK will send a registration to the Marketing Cloud. This will be done before it would be possible for the customer to set a contact key. Upon receiving a registration payload without a contact key, the Marketing Cloud will generate one for the device. (eg. abc123) At a point in the future (let’s say once the user logs into their account in the application) the app sets the known contact key in the registration. The device will now send a new registration payload to the Marketing Cloud, a new contact will be created and the device will become associated with the new contact.

As we need to send notifications to not-yet-registered users, we do not use delayRegistrationUntilContactKeyIsSet, so a random Contact Key is registered.

What we have witnessed is that sending our final Contact Key afterwards does not create another Contact, it seems to update the old one.

This is actually what we are looking for, so I wonder if the docs are wrong or outdated, or if the behaviour we see is not intended, and, more important if we can rely on it ?

1 Answer 1


Short answer

A new Contact is created, but no longer visible on the Push Lists.


The documentation is actually right. A new Contact is created every time a new Contact Key is created from the SDK. So when the SDK registers a user (and delayRegistrationUntilContactKeyIsSet(false) was called at init time) a new Contact is created with a random Contact Key. Then, if you register a new Contact Key, 2 things happen :

  1. A new Contact is created
  2. All attributes from Mobile Push are assigned to the new Contact, including Device ID and all your custom ones

So, the original Contact is no longer related to any Device ID, and thus is removed from every Mobile Push lists. This is why it may appear to have disappeared. But, you can still find it in All Contacts.

If no email was send prior to the new Contact Key declaration, it is a Channel-less Contact (see how to remove these Contacts, so they are no longer counted).

On the contrary, if an email was send prior to the new Contact Key declaration, the Contact can still be seen in the Email Channel of All Contacts or any Email List it was in.

  • 2
    Great explanation. +1 from the referenced process of finding orphans. Commented Jul 31, 2022 at 0:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .