Bounces & Suppression¶
When an email can't be delivered or a subscriber reports it as spam, MailJawn takes automatic action to protect your sender reputation. This page explains what happens behind the scenes and how to manage it.
Hard Bounces¶
A hard bounce means the email permanently failed to deliver — the address doesn't exist, the domain is invalid, or the server permanently rejected the message.
When MailJawn receives a hard bounce notification from Amazon SES:
- The subscriber is marked as bounced across all projects in your organization
- The email address is added to your organization's suppression list
- Any pending automation enrollments for that subscriber are cancelled
- The bounce is recorded with full diagnostic details
Note
Soft bounces (temporary failures like a full mailbox) are handled automatically by Amazon SES, which retries delivery. MailJawn only acts on permanent (hard) bounces.
Complaints¶
A complaint means the subscriber clicked "Report Spam" or "Junk" in their email client. This is a serious signal — it tells inbox providers that your email is unwanted.
When MailJawn receives a complaint notification:
- The subscriber is marked as complained across all projects in your organization
- The email address is added to your organization's suppression list
- Any pending automation enrollments are cancelled
- The complaint is recorded with the feedback type (abuse, fraud, etc.)
Warning
Complained subscribers cannot be reactivated. This is intentional — re-sending to someone who reported you as spam risks your entire sending reputation. There is no override.
Suppression List¶
The suppression list is an organization-wide blocklist of email addresses that should never receive email. It's checked before every send — even if a subscriber's status hasn't been updated yet, the suppression list catches it.
Addresses are added to the suppression list for these reasons:
| Reason | Source | Can Be Removed? |
|---|---|---|
| Hard bounce | Automatic (SES webhook) | Yes — via reactivation |
| Complaint | Automatic (SES webhook) | No — permanent |
| Manual | Added by you | Yes |
The suppression list operates at the organization level, not the project level. A suppressed address is blocked across all your projects.
Bounce Event History¶
Every bounce and complaint is recorded with detailed information from Amazon SES:
| Field | What It Shows |
|---|---|
| Event Type | Hard bounce, complaint, or reactivation |
| Bounce Type | SES classification: Permanent, Transient, or Undetermined |
| Bounce Subtype | Specific reason: General, NoEmail, Suppressed, etc. |
| Diagnostic Code | The raw SMTP error message from the receiving server |
| Complaint Type | Feedback category: abuse, auth-failure, fraud, not-spam, other, virus |
| Campaign | Which email triggered the bounce or complaint |
| Raw Payload | Full SES notification for debugging |
This audit trail helps you understand why addresses are bouncing. Common patterns:
- NoEmail — The mailbox doesn't exist. Likely a typo or abandoned address.
- Suppressed — SES has this address on its own suppression list from a previous bounce.
- General — The receiving server rejected the message without a specific reason.
Reactivating Bounced Subscribers¶
If you know a bounced address has been fixed (e.g., the subscriber corrected a typo and re-signed up), you can reactivate them:
- Find the subscriber in your dashboard
- Click Reactivate
- Add a note explaining why (for the audit trail)
Reactivation:
- Sets the subscriber back to active across all projects in the organization
- Removes the address from the suppression list
- Creates a reactivation event in the bounce history (with your name and notes)
Tip
Only reactivate when you have a good reason — like the subscriber contacted you directly. Reactivating stale bounced addresses and sending to them again will hurt your deliverability.
Deliverability Health Thresholds¶
MailJawn monitors your rates over a rolling 30-day window and assigns a health status.
Bounce Rate¶
| Status | Rate | Action |
|---|---|---|
| Healthy | Below 2% | No concerns |
| Warning | 2% – 5% | Review your import sources and list hygiene |
| Review | 5% – 10% | Clean your list — remove subscribers who haven't engaged recently |
| Paused | Above 10% | Sending may be restricted to protect your reputation |
Complaint Rate¶
| Status | Rate | Action |
|---|---|---|
| Healthy | Below 0.05% | No concerns |
| Warning | 0.05% – 0.1% | Monitor closely — ensure you're only emailing opted-in subscribers |
| Review | 0.1% – 0.5% | Review your opt-in process and sending frequency |
| Paused | Above 0.5% | Sending may be restricted |
Your overall health is determined by whichever rate is worse. If your bounce rate is "Healthy" but your complaint rate is "Warning," your overall status is "Warning."
Reducing Bounces¶
- Validate on import — When importing a CSV, check for obvious typos (
gmial.com,yhoo.com) - Use the SDK — Subscribers added through your app's SDK have verified, active email addresses
- Clean regularly — Remove subscribers who haven't engaged in 6+ months
- Watch import sources — If a batch import produces a spike in bounces, investigate that data source
Reducing Complaints¶
- Only email opted-in subscribers — Never import a purchased list or email people who didn't explicitly subscribe
- Set expectations — Tell subscribers what they'll receive and how often, at sign-up time
- Make unsubscribing easy — A visible unsubscribe link reduces complaints. Subscribers who can't find it use "Report Spam" instead
- Send relevant content — Irrelevant emails are the top driver of complaints. Use tags and segments to match content to audience
Bounces vs. Unsubscribes¶
These are different mechanisms:
| Bounce | Unsubscribe | |
|---|---|---|
| What happened | Email could not be delivered | Subscriber chose to opt out |
| Scope | Organization-wide suppression | Project-level preference |
| Reversible? | Yes (reactivation) | Yes (subscriber can re-subscribe) |
| Your concern | List hygiene | Content relevance |
Both reduce your active subscriber count, but for different reasons. A few unsubscribes per campaign are normal and healthy — it means your unsubscribe process works. A spike in bounces means your list has stale data.