We have been using email address as our subscriber key in marketing cloud for a couple of years now. We are set to move away from this practice & start using contact ID as our key. My questions are:

  1. When we flip the switch on our subscriber key how does the All subscribers in SFMC handle this data. eg: do the contacts who have previously unsubscribed/held status remain the same or will this data be lost.

  2. For contacts that share the same email address will they receive multiple emails since the subscribers key is different. (we use SQL to bring in this data so manually cleaning this before pushing it to a DL is hard).


1 Answer 1

  1. The contacts you import or sync via Salesforce will look like completely new subscribers in the All Subscribers list as they'll have different subscriber keys. Unsubscribes etc are processed at the subscriber key level - not the email address level, so you will need to do some work to sync the status values.

  2. This is something you can control. When configuring your email sends, you will be able to de-duplicate on email address so an email is received once, regardless of how many times the email address appears in the sendable data extension/list.

As an extra note, it is possible to run a subscriber key migration that actually makes use of the back-end subscriber ID (not to be confused with subscriber key) that will allow you to retain open/click history etc but this generally requires a services engagement.

If you simply want to ensure that you're honouring subscriber status (unsubscribes etc) at the email address level (rather than subscriber key, which is what SFMC will do), this is possible using SQL to return Subscriber Keys where the associated email address has at least one unsubscribed record in the All Subscribers list and one that is not unsubscribed. If you do this after importing all your contacts, you should be able to update the records in the All Subscribers list using the output. Example query:

'unsubscribed' status,
s1.DateUnsubscribed [DateUnsubscribed]
from _subscribers s1
inner join _subscribers s2 on (s2.emailaddress = s1.emailaddress and 
s2.status != 'unsubscribed')
where s1.status = 'unsubscribed'

You must log in to answer this question.

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