We use MC Email Studio (synced with the connector to Sales Cloud) to contact Subscribers via email and use the Salesforce PersonContactId as the Contact Key for all our sends.

We are implementing Mobile Push and have noticed MC created separate Contact records using the Device ID as the Contact Key, how can we avoid this and correctly associate devices to existing Contacts?


You handle contactkey registration within the SDK

iOS - 'Registration Updates Via Contact Key, Attributes, and Tags'

Android - 'Registration Updates Via Contact Key, Attributes, and Tags'

You can configure the SDK in a mode that delays registration until a contact key is set by the application. Use this configuration mode only in implementations where the device running your app is tied to a specific contact key in Marketing Cloud and not to a generic device contact.


You should understand that Mobile Push handles both Unknown and Identified mobile contacts.

First, start from your Use cases and decide if you want to target only Identified contacts or more widely also Unknown contacts (called also devices / app holders / mobile prospects).

After installing your mobile application and before logging into it, a contact is still unknown. You will have to choose if you want to have him in your MobilePush contact list.

If yes, intilializing the SDK will create a new mobile push contact with a random GUID generated automatically.

If no, you will have to delay Registration Until a Contact Key is set.

When this contact logs in your application, you will have to retrieve the PersonContactId and register it using the SDK.

If you choosed to have Unknown contacts, they will be converted into an identified contact after registration ( the GUID will be updated by PersonContactId for the same Device ID)

In order to retrieve the PersonContactID, I believe that you already have it as part of your authentication Service. If not, you will have to implement an API Call to the Salesforce Platform prior to registering the contact in MobilePush SDK.

  • Could we register the device with say a substitute ID and then set the correct ID in Marketing Cloud? The external system doesn't have any references to the PersonContactId, but we need to use this as the Contact Key in order to avoid duplication with the already created Contact with PersonContactId. – Deployment Failure Aug 5 '19 at 16:53
  • No you can't. You need to retrieve the PersonContactId from Salesforce. The substitute ID should be an External ID on the Person Account object. – zeljazouli Aug 6 '19 at 9:33
  • We have those external IDs in Salesforce, the CRM system has a way to upsert using external IDs and attach the Salesforce ID but from what I know Marketing Cloud doesn’t have a feature like this? – Deployment Failure Aug 6 '19 at 9:59
  • Exactly. Marketing Cloud doesn't have this feature. You will need to call Salesforce first to retrieve the PersonContactID before registering to MobilePush. I have asked a similar question 2 years ago salesforce.stackexchange.com/questions/181612/… – zeljazouli Aug 6 '19 at 14:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.