We are starting our IP warm up process and have never done this before. Since we are transitioning from Pardot to Marketing Cloud, we are building lists of our most engaged subscribers in Pardot, adding them to a Sales Cloud campaign and then synchronizing that to Marketing Cloud.

My question is related to the next steps once that list is in Marketing Cloud. Should we create separate data extensions grouped by day and then by email domains (e.g. @gmail, @yahoo, etc).

If so, is there a sql that we can use to query a data extension and create email domain segments in other data extensions ?

2 Answers 2


You're pretty much on the money with the next steps.

Identify the total number of addresses. Then, identify the top ~10 domain groups* in that list. The rest of addresses will in most cases be distributed well enough to go into one pile that you can just select from randomly.

So you'll have 11 numbers. Those are addresses that you need to reach on each provider at the end of warmup, one target number for each domain group.

Then, for each domain group, determine the number of addresses you want to start sending with on day one. The starting number of addresses is different for each provider. Salesforce has some indications on US numbers on their help servers, but they differ vastly. Google e.g. is 20k I believe, yahoo around 10k, but for other countries, if unsure, start slowly. (1500 is a baseline I often use, but I've gone lower to like 300).

Make a sendout plan that increases volume gradually for each domain from the respective baseline number on day one to the full amount, keep increasing until all domain groups max out.

You can find plans online with various levels of "aggressiveness" in terms of increasing volume. You are on the safe side with doubling volume weekly for each domain group. Faster can be done, but stay safe. 4-6 weeks is a good timeframe to try and reach. In case of doubt, always go slower rather than faster.

With your plan set, create a data extension folder for each sendout day.

In each "day" folder, create 11 DEs, one for each domain group in your list (top 10 + rest). For each DE, create a query that includes the number of addresses you want to target that day. As you already know, start with engaged subscribers and only add less engaged ones when you've exhausted the engaged pool.


*group domains by the company that manages them if you can. e.g.

all yahoos + ymail;

googlemail + gmail;

outlook + hotmail + live + msn + skype etc.


You can get to the domain distribution by a SQL query on email using LIKE and the @ sign. TOP will help with getting the numbers you need. Here are the base schematics for the daily queries.

FROM yourBaseList 
WHERE email LIKE '%@yahoo.%' OR '%@ymail.%'

This will give you 10k for yahoo for your first day.

Make sure you then control the addresses for the followup selections (when increasing volume).

E.g. at the next increase, see to it that you keep the addresses from first sendout, and add more to the sendout.

UNION is your friend here.

/* get all addresses from yahoo selected for day one ...*/
SELECT contactId 
From DayOneDE_yahoo

/* ...plus 10000 new yahoo ones from your base list...  */
FROM yourBaseList ybl
WHERE ybl.email LIKE '%@yahoo.%' OR '%@ymail.%'

/* and make sure those are NOT in day one selection already 
by using a "LEFT JOIN a&b WHERE b.key is NULL" pattern. */
DayOneDE_yahoo d
on d.contactId = ybl.contactId 

Sendout using normal send flow and just adding the 11 DEs. Monitor using "email performance for all domains" to observe the different behaviors.


You're on the right lines. Salesforce has a decent help page on this with some recommended volumes for each domain: https://help.salesforce.com/articleView?id=sf.mc_es_ip_address_warming.htm&type=5

It's important to treat domains on a case-by-case basis as some (like Gmail) you'll need to start slower with.

The good news is that there are some good tools out of the box in Marketing Cloud that will allow you to segment your audience appropriately.

I would put all your IP warm-up contacts into a single data extension, then filter this by domain using the drag-and-drop filter tool (if you don't have a column for domain, you can just query the email address field). You should then have data extensions for each domain. Then, you can use the split function (https://help.salesforce.com/articleView?id=sf.mc_es_create_random_de.htm&type=5) to split a data extension into up to 12 separate data extensions, which you can manually select the volume for. Name these by day - for example IP_WARM_UP_GMAIL_DAY_1 (which you would set to have 5k records if following the Salesforce Help page example and you are ramping up to a similar volume).

Repeat the above process for each domain so you end up with the right volume of contacts for each day across the various domains.

Side note: if your audience has different levels of engagement and you've included this in your IP warm-up master data extension, then of course it's best to send to the most engaged contacts first, so you can add this to your filtering.

When it comes to actually sending your email out (to all your 'day 1' data extensions, for example), use Marketing Cloud's throttling tool. This will limit the number of emails sent per hour. When you're IP warming, it's best practice to send over a number of hours rather than all at once.

One more thing - monitor everything as much as you can. If you're not getting the opens and clicks you need, you may need to change approach from a content point of view (if you have a previously successful, non-time-sensitive campaign, it's a good idea to use this or a variation so you have some idea of how it will perform, as well as allowing you to spread sends over multiple days and groups potentially). In Tracking > Sends, you will be able to see performance for each data extension you're sending to so you will know quickly if there's any major issue with a particular domain.

Good luck!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .