• Akash Israni

Send Throttle in Salesforce Marketing Cloud


In this post, we will cover the basics of 'Send Throttle' and how to use it in Salesforce Marketing Cloud.


What is throttle?

Throttle is used to control the number of messages to be sent out each day within a specified period of time, rather than sending it all at once. There are two options that need to be set:

1. Delivery Window - Specify the time range between which the email sends would occur

2. Hourly Threshold - Number of emails to be sent each hour



Why do we need throttle in SFMC?

  • Control traffic to the website

  • Handle requests to the support center

  • Reduce Deliverability issues

 

If the throttle plan is to send out the messages using the same throttle every day, then it can be done using the following options:


1. Journey


In a Journey when configuring an email activity, the throttle can be set up under the 'Delivery Options' tab where the delivery time and hourly threshold are to be set.




2. SQL


Use the 'TOP' Function in SQL, where you have to specify the number of records to send out the communication to - each day. After the query run, the records will be overridden in a Data Extension - which has to be used in the Journey Builder.


Example -

Consider DataExtension1 with fields SubscriberKey & EmailAddress - where the audience is placed. Next, create a query to pull the chunk of records as per the throttle plan and place it in DataExtension2. In the Journey, configure the 'Entry Source' to use the DataExtension2.

SELECT TOP 10000 SubscriberKey, EmailAddress
FROM DataExtension1


3. Manual send


If you have to perform a one-time send, it can be done by navigating to Email Studio -> Content Tab -> Open the email and click on send. After selecting the audience, set the send throttle under the 'Configure Delivery' step.



 

If the throttle plan is to send out the messages using a different throttle every day, then it can be done using the following options:


1. SQL


Create an SQL query and use the 'TOP' function to pull the records as per the throttle plan each day. This is a manual process where the throttle needs to be changed each day and the automation can be scheduled to run once.


Example -

Consider the total number of email sends is 25k and we will split these over a period of two days by setting 10k and 15k.


Day 1:

SELECT TOP 10000 SubscriberKey, EmailAddress
FROM DataExtension1

Day 2:

SELECT TOP 15000 SubscriberKey, EmailAddress
FROM DataExtension1


2. SQL


The next option is to pull the records as per the different throttle each day by using 'Row number' in SQL, which can be completely automated.


Example -

Consider that the audience is stored in DataExtension1 and has the fields - SubscriberKey, EmailAddress, CreatedDate & Flag.

where 'Flag' is a boolean field with a default value so that all records use this value. We will use this field as part of the 'RowNumber' function to partition it and set the numerical value for all the records.


Create a new DataExtension (say DataExtension2) with two fields - SendDate and Throttle.


The Result of the query will be placed in DataExtension3, which will be the sendable DE.


Query:

SELECT 
SubscriberKey, 
EmailAddress
FROM
(
SELECT 
SubscriberKey, 
EmailAddress,
ROW_NUMBER() OVER (PARTITION BY Flag ORDER BY CreatedDate desc) as RowNum
FROM DataExtension1
) s
WHERE s.RowNum <= (SELECT Throttle FROM  DataExtension2 
WHERE CONVERT(nvarchar, SendDate, 23) = CONVERT(nvarchar, GETDATE(), 23))

NOTE: Make sure to create a historical data extension for capturing the records that you have already sent to and check the sendable audience against it each day (add an extra condition to the query). This is applicable to all the above SQL options.



3. SSJS

Another option to pull the records as per the throttle is using a 'Querydefinition' in an SSJS, which can be placed as a script activity in the automation and can be automated.


OPTION 1: Using SSJS




OPTION 2: Using AMPscript + SSJS



 

THINGS TO NOTE:


1. When you define the send throttle, the system starts processing at the time specified and continues sending until the send is complete or the end time is reached. If the end time is reached first, it will continue to send the emails the next day at the same start time and will do so - until all the emails are sent.

2. Make sure to set the delivery time as per the change in daylight savings.

3. Before every deployment, plan the throttle as per the audience size and spread it across a few days to maintain a better reputation when planning IP warming strategy or other use cases.

4. If the option is not enabled in your account, log a case with Salesforce support.



Hope you enjoyed it! Please feel free to contact me with any suggestions/feedback.

See you in the next one!



#sfmc #sfmcstack #marketingcloud #salesforcemarketingcloud #sql #automationstudio #emailstudio #journeybuilder #ssjs #sendthrottle