Concept
Bounces and complaints
How Emailit handles hard and soft bounces, retries temporary failures, processes late bounces and spam complaints, and suppresses addresses automatically.
When a message can’t be delivered, or a recipient marks it as spam, Emailit records what happened, updates the email’s status and, in most cases, stops you from mailing that address again. This page explains each kind of failure, the retry schedule and the automatic suppression rules.
Hard and soft bounces
Emailit sorts each failed delivery attempt by the receiving server’s reply.
| Type | Typical replies | What Emailit does | Status |
|---|---|---|---|
| Hard bounce (permanent) | 550 mailbox unavailable, 551 user not local, 553 mailbox name not allowed, 554 transaction failed |
Stops trying. | bounced |
| Soft bounce (temporary) | 421 service not available, 450 mailbox busy, 451 local error, 452 insufficient storage, timeouts, connection errors |
Retries later. | attempted |
Some temporary 4xx replies describe a mailbox that won’t accept mail, such as “mailbox full”, “over quota” or “account disabled”. Emailit recognizes common wording like this and treats it as a hard bounce. Unknown errors are treated as temporary and retried.
For what each code means, see SMTP reply codes and Bounce categories. The full reply for each attempt is on the email’s Deliveries tab in Email APIEmails.
Retries
After a temporary failure, Emailit retries with a growing delay. A message gets up to 7 attempts over about 21 hours:
| After attempt | Next try in |
|---|---|
| 1 | 10 minutes |
| 2 | 20 minutes |
| 3 | 40 minutes |
| 4 | 80 minutes |
| 5 | 160 minutes |
| 6 | 320 minutes |
| 7 | 640 minutes, then Emailit stops and bounces the message |
While it’s retrying, the email’s status is attempted and each failed try fires an email.attempted event with the receiver’s reply. If the last attempt also fails, the email becomes bounced with the note “Maximum number of delivery attempts (7) has been reached” and the address is suppressed.
Back-off when receivers push back
If a provider rate-limits one of Emailit’s sending IPs (a 451 reply about too many messages), Emailit pauses delivery from that IP to that provider for 5 minutes. If the provider blocks the IP (550 5.7.1), it pauses for an hour. Affected messages stay attempted and go out when the pause ends, so you don’t need to do anything.
Late bounces
Some servers accept a message and only report later that they couldn’t deliver it. They send a delivery status notification (DSN) to the message’s return path, emailit.<domain>, which is why that MX record is required. Emailit matches the report to the original message, changes its status to bounced, fires email.bounced and suppresses the address.
Complaints
When a recipient selects Report spam, many mailbox providers send a report back to the sender through a feedback loop. Emailit receives these reports in the standard ARF format and in Outlook’s JMRP format, matches them to the original message, then:
- sets the email’s status to
complained, - fires
email.complained, - adds the address to your suppression list with type
complaint.
Gmail doesn’t send individual complaint reports to senders. To see your Gmail spam rate, use Google Postmaster Tools. Keep your complaint rate under 0.1%, and never let it reach 0.3%.
Statuses and events
| Status | Event | Meaning |
|---|---|---|
attempted |
email.attempted |
A temporary failure. Emailit will retry. |
bounced |
email.bounced |
A permanent failure, a late bounce, or all retries used. |
complained |
email.complained |
The recipient reported the message as spam. |
suppressed |
email.suppressed |
Not sent, because the address is on your suppression list. |
bounced, complained and suppressed are final: a later event doesn’t change them. See Email statuses for the full list.
Automatic suppression
Emailit adds an address to your suppression list in these cases:
| Trigger | Suppression type | Reason |
|---|---|---|
| A late bounce report (DSN) arrives | recipient |
bounce |
| All 7 delivery attempts fail | recipient |
too many soft fails |
| A second hard bounce to the same address within 24 hours | recipient |
too many bounces |
| A spam complaint arrives | complaint |
complaint |
A single immediate hard bounce doesn’t suppress the address on its own. A second one within 24 hours does.
What each type blocks:
recipientblocks every send to the address: API, SMTP, campaigns and automations. The email gets the statussuppressedinstead of being sent.complaintstops campaigns from sending to the address. Transactional email through the API and SMTP still goes out, so receipts and password resets keep working.
When a message to an address is delivered successfully, Emailit removes that address’s recipient suppression. See Suppressions for how suppressions work and how to remove one.
Choose what gets suppressed
On Pro and Business, workspace admins can change automatic suppression in WorkspaceSettings on the Suppressions tab:
| Setting | Options |
|---|---|
| Enable automatic suppression | On (default) or off. |
| Suppress on | Bounces and Complaints (default), Bounces only or Complaints only. |
On other plans, automatic suppression is always on for bounces and complaints. The controls are visible but locked.
| Pay as you go | Pro | Business | Custom | |
|---|---|---|---|---|
| Configurable automatic suppression | — | Included | Included | — |
Bounce-rate thresholds
Bounces feed into your sending health score. Emailit measures the share of unique recipients that bounced over the last 7, 30 and 90 days:
| Bounce rate | Effect |
|---|---|
| Under 2% | Healthy. Pro and Business can get automatic limit raises. |
| 2% to 4% | Healthy, but no automatic limit raises. |
| Above 4% | At risk. |
| Above 5% on a domain | The domain is paused. |
| 6% or more on the workspace | The workspace is suspended. |
See Sending health for how the score is calculated and how to recover.