[SalesForce] how to prevent duplicate contacts in salesforce marketing cloud when email is changed

If salesforce marketing cloud is connected with SFDC. When contacts are pushed from SFDC to SFMC and email is sent to contacts from SFMC, contacts are saved in all subscribers in SFMC.

What is some contacts changes their email in SFDC, then those contacts will end up in marketing cloud as new contact. How can this problem be resolves so duplicate contacts with different email addresses are not being created in marketing cloud?

Example use-case:

  1. Company Website is linked with SFDC (service cloud)
  2. Customers are constantly going to profile page and update email address
  3. Updated email address does to SFDC (service cloud)
  4. Data from SFDC is pushed to SFMC in syncronished data extention (Customers)
  5. Email is updated in the data extention
  6. When email goes out, SFMC creates a new subscriber since email is new. Hence we end up with duplicate contacts – same contacts with old and new email address.

Best Answer

My suggestion is:

  • Do not allow email changes in the relevant field directly;

  • Set up a separate "changeToAddress" field to enter a new email address; Consider this a change request, not a change.

  • When that field is filled out, send a transactional email to this "new email" address using a dummy key in Marketing Cloud (use GUID() / newId() functions) with a button for the recipient to confirm the change. It makes sense to include the contact ID in order to be able to never lose the connection to the "right" contact in the next step.

  • set up a handler page that handles the confirmation of the change request. you can directly change the "real" email address field in this step using updateSingleSalesforceRecord and the contact Id. On this page you can also update the record on all subscribers, to prevent that it could get out of synch with SFSC, as this is not directly tied, which leads to the effects you describe.

  • after some time , delete the dummy key that was used for the transactional send using Contact Deletion framework.

If nochange confirmation was given, you can also empty the email address from the "changeToAddress". The request is basically declined or invalid, as no one confirmed it, which could be due to fraudulent / invalid email etc. In this case, the system can and should remove all traces of the attempted change, especially since email Address is PII. All that stays is an anonymous sendout statistic. +You have not created a permanent (billable) duplicate Contact.

If a confirmation was given, SFSC & All Subscribers are updated, the email address is confirmed to be valid, you can store a permission, and you also have not created a permanent (billable) duplicate Contact as contact deletion removes the dummy key.

All the while it is a good idea to log what the different systems do. Make sure you include "status", "source" & "timestamp" fields on the relevant objects so you always know WHAT was changed by WHOM and WHEN. Track statuses like "requested", "confirmed" at the different points so you can monitor what's going on and also pick up processes where they got stuck if something goes wrong.

Related Topic