Situation Definition
Dynamics 365 Customer Insights Journeys (CIJ) provides customers the ability to communicate with individuals at a large scale. It does this in an efficient manner and can deliver high volume of emails in a small timeframe, sending communications as fast as possible. However, certain scenarios require the ability to communicate with a large audience but in a controlled manner, spread over a predefined period of time. For example, if an email communication is sent with the call to action being to reach a call center, organizations may want to ensure the call center does not receive more phone calls that it can handle thus would like to spread the outbound communications.
For the purpose of this article, let's consider Contoso is launching a week-long campaign to reach out an identified subset of their customers that have expressed interest in the new product. This expression of interest has been recorded in a lead and associated with a contact.

To throttle the sending of communications, this article describes three possible approaches. All achieve the ultimate goal of controlling the rate at which emails are sent but are better suited for different scenarios.
- Use Automated throttling – this is the recommended approach when you know ahead of time how many emails per specified duration are needed based on the organization’s capacity constraints
- Data driven segment additions – this approach is recommended when finer control is needed on how many or which contacts should be contacted. Easier to throttle up or down.
- In-journey branching of batches – this approach is recommended in scenarios in which it is important to control the date and time of when each batch is to be sent
Approach 1 – Use automated throttling
Customer Insights Journeys includes a feature that will automate the throttling of communications based on a given rate-limit. The feature also allows for the specification of the days of the week in which to send, which is useful if the window of time in which to send the emails includes non-working days.
For more details, see product documentation (Preview: Control how fast customers can enter a journey - Dynamics 365 Customer Insights | Microsoft Learn).
To put this in practice, we create a segment of contacts that have a lead that expressed an interest in the Airpot product. We then create a one-time journey.
And in the journey, we specify the desired rate
And the days of the week we want communications on
Approach 1 Pros:
- Leverage out of the box capabilities and requires minimal configuration
- Fully automated execution with single journey and single segment
- Simple segment creation that does not need to account for batching or throttling needs
Approach 1 Cons:
- Not able to adjust communication rate during journey execution
Approach 2 – Data driven segment additions
In the second approach, we will leverage the extensibility of Dataverse and the fact that CIJ Segments will be frequently evaluating to identify new members in Dynamics that belong to a given segment.
In the lead, we add two columns to assist in the control of the email send:
- Ready to Contact – This is a Yes/No field added with the default value of No
- Batch Number – This is an integer field which will indicate in which batch will the lead be sent for a given campaign.
We then adjust our segment of contacts to have an extra condition that leads must be marked as “Ready to Contact”.

Since the default value of Ready to Contact is No, the segment will start empty.
We can then use the “Use this to create a journey button” and start the design of our campaign. We will use the frequency option of “a one-time journey where newly added audience members can start at any time” and then specify a start and end date. This duration should allow for the time that all the leads will be moving to a positive Ready to Contact.
In the journey we can then create the necessary communication path. For simplicity, the journey in this example is a simple email being sent to the contacts.
Once the journey is set to live, we can start changing the value of Ready to Contact from No to Yes. As we do and the segment re-evaluates, the emails will be sent. This way we can control how many and when those emails are sent.
Approach 2 Pros:
- Don’t need to define segments ahead of time and can randomize the inclusion
- Less CIJ configuration (single segment and single journey)
Approach 2 Cons:
- Requires data worker to update the information at the necessary times
-
If update done manually in Dynamics, can be time consuming
Approach 3 – In-journey branching of batches
One additional approach to achieve the throttling is add logic into the journey. In this scenario, the starting point is a segment with all the contacts that have expressed interest in the Airpot product.
Note that we are adding no additional criteria in terms of using the “Ready to Contact” or “Batch Number” fields.
Next, we will create different segments for the various batches that each contact belongs to.
In this case, note that we are not adding the criteria that identifies the interest in Airpot as this will no longer be required.
In this example, we are using a batch number field to identify the groups of contacts to reach out to. Depending on business needs, other fields or criteria could be used.
We then create the journey, starting from our global segment with all the Airpot interests. In this case, we can select the frequency option of “A one-time journey with static audience” and the start date of the campaign.
Within the journey, rather than a simple email send, we will split the journey into each batch using the “Branch based on a specific value” tile in the journey editor. Selecting the newly added tile, we can specify the criteria. Since we are basing the split based on the previously created segments, we use the option “Make condition on segment membership” and choose a different segment, creating as many branches as batches.
Then, we introduce a delay for all branches except the one corresponding to batch 1. Through this delay the journey will pace the delivery of the emails. To do this, in each branch we add a tile “Hold an action for a specific time”. How long a given batch should be held will depend on the need. In our example, we are sending 2 batches, 1 day apart, so the configuration of the delay would look like this:
Then, in each branch we add a tile for the email send. The fully configured journey would look like this:
Approach 3 Pros
- Totally automated execution once set-up​​​​​​​
- Has finer control of when each batch executes and which contacts belong in which batch
Approach 3 Cons
- Requires multiple segments per campaign OR the creation of multiple criteria in the branching tile
-
More complex journey
- Less control should the initial throttling rhythm needed to be adjusted
Anti Pattern – Convert to trigger based journey
One tempting option is to use triggers to reflect the update of when a batch is ready to send. An external system or bulk operation updates records in Dataverse are these updates are used to fire a trigger. This trigger is then used in the journey the send the emails. This allows the batching logic to be externalized to the segment or journey configuration which could be preferred depending on the source of the updates to trigger the next batch of emails.