Microsoft's Smart Network Data Services (SNDS) is to Outlook what Postmaster Tools is to Gmail — except the UX is rougher, the data is delivered as raw CSV plus a clunky web view, and many AcelleMail operators don't realize it exists. The data quality is excellent; SNDS shows complaint rate, spam-trap hits, and per-IP filter status with daily granularity, which is more actionable than Gmail's blended "Spam Rate" graph.
If your audience includes Outlook.com / Hotmail / Live.com / MSN.com / Office 365 consumer accounts (collectively ~15-25 % of most B2C lists), SNDS is mandatory. This walkthrough covers registration, every field, and the AcelleMail-side action when something goes red.
Step 1 — Register IPs#
Open sendersupport.olc.protection.outlook.com/snds, sign in with a Microsoft account (any free account works), and click Request Access. The form asks for:
- The IP range you want monitored — must be IPs you own or have rights to monitor. Single IPs are fine; CIDR /24 ranges are typical for ESP-pool senders.
- A contact email — Microsoft uses this for the periodic "your IP was listed/delisted" notifications.
- A business reason — write something accurate ("we operate AcelleMail at IP X.X.X.X for outbound transactional + marketing email").
Approval is typically 24-72 hours. Microsoft does check IP ownership; if you don't have a reverse-DNS PTR record matching the IP, expect rejection (set up PTR with your hosting provider first — most VPS hosts do it on request).
Step 2 — The dashboard#
After approval, the SNDS dashboard at sendersupport.olc.protection.outlook.com/snds/data.aspx shows a row per IP per day with:
| Column |
Meaning |
Action threshold |
| Filter Result |
GREEN / YELLOW / RED |
YELLOW = pause growth; RED = stop sending |
| Activity Period Start |
UTC start of the 24-hour data window |
— |
| Sample HELO |
What your MTA announces in HELO/EHLO |
Should match reverse-DNS |
| Sample From |
Most-common From: line we saw |
Spot-check for spoof attempts |
| RCPT Commands |
Total recipient envelope count |
Sanity-check vs. AcelleMail's send count |
| Data Commands |
Successful data transfers |
RCPT - DATA = bounces/rejections from MS |
| Complaint Rate |
Reports / delivered |
< 0.40 % healthy; 0.40-0.60 % yellow; > 0.60 % red |
| Trap Hits |
Spam-trap hits |
Any non-zero is concerning; > 5 = audit list source |
The "Filter Result" column is the headline. The other columns are the diagnostic details when filter goes yellow/red.
Reading filter colors#
GREEN — your IP is in good standing. Microsoft's filtering classifies your mail by per-message content; reputation isn't a barrier. Action: maintain.
YELLOW — your IP is rate-limited. Outlook accepts the SMTP connection but defers many messages with 421 RP-002 codes. Action:
- Pause new volume to Microsoft IPs immediately (segment by domain in AcelleMail and exclude
outlook.com, hotmail.com, live.com, msn.com).
- Investigate complaint rate or trap hits — whichever spiked is the cause.
- Run engagement-only campaigns (recipients with opens in last 30 days) to your active Microsoft segment for 5-7 days.
- Watch SNDS daily — recovery to GREEN typically takes 7-14 days.
RED — your IP is blocked at the edge. Connections are accepted then everything 5xx rejected. Action: stop sending entirely from this IP. Continuing to push will extend the block. Plan a 14-21 day cool-down + recovery via warmup-style ramp.
JMRP — the FBL companion#
The Junk Email Reporting Program is the per-recipient-complaint feedback loop that Outlook delivers to a mailbox you specify. Always configure JMRP alongside SNDS — see feedback-loops-fbl-setup for the AcelleMail Feedback Loop Handler config.
Without JMRP, the SNDS Complaint Rate is your only signal — and it's aggregated daily, which means a 6 % complaint rate on one campaign at 02:00 UTC won't show on the dashboard until 24+ hours later. JMRP delivers per-message ARF in near-real-time, which lets you respond same-day.
Common patterns#
| SNDS signal |
AcelleMail diagnostic |
| GREEN → YELLOW with Complaint Rate spike |
Specific campaign caused complaint storm; check Bounce Log for FBL feedback_type=abuse rows in same window |
| GREEN → YELLOW with Trap Hits 0→5+ |
List quality problem; audit recent imports for purchased/scraped data |
| YELLOW persistent (no recovery) |
Continued sending into yellow extends it. Pause + send only to engaged. |
| Sample HELO different from PTR |
Misconfigured MTA; a soft signal but worth fixing for consistency |
| RCPT > DATA delta growing |
Receiver-side rejection is increasing; correlate with Postmaster IP rep |
Multi-IP correlation#
If you have multiple sending IPs, SNDS data per-IP per-day reveals which IP is receiving Microsoft's complaints. AcelleMail's per-server stats can be cross-referenced:
SELECT
ss.name as server,
ss.smtp_host, -- the sending IP
COUNT(*) as today_sent,
SUM(CASE WHEN bl.bounce_type = 'unknown' THEN 1 ELSE 0 END) as complaints
FROM sending_servers ss
JOIN tracking_logs tl ON tl.sending_server_id = ss.id
LEFT JOIN bounce_logs bl ON bl.tracking_log_id = tl.id
WHERE tl.created_at > CURRENT_DATE
GROUP BY ss.id
ORDER BY complaints DESC;
The IP at the top of this list is the one you should be checking against SNDS. If SNDS shows YELLOW for that IP, the AcelleMail-internal complaints corroborate the Microsoft signal.
Common AcelleMail mitigations#
When SNDS goes YELLOW:
Admin → Sending Servers → <yellow IP> → Edit
Sending quota: <halve from current>
Throttle (per second): <halve from current>
Then in any list-server or campaign-server assignment:
Customers → <customer> → Lists → <list> → Sending Server Assignment
Outlook/Hotmail recipients → "SES-Cold" (different IP)
All other recipients → "SES-Hot" (the previously-yellow IP, still serving)
This pattern — segment-by-recipient-domain → assigned-to-different-server — keeps the yellow IP serving its non-Outlook traffic while the Outlook traffic recovers on a different IP.
Related reading#
FAQ#
Does SNDS data update in real time?#
No, daily. The "Activity Period Start" column is UTC midnight; data for "today" appears 4-12 hours after midnight UTC.
What if my IP isn't in SNDS?#
Either it doesn't send to Microsoft (no Microsoft recipients on your list), or it's not registered. Cross-check by sending a test to a @hotmail.com address you control; if it doesn't arrive, your IP may already be at RED before SNDS shows it.
Can I see Office 365 corporate (paid) reputation?#
No. SNDS covers consumer Outlook only. Corporate Office 365 has separate filtering (SmartScreen + Defender for Office 365) with no public dashboard.
Why does my IP sometimes drop off the SNDS list?#
Microsoft only shows IPs with active sending. If you don't send to Microsoft for 7+ days, the IP drops from the daily report. Resume sending and it reappears within a day.
CSV export workflow for long-term tracking#
SNDS retains 33 days of data on the dashboard but provides no API. The pattern that works:
- Set a daily cron that downloads the SNDS CSV for your IPs (manual today; some operators script it via Playwright since SNDS hates programmatic access).
- Store in a tracked location —
ops/snds-history/YYYY/MM/snds-YYYY-MM-DD.csv.
- Periodically import to a small sqlite or duckdb for trend analysis. The most-actionable trend is "Complaint Rate over a 90-day window" — Microsoft's monthly fluctuation is mostly noise; quarterly trend signals real reputation drift.
- Alert on YELLOW or RED appearance — when any IP's daily row turns non-GREEN, post to a Slack channel. The CSV import script can do this with ~10 lines of awk.
Microsoft mitigation request — when to file#
If your IP goes RED and you've identified + fixed the cause, you can file a Microsoft mitigation request asking for the block to be lifted. Eligibility:
- The IP must currently be RED in SNDS.
- You must describe the corrective actions taken.
- Microsoft typically requires 7 days of clean sending data before reviewing.
Approval rate is moderate (50-70 %). When granted, IP goes back to YELLOW (not GREEN) — earn GREEN through 14-21 days of clean sending.
Don't file mitigation while the cause is unclear or the issue is still active. A premature filing tells Microsoft you don't understand your own program; that hurts the next time you legitimately need help.
Cross-correlation with AcelleMail bounce log#
When SNDS shows YELLOW with elevated Complaint Rate, find the affected campaigns:
-- Microsoft-only complaint pattern, last 14 days
SELECT
c.id, c.name, c.subject, c.created_at,
COUNT(tl.id) as ms_sent,
SUM(CASE WHEN bl.bounce_type = 'unknown' THEN 1 ELSE 0 END) as ms_complaints
FROM campaigns c
JOIN tracking_logs tl ON tl.campaign_id = c.id
JOIN subscribers s ON s.id = tl.subscriber_id
LEFT JOIN bounce_logs bl ON bl.tracking_log_id = tl.id
WHERE c.created_at > NOW() - INTERVAL 14 DAY
AND (s.email LIKE '%@outlook.com' OR s.email LIKE '%@hotmail.com'
OR s.email LIKE '%@live.com' OR s.email LIKE '%@msn.com')
GROUP BY c.id
HAVING ms_complaints * 1.0 / ms_sent > 0.005
ORDER BY ms_complaints DESC;
Campaigns above this threshold likely caused the SNDS yellow signal. Audit them for the corrective actions.