MobilePush Demographics holds information sent to the Marketing Cloud by your application. You can also import contacts into MobilePush and you will see the data for the contacts in the table. It is also the table where you will add any custom attributes you wish to pass to the Marketing Cloud.
The SubscriberID on the table is an auto-populated field which populates when a contact record is created; it is not the same thing as ContactKey/SubscriberKey. The ContactKey (SubscriberKey) is a root table value and is not part of MobilePush Demographics since MobilePush Demographics relates back to the root table on ContactID.
When a new contact record is created by your application sending a registration call to the Marketing Cloud it is create on the root table and on MobilePush Demographics.
Here is information for setting the SubscriberKey for iOS:
http://salesforce-marketingcloud.github.io/JB4A-SDK-iOS/features/subscriber-key.html
Here is information for setting the SubscriberKey for Android:
http://salesforce-marketingcloud.github.io/JB4A-SDK-Android/features/subscriber-key.html
Short answer
A new Contact is created, but no longer visible on the Push Lists.
TL;DR
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 :
- A new Contact is created
- 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.
Best Answer
setProfileId
is the correct method to assign an identifier to both Marketing Cloud and CDP. There is a contact resolution that can happen under the hood without those keys aligned, but it certainly makes things easier if you just set the identifier :)You can use whatever unique identifier for the contact that you wish.
I have no idea what you're asking in #3, but I would say it definitely depends on your use-case.