I'm in a bit of a sticky scenario regarding opt outs and ContactKeys with my current client...

We essentially have 3 BUs (we're only sending messages from Child BUs). For each Child BU we are using a different Contact Key, mainly due to one of the BU's being connected via MCC. The current opt out process for each BU is that once you submit your unsubscribe request, a record is created in a DE that belongs in the Parent BU and an automation processes the unsubscribe using an SSJS activity.

However, what we want to be able to do is if someone opts out of 1 BU, we want to opt out his other ContactKey in the other BU as well. We have a table where both ID values are stored (columns are Name, ID1, ID2). My initial thoughts are update the SSJS script so that if has an IF THEN check - Basically, if there is another ID value in the DE as well for this Contact, then also opt it out. Has anyone had similar experience with this using SSJS? The BU structure is as below:

  1. Parent BU
  2. Child BU1 (uses SFDC Id)
  3. Child BU2 (uses enterprise Id)

We also then run into the issue of what if someone unsubscribes from a BU1, and then has a record created in BU2 later...how do we proactively unsubscribe that record as well...For now, i'm taking this one step at a time so no worries if no answers there!

Thanks everyone!

  • To add to your second scenario (what if someone unsubscribes from one business unit and later has a record created in another), if you run the steps below on an automation schedule (daily, for example) in Automation Studio, you will ensure that all records associated with an email address are unsubscribed. If the answer solves your issue, would appreciate if it can be marked as accepted. Nov 5 '20 at 16:09

Easiest way to achieve this is based on a shared email address value, so when an unsubscribe takes place for a subscriber, you're able to also unsubscribe any other subscriber keys that share the same email address.

An automation can achieve this in four steps:

  1. SQL query returning Subscriber Keys where the associated email address has at least one unsubscribed record in the All Subscribers list and one that is not unsubscribed.

      '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'
  2. Data Extract activity, to extract a .csv file of the Data Extension populated in the previous step (which will need SubscriberKey, EmailAddress, DateUnsubscribed and Status as fields). The Status value is actually what you'll be updating it to, so I have this labelled in my DE as Status_to_update_to to avoid any confusion.

  3. File transfer activity, to transfer the file from the previous step to the Import folder on the Marketing Cloud SFTP, where it can be processed from.

  4. Import activity, to import the file into the All Subscribers list to unsubscribe the records from the file.

  • Thanks @Antonio, we had a bit of a different solution. We have a "Master Subs" table which had the SubKey1, SubKey2, and MasterUnsubscribeFlag. Basically, we used the table to map the SubscriberKeys to each other and if a subscriber did a Master Unsubscribe, we'd flag them. We also have a daily automation which does a comparison of the Master Unsub records to see if there's an edge case scenario where SubKey1 did a Master Unsub and then was added again a week later with SubKey2. In this case, we'd add them to a DE that we were leveraging to process the unsubscribes
    – balwill
    Nov 6 '20 at 4:23

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.