I have a data extension with approximately 500k entries. This DE should be used as an Entry Audience for a Journey but with additional filtering to be done in the event entry criteria. The data that should be used to filter in the Contact Entry settings is available in another data extension that is linked in Data Designer. That data extension contains opt-out data with entries for subscribers only if he/she doesn't want to receive a certain type of communication. This means that far from every one of the 500k subscribers have an entry in the filter data. When using this as a filter all the subscribers that are not in the exclusion data set are rejected to enter the Journey.

So how can I get a Journey to accept all entries that either do not have an entry in the data set or have an entry that do not match the criteria?

Source data

Exclusion data
entry1 -> exclude for criteria 1
entry2 -> exclude for criteria 2

Result when excluding for "criteria 1":

entry1 is excluded since the exclusion DE say 'exclude for criteria 1', which is the criteria we are trying to exclude
entry2 is included since the exclusion DE say 'exclude for criteria 2', and that is not the criteria we are trying to exclude
entry3 is included since it is not part of the exclusion DE at all


The main issue here is that you are trying to "accept all entries that do not have an entry in the data set...". As you have identified, you can't build out such a criteria in the Expression Editor. There are a couple of options that I can think of:

Option 1: Query

Write an SQL query that updates boolean fields your Event Source DE, essentially defining your exclusion rules outside of Journey Builder. You would then run the query from an Automation and use these fields in your Contact Filter Criteria (within the Event).

Option 2: Exclusion Script

Inject the Contacts into your Journey, but exclude them from being sent emails using Exclusion Scripts (assuming that you only use Send Email activities in your Journey). You will note that there is an exclusion script field in the Send Email Activity (if there's not then you need to request Support to enable this). If the result of the Exclusion Script evaluates to true then they will be excluded from being sent an email.

For example, if you have an Exclusion DE containing Subscriber Keys who need to be excluded, then the Exclusion script could look like this:

Lookup('Exclusion DE','SubscriberKey','SubscriberKey',_SubscriberKey)==_SubscriberKey

In this scenario, if the Contact is not in the 'Exclusion DE' then the script will evaluate to false and they will receive an email.

You could expand this AMPscript to contain multiple criteria, but just remember that it needs to evaluate to true or false.

  • Hi Eliot, Thanks for your reply. Our client will be building new Journeys in their own and we need to use the filtering functionality since we cannot rely on SQL knowledge. Going forward the journeys will also contain a mix of different channels making it hard to use the exclusion scripts. We get the data from a legacy CRM system via a middleware where we chose to expand the opt-out data to include all entries in the source data with True/False flags for the different opt-out options. – Martin Feb 28 '17 at 12:49
  • Have you considered using a filtered DE for your Event Source together with data relationships? You would need to create a simple automation to refresh the filter and fire the event to inject contacts into the Journey, but this could be a good option for you. – Eliot Harper Feb 28 '17 at 17:50
  • Good idea. I will look into the option of a filtered DE as event source tomorrow. Today I need to work on another client. – Martin Mar 2 '17 at 12:41

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.