Iām building a welcome journey in SFMC for first-time customers, with emails on Days 0, 3 and 7. The entry Data Extension is overwritten daily, but customers already in the journey continue using their Journey Data.
I want customers who unsubscribe during a wait to exit the journey before the next email. My source DE has a Marketing Consent field, but it isnāt automatically updated when someone unsubscribes.
What is the recommended way to configure this? Can Exit Criteria read the current All Subscribers or publication-list status directly, or do I need a separate status DE linked in Contact Builder? If a separate DE is needed, how should its status be kept updated?
Also, my fictional test customer exists in the entry DE but not in All Subscribers. How can I test this exit rule correctly?
#Marketing Cloud #Journey Builder
,
Even though Salesforce Marketing Cloud (SFMC) automatically blocks emails to anyone marked "Unsubscribed" in the All Subscribers list, relying solely on that list won't remove them from the Journey canvas. If you want contacts to leave the journey when they officially opt out, or if consent comes from an external CRM, use one of the two approaches below.
Option 1: Use Journey Exit Criteria via Contact Builder (Recommended)
Journey Builder cannot read the All Subscribers list or Publication Lists directly in Exit Criteria. It requires a linked Data Extension under Contact Data.
- Create a Consent / Unsubscribe Data Extension (DE)
- Include fields such as SubscriberKey (Primary Key) and ConsentStatus or Status.
2.Keep the DE Updated Automatically
- If consent is tracked inside SFMC: Set up a scheduled Automation Studio query targeting the _Unsubscribe data view or _Subscribers data view to populate this DE regularly (e.g., hourly).
- If consent comes from Salesforce CRM or an external system: Use Synchronized Data Extensions or an incoming API/file import to keep this DE up to date.
3. Link the DE in Contact Builder
- Go to Contact Builder > Data Designer.
- Create an Attribute Group and link your Consent DE to the Contact record using Contact Key = SubscriberKey (1-to-1 relationship).
4. Set the Exit Criteria in Journey Builder
- Select Contact Data (not Journey Data).
- Configure the rule: Consent DE -> Status equals 'Unsubscribed'.
- How it works: Whenever a contact finishes a wait activity, Journey Builder evaluates the Exit Criteria. If their record in Contact Data shows they opted out, they immediately exit before the next email is sent.
Option 2: Suppress via Exclusion Script (Quick Workaround)
If you do not want to configure an Attribute Group in Contact Builder, you can keep contacts inside the journey path but prevent the emails from sending:
- Maintain an updated Unsubscribed_DE containing SubscriberKey.
- Add an Exclusion Script to each Email Activity in the journey:
Code snippet
ROWCOUNT(LOOKUPROWS("Unsubscribed_DE", "SubscriberKey", AttributeValue("_SubscriberKey"))) > 0
If their key appears in the unsubscribe list, SFMC skips sending the email.
How to Test This with Fictional Test Customers
Because your fictional customer is not in All Subscribers yet:
- Add them to All Subscribers first: Perform a simple test send (or standard User-Initiated send) to your test record so SFMC registers the SubscriberKey and email address in All Subscribers.
- Enter the Journey: Inject the test subscriber into your Journey.
- Trigger the Unsubscribe Mid-Wait: While the contact is paused in the Day 0ā3 Wait activity:
- Change their status in your Consent DE (or in All Subscribers / your CRM).
- Run your update query/automation so the linked Contact Data DE reflects Status = Unsubscribed.
4. Verify the Exit: When the wait timer expires, inspect the Journey canvas health and history. The contact will show as Exited via Exit Criteria rather than moving to the next email.