> For the complete documentation index, see [llms.txt](https://kasplo.gitbook.io/kasplo-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kasplo.gitbook.io/kasplo-doc/channels/transactional-api-smtp/kasplo-bounce-processing.md).

# Kasplo Bounce Processing

Kasplo automatically detects, classifies, and processes bounce events to maintain sender reputation, ensure list hygiene, and improve inbox placement. This document outlines how Kasplo handles bounce types, bounce codes, and our internal suppression logic.

***

## **1. Bounce Types**

Kasplo places every bounce into one of the following categories:

### **Hard Bounce**

A **permanent failure** indicating the recipient address is invalid.\
Kasplo immediately suppresses the email address to prevent further attempts.

Examples:

* Mailbox does not exist
* Domain does not exist
* Address is malformed

***

### **Soft Bounce**

A **temporary failure**.\
Kasplo monitors repeated soft bounces over a defined time window. If the issue persists, Kasplo marks the address as invalid.

Examples:

* DNS lookup failure
* Mailbox full
* Temporary block
* Server unavailable

***

### **Other Bounce**

A failure **unrelated to the recipient’s validity**.

Examples:

* Spam or content-based rejection
* Authentication policy failure
* Auto-reply
* Temporary relay block

These do not immediately suppress the address unless they form a clear repeated pattern.

***

## **2. Bounce Code Reference**

Kasplo assigns a standardized numeric code to each bounce for analytics and suppression decisioning.

| **Code** | **Type** | **Category**                     | **Description**                                        |
| -------- | -------- | -------------------------------- | ------------------------------------------------------ |
| **0**    | Other    | Non-bounce                       | Not a bounce; generic non-delivery/auto message.       |
| **10**   | Hard     | Bad Address                      | Mailbox does not exist; permanent failure.             |
| **20**   | Soft     | Temp Failure – General           | Temporary issue such as inactive/unavailable mailbox.  |
| **21**   | Soft     | Temp Failure – DNS Failure       | Domain/DNS lookup failed.                              |
| **22**   | Soft     | Temp Failure – Mailbox Full      | Recipient’s quota exceeded.                            |
| **23**   | Other    | Message Too Large                | Message rejected due to size.                          |
| **24**   | Soft     | Missing MX Record                | Domain exists but no MX records configured.            |
| **29**   | Soft     | Unable to Connect                | Kasplo could not connect to recipient server.          |
| **30**   | Other    | No Address Found                 | Bounce did not include any identifiable email address. |
| **40**   | Other    | General Bounce                   | Bounce identified but no specific category applies.    |
| **50**   | Other    | Mail Block – General             | Message blocked by server without clear reason.        |
| **51**   | Other    | Mail Block – Reputation          | Sending IP/domain flagged as spam source.              |
| **52**   | Other    | Mail Block – Spam Detected       | Content-based rejection.                               |
| **53**   | Other    | Mail Block – Attachment          | Attachment not allowed by destination server.          |
| **54**   | Other    | Relay Denied                     | Server refused to relay the message.                   |
| **55**   | Other    | Mail Block – Authentication      | SPF, DKIM, or DMARC policy failure.                    |
| **59**   | Other    | Mail Block – Connection Rejected | Large ISP blocking all connections from sender.        |
| **60**   | Other    | Auto-Reply                       | Automatic vacation/OOO message.                        |
| **70**   | Other    | Transient Bounce                 | Temporary delay; message delivery attempted again.     |
| **90**   | Hard     | Unsubscribe                      | Recipient requested removal.                           |
| **100**  | Other    | Challenge-Response               | Destination requires verification challenge.           |
| **110**  | Other    | Throttle Limit                   | Message expired due to throttling.                     |
| **120**  | Other    | Queue Dumped                     | Messages manually cleared from queue.                  |
| **121**  | Other    | Delivery Paused → Expired        | Delivery paused until retry window expired.            |
| **122**  | Other    | Suppressed – Inactivity          | Long-term inactive recipient suppressed.               |
| **123**  | Other    | Suppressed – Policy Enforcement  | Blocked due to system or compliance rules.             |
| **124**  | Other    | Daily Limit Reached              | Sender exceeded daily allowed mailing volume.          |
| **200**  | N/A      | Spam Complaint                   | ISP feedback loop or explicit complaint.               |

***

## **3. How Kasplo Decides When to Suppress an Email Address**

Kasplo uses an **internal, predefined rule system** optimized for deliverability.\
Customers **cannot modify these rules**, ensuring consistency and platform-wide safety.

Kasplo evaluates three internal conditions before suppressing an address:

***

### **Rule 1 — Bounce Count**

* **Hard bounces:** 1 hard bounce = immediate suppression
* **Soft bounces:** Must occur multiple times before suppression

Kasplo ensures temporary issues do not immediately remove valid recipients.

***

### **Rule 2 — Bounce Consistency**

Kasplo checks whether bounces occur **consecutively** without successful delivery in between.

* If a recipient consistently fails → suppressed
* If failures are mixed with successful deliveries → not suppressed yet

This avoids accidental suppression from isolated soft bounces.

***

### **Rule 3 — Bounce Time Window**

Kasplo confirms that the bounce pattern continues over a **minimum time duration**, ensuring the problem is ongoing.

Examples:

* Mailbox full for 1–2 days → *not suppressed*
* DNS failure lasting across multiple days and sends → *suppressed*

This prevents valid addresses from being removed during temporary ISP or mailbox issues.

***

## **4. Examples of Kasplo’s Suppression Logic**

### **Example 1 — Not Suppressed**

* Soft bounces occur for 2 days
* Issue resolves on day 3
* → Kasplo keeps the address active

Short-term failures are not enough for suppression.

***

### **Example 2 — Suppressed**

* Address soft-bounces for multiple sends
* Issue continues across several days
* → Kasplo marks the address invalid

This indicates the domain or mailbox is genuinely unreachable.

***

### **Example 3 — Not Suppressed**

* Some emails bounce
* Some emails deliver successfully
* → Kasplo waits for a consistent failure pattern

Mixed results indicate the address is still functional.

***

### **Example 4 — Immediate Suppression**

* Address receives a **hard bounce**
* → Kasplo instantly marks it invalid

Hard bounces are treated as permanent failures.

***

## **5. Synchronous vs Asynchronous Bounces**

Kasplo handles both bounce types seamlessly:

### **Synchronous Bounce**

Occurs **during SMTP conversation**.\
Kasplo logs:

* SMTP failure
* Bounce event

Examples:

* 550 user unknown
* 553 mailbox does not exist

***

### **Asynchronous Bounce**

Occurs **after the ISP initially accepts the message**.\
Kasplo logs:

* Bounce event only (no SMTP failure recorded)

Example:

* ISP later returns a DSN (delivery status notification)

Both types feed into the same suppression engine.
