A B2C retail client we audited was sending weekly newsletters to 200k subscribers. Over three months the open rate fell from 22% to 14%. Click rate followed. Content hadn't changed; list quality had.
The problem was visible the moment we looked at the data: the list was never cleaned. Subscribers from two years ago who had never opened an email were still in the sendable DE. New imports added more people without deduplicating or removing hard bounces. The list just kept growing, and the engaged percentage kept shrinking.
Why it hurts deliverability: ISPs (Gmail, Outlook, Yahoo) monitor per-sender engagement rates. A sender whose emails nobody opens gets filtered into Promotions or Spam, and reputation repair takes weeks.
Here's the four-step recovery process we run.
Step 1: Identify unengaged subscribers
Use SQL Query Activity against _Open and _Click data views:
Writes the unengaged-for-6-months subset into Unengaged_6M_DE. That's the cohort to work on.
Step 2: Run a re-engagement campaign before deleting
Don't drop subscribers immediately. Give them one or two "we miss you" emails. Something like:
- Clear subject: "Still want to hear from us?"
- Single CTA: click here to keep receiving
- Easy unsubscribe offered honestly
After two weeks:
- Clicked -> keep in the main list, mark as re-engaged
- Did not respond -> move to suppression
Re-engagement typically recovers 5-15% of the dormant segment. Everyone else is better off suppressed than sent to.
Step 3: Clean hard bounces after every send
SFMC marks hard-bounced Subscriber Keys as Bounced in All Subscribers - they won't be sent to again automatically. But they still clutter the DE for audience-count reporting.
Query _Bounce:
Write the result to a suppression DE or use it to clean the main DE on a recurring basis.
Hard Bounce subtypes ("Address is non-existent at the domain") are non-recoverable. No amount of retries helps. Remove immediately.
Step 4: Automate the whole loop
Doing this manually gets skipped the first busy week. Wire it as an Automation:
Set Run Completion notifications so missed runs don't stay silent.
Three failure modes we keep seeing
Spam complaint rate above the safe threshold
Safe is under 0.1% per send. Above that triggers ISP-level filtering - sometimes domain-wide blocks. Purchased lists, aggressive frequency, and bad "from" names are the usual causes. Never buy a list; segment the one you have.
No sender authentication (SPF, DKIM)
Without SPF and DKIM, ISPs can't verify that SFMC is authorized to send for the client's domain. Inbox placement drops. For anything above about 250k sends/month, configure SFMC's Sender Authentication Package (SAP) - private domain + DKIM keys + dedicated IP if volume is large enough.
Misreading bounce types
- Hard Bounce - invalid address. Remove from list.
- Soft Bounce - temporary issue (mailbox full, server down). SFMC retries. Only mark as problematic after repeated bounces.
- Blocked Bounce - ISP rejected due to reputation issues. Treat as urgent; investigate sending practice.
Don't report a lump-sum "bounce rate" without breaking it down by type. The stories behind each are different.
Takeaway
Open rates don't drop because content went stale. They drop because the list accumulated non-engagers who drag down the per-send engagement signal ISPs use to rank the sender. Identify the dormant cohort, run a re-engagement, suppress the non-responders, and automate the whole loop so it happens without anyone remembering.
Auditing an SFMC engagement with falling open rates? Our Salesforce team runs list hygiene remediation and deliverability audits on production Marketing Cloud accounts. Get in touch ->
See our full platform services for the stack we cover.