Deliverability can be a real diva in the email marketing world: sometimes the spotlight is on the glittering top-line metrics, while the real meltdown happens off-stage. One domain at a time.

Today, I’m unveiling the updated Deliverability Early Warning System (DEWS) v2.0 for Salesforce Marketing Cloud (SFMC). This solution shines a spotlight on underperforming recipient domains so you’re never blindsided by a sudden act of inbox sabotage.

Unlike the previous version, which relied on you checking a Data Extension, this version proactively notifies you via email when specific ISPs are choking on your campaigns.


Attention: The Real Danger Lurking in Domain-Level Deliverability

Picture this: you send out a campaign that looks perfect at first glance. Opens are decent, clicks are passable, and the bounce rate isn’t anything to write home about. Everything looks peachy, right?

But here’s the twist: sometimes a single domain is quietly dragging down your entire deliverability. Whether it’s an ISP like Hotmail or Gmail enforcing stricter filtering criteria, or a domain where recipients rarely open emails, these micro-problems can snowball into a full-blown crisis if left undetected.


Interest: Diving into DEWS’s 7-Step Automation Masterplan

1. Data Aggregation & ISP Normalization

We start by building a daily, domain-level performance database. We count sends, opens, and bounces from the last 7 days.

New in v2.0: We now use a Domain Mapping Data Extension. This ensures that gmail.com, googlemail.com, etc., are all grouped under a single “ISP” label (e.g., “Gmail”). This prevents diluted data.

SELECT
  sent.jobid,
  COALESCE(dm.isp, sent.domain)             AS ISP,
  COUNT(*)                                  AS sends,
  COUNT(o.subscriberid)                     AS opens,       
  COUNT(b.subscriberid)                     AS bounces,     
  MAX(sent.eventdate)                       AS lastSend,
  CAST(COUNT(o.subscriberid)  * 100.0 / COUNT(*) AS INT) AS openRate,
  CAST(COUNT(b.subscriberid)  * 100.0 / COUNT(*) AS INT) AS bounceRate
FROM _sent AS sent
LEFT JOIN [DEWS_Domain_Mapping] AS dm
  ON sent.domain = dm.domain

LEFT JOIN _open AS o
  ON o.jobid         = sent.jobid
 AND o.subscriberid  = sent.subscriberid
 AND o.isunique      = 'True'
 AND o.eventdate    > DATEADD(day, -7, GETDATE())  

LEFT JOIN _bounce AS b
  ON b.jobid         = sent.jobid
 AND b.subscriberid  = sent.subscriberid
 AND b.isunique      = 'True'
 AND b.eventdate    > DATEADD(day, -7, GETDATE())   

WHERE
  sent.eventdate > DATEADD(day, -7, GETDATE())     

GROUP BY
  sent.jobid,
  COALESCE(dm.isp, sent.domain)

HAVING
  COUNT(*) > 50

Why domain-level analysis? Because one slippery ISP can hide in the shadow of your overall stats – until it’s too late to fix without major damage control.


2. Calculating Average Performance

Next, we calculate the “average” open and bounce rates per job. This baseline acts as our yardstick for spotting anomalies.

SELECT
  s.jobid,
  s.sends,
  COALESCE(o.opens, 0)    AS opens,
  COALESCE(b.bounces, 0)  AS bounces,
  CAST(o.opens   * 100.0 / s.sends AS INT) AS openRate,
  CAST(b.bounces * 100.0 / s.sends AS INT) AS bounceRate,
  s.lastSend,
  'average'               AS ISP
FROM
  (
    SELECT
      jobid,
      COUNT(subscriberid) AS sends,
      MAX(eventdate)     AS lastSend
    FROM _sent
    WHERE eventdate >= DATEADD(day, -14, GETDATE())
    GROUP BY jobid
  ) AS s

  LEFT JOIN (
    SELECT jobid, COUNT(subscriberid) AS opens
    FROM _open
    WHERE isunique = 'True'
      AND eventdate >= DATEADD(day, -14, GETDATE())
    GROUP BY jobid
  ) AS o
    ON s.jobid = o.jobid

  LEFT JOIN (
    SELECT jobid, COUNT(subscriberid) AS bounces
    FROM _bounce
    WHERE isunique = 'True'
      AND eventdate >= DATEADD(day, -14, GETDATE())
    GROUP BY jobid
  ) AS b
    ON s.jobid = b.jobid

3. Enriching Your Data

We merge the performance records with SFMC’s _job data view to bring in the EmailName and EmailSubject. This context is crucial—you need to know which email caused the issue.

SELECT 
    dews.jobid, 
    dews.ISP, 
    _job.emailname, 
    _job.emailsubject 
FROM [DEWS_MBP_Stats] dews
JOIN _job ON _job.jobid = dews.jobid

4. Flagging Underperforming Domains

This query compares specific ISP performance against the campaign average. We flag an ISP if:

  • Bounce rate is more than double the average.
  • Open rate is less than 60% of the average.
SELECT
    d.ISP,
    d.jobid,
    d.sends,
    d.opens,
    d.bounces,
    d.openrate,
    d.bouncerate,
    d.clickrate,
    a.clickrate AS avgClickrate,
    a.openrate AS avgOpenrate,
    a.bouncerate AS avgBouncerate,
    d.lastsend,
    d.emailname,
    d.emailsubject
FROM [DEWS_MBP_Stats] d
INNER JOIN [DEWS_MBP_Stats] a
    ON d.jobid = a.jobid
   AND a.ISP = 'average'
WHERE d.ISP <> 'average'
  AND (
        d.openrate < (a.openrate * 0.6)
     OR (d.bouncerate > (a.bouncerate * 2) and (a.bouncerate > 0) and (d.bouncerate > 0))
      )

In plain English, if a domain’s open rate nosedives below 60% of average, or if its bounce rate skyrockets to more than double, we label it a trouble spot. Those flagged domains are saved in a special “alert” data extension: your signal to spring into action with ISP-specific remedies.


5. Prioritizing Recent Issues (New!)

Instead of just sending you a raw list of every glitch, we summarize the data to find persistent offenders. This query identifies how many times an ISP has been flagged recently.

SELECT 
    jobid, ISP, sends, opens, bounces, openrate, avgOpenrate, 
    bouncerate, avgBouncerate, clickrate, avgclickrate, clicks,
    lastSend, emailName, emailSubject,
    COUNT(*) OVER (PARTITION BY ISP) AS occurences
FROM [DEWS_Alerts_Staging]
WHERE sends > 50
AND lastsend > dateadd(d,-7,getdate())

6. The Safety Valve (Verification Activity)

We don’t want to spam your inbox with empty alerts. A Verification Activity checks the final Data Extension. If the count of problematic rows is 0, the automation stops here. You only hear from DEWS when there is actual bad news.


7. The Alert (Notification Email)

Finally, if issues are found, the system deploys an email to a predefined list of recipients. The email uses AMPscript to generate a dynamic table of the specific ISPs causing trouble and the campaigns involved.

The AMPscript Logic:

%%[
/* Look up problematic rows */
SET @deliverabilityIssues = LookupOrderedRows("DEWS_recent_issues", 0, "occurences desc", "problematic", "true")
set @rowCount = rowcount(@deliverabilityIssues)
set @mostProblematicDomain = Field(row(@deliverabilityIssues, 1),"ISP")
]%%

Hi %%=AttributeValue("name")=%%, we have some deliverability issues on below mailbox providers:<br><br>

%%[ 
if @rowCount > 0 then
    set @domainsSeen = ""
    for @j = 1 to @rowCount do
        set @row = row(@deliverabilityIssues, @j)
        set @domain = field(@row,"ISP")
        set @occurences = field(@row,"occurences")
        
        /* Deduplicate visuals */
        IF IndexOf(@domainsSeen, @domain) == 0 THEN
            SET @domainsSeen = Concat(@domainsSeen,"|",@domain)
]%%
   <b>MBP: %%=v(@domain)=%%</b> with %%=v(@occurences)=%% occurences<br>
%%[
        ENDIF
    next @j 
endif 
]%%

Desire: Proactive Defense for Your Sender Score

With DEWS v2.0, you move from “Post-Mortem” analysis to “Early Warning.”

  • Automated Monitoring: No more logging in to check query results manually.
  • Contextual Alerts: The email tells you exactly which ISP is mad at which Campaign.
  • Smart Filtering: The 7-day lookback and occurrence counting ensure you focus on trends, not one-off blips.

Action: Download the Solution

Ready to upgrade? The SFMC Package Manager makes setup a snap.

  1. Download the updated package.
  2. Import via Package Manager.
  3. Populate the domainMapping Data Extension: This is the secret sauce. To ensure that gmail.com and googlemail.com are treated as the same entity (Google), you need a robust list of domains mapped to their providers.
  4. I highly recommend using Al Iverson’s “MAGY Domains List” (Microsoft, Apple, Google, Yahoo) as your source. It is the industry standard for this type of data.
  5. Source: MAGY Domains List – 2025 Update
  6. Instructions: Download the list, format it to match the domainMapping DE (Fields: domain, isp), and import it into Marketing Cloud.
  7. Populate Recipients: Add the email addresses of the team members who should receive alerts to the DEWS - Notifications Data Extension.
  8. Schedule: Set the Automation to run daily (e.g., 6 AM).

Once you have identified the problematic ISP, you should immediately get into more details on their perception of you as a sender. This depends highly on which ISP we are talking, but here are some suggestions:
GooglePostmaster Tools and Gmail Bulk Sender Escalation Form. You need to ensure full compliance, before reaching out to them, otherwise you will be denied any remediation. They have recently launched a really nice compliance dashboard here.
MicrosoftSNDS and Bulk Sender Support Request Form. Microsoft are notorious for claiming it is not their fault, and they can’t see anything wrong on their side. If you are seeing deliverability issues with only them, and you are fully compliant with SPF, DMARC and whatnot – then keep pushing them. 4-5 escalations down the line, they will finally adjust their filtering and allow your emails to reach the inboxes.


Pro tip: Swing by other articles on deliverability here on Digital Marketing on Cloud for more how-tos and insights on wielding SFMC like a pro. Don’t let hidden deliverability woes overshadow your email marketing masterpiece – take charge, arm yourself with DEWS, and give your campaigns the VIP treatment they deserve. Even more curious on deliverability? Go through the vast goldmine of articles by Al Iverson (few people know more than him) on the topic, here on SpamResource.

So, there you have it: a cunning system that digs beneath the glossy facade of overall stats to catch troublemaking ISPs one domain at a time. With DEWS, you’ll never again be blindsided by a sneaky underperformer. Because in email marketing, as in showbiz, the better prepared you are backstage, the grander your performance on center stage!