Exclusion Scripts

In this post, we will cover how to suppress the email sends to a specific set of Subscribers using Exclusion scripts. The Exclusion script is an optional section displayed when configuring an email send, where the AMPscript expressions can be added. The records are evaluated against the condition defined and if they result in ‘true’, they are excluded from the send. This feature is available in the following applications: 1. Content Builder Go to Email Studio Under the Content Builder Emails tab, click on the email that needs to be sent On the top-right, click on the ‘Send’ button While configuring Step 2 (SELECT AUDIENCE), click on ‘Advanced Exclusions’ on the right-bottom to see the ‘Exclusion Script’ option. 2. Journey Builder Go to the Journey Click on the Email Activity and select the Email Select the Delivery Options tab on the left to see the ‘Exclusion Script’ option. 3. Automation Studio Option 1 Go to Automation Studio Drag the ‘Send Email’ Activity into the workflow Create a new Email Activity or select an existing one and select the email While configuring Step 3 (SELECT AUDIENCE), click on ‘Advanced Exclusions’ on the right-bottom to see the ‘Exclusion Script’ option. Option 2 Go to Email Studio Hover over the Interactions tab and click User-Initiated Emails. Click Create. Enter the name and select an email Under “Recipients,” click Edit Recipients. Select your recipient list. Under “Audience Exclusion Script,” click the plus sign (+) to expand the section 4. Triggered Sends Go to Email Studio Hover over the Interactions tab and click Triggered Sends. Click Create. Go to Exclusion Management | Exclusion Script. Note – Exclusion Script may not be available as an option within the Email Activity. If this is the case, please reach out to Marketing Cloud Support to enable this feature. Now, let’s take a look at some of the examples to understand how this works. Functions/Strings that are used in the examples below: Empty – Check if the field value is empty AttributeValue – Fetch the value for the field name specified RowCount – Function to count the number of records LookupRows – Function to lookup a Data Extension DataExtension_Name – Exclusion Data Extension that includes set of Subscribers Email_Field – Field Name used in the Data Extension emailaddr – System defined string that checks for Subscriber’s email addresses Domain – Check the domain of an email FormatDate – Used for Date formatting Example 1 AttributeValue(“Points_Balance”) < 0 This script checks if the Points balance for a subscriber is less than 0 and if it evaluates to true, they are excluded from the send. Example 2 Empty(AttributeValue(“Points_Balance”)) This script checks if the Points balance for a subscriber is Empty. If there is no value, they are excluded from the send. Example 3 Domain(emailaddr) != “sfmcstack.com” This script checks if the Email address of a subscriber has a domain other than ‘sfmcstack.com’ akash@sfmcstack.com – Evaluates to false and email will be sent since the domain is ‘sfmcstack.com’ akash@sfmc.com – Evaluates to true and will be excluded from the send, since the domain is ‘sfmc.com’ Example 4 AttributeValue(“Points_Expiry_Date”) < FormatDate(Now(),”YYYYMMDD”) This script checks if the Points_Expiry_Date for a subscriber is less than today’s date. If it is expired, then they are excluded from the send. Example 5 RowCount(LookupRows(“DataExtension_Name”,”Email_Field”, emailaddr))>0 This is script checks if the email address exists in a referenced data extension. If it does, then the count will be set to 1(True) and the Subscriber will be excluded from the send. Example 6 (RowCount(LookupRows(“DataExtension_Name_1”, “Email_Field”, emailaddr)) > 0) OR (RowCount(LookupRows(“DataExtension_Name_2”, “Email_Field”, emailaddr)) > 0) If you want to check the email address in multiple Data Extensions, then use the expression including an OR/AND condition. Example 7 In this example, we will use a Code Snippet. Code Snippet is basically a piece of content that can include HTML or AMPscript code and can be created using the below path: Content Builder -> Create -> Content Blocks -> Code Snippet Step 1 – Add the below code to a Code Snippet block: %%[ SET @count = RowCount(LookupRows(“DataExtension_Name”,”Email_Field”, emailaddr)) ]%% %%=v(@count)=%% Step 2 – The following exclusion script is then used to output the result from the Code Snippet: TreatAsContent(ContentBlockbyId(“CODE_SNIPPET_ID”)) > 0 In addition to ContentBlockByID, the below two options can also be used: ContentBlockByKey – Include Key of the Code Snippet ContentBlockByName – Include Name of the Code Snippet Things to Note – 1. AMPscipt block or inline delimiter cannot be included in Exclusion scripts 2. The expression must always evaluate as true or false 3. Using complex filters and/or filters on large tables can cause slow send speeds. The best practice is to pre-filter these subscribers before injecting them. 4. Even though exclusion scripts can be used with large non-triggered sends, all other methods generally perform and scale better (pre-segmentation, Suppression Lists, and Auto-Suppression Lists). Hope you enjoyed it.