# Unsubscribe links

> Transactional sending is sender-driven; campaigns inject a per-contact unsubscribe link and List-Unsubscribe header automatically.

How unsubscribe is handled depends on whether you are sending a **transactional** email or a **campaign**.

## Transactional emails (sender-driven)

For `POST /emails`, MailBlastr does **not** add an unsubscribe link or `List-Unsubscribe` header. Transactional sends — receipts, password resets, confirmations — are sender-driven: if a message needs an unsubscribe mechanism, you add it to your own HTML. This keeps MailBlastr from injecting footers into messages where they don't belong.

> **Note:** If a recipient should be able to opt out of a transactional email, include your own unsubscribe link in the `html` body. You can record the resulting opt-out as a [suppression](https://www.mailblastr.com/docs/emails/suppressions) so future sends to that address are skipped.

If you manage your own list and want a native one-click control on transactional mail, you can set the headers yourself via the [`headers`](https://www.mailblastr.com/docs/emails/headers) object — a `List-Unsubscribe` header pointing at your unsubscribe URL, plus `List-Unsubscribe-Post: List-Unsubscribe=One-Click` for [RFC 8058](https://datatracker.ietf.org/doc/html/rfc8058) one-click support.

```json
"headers": {
  "List-Unsubscribe": "<https://example.com/unsubscribe>",
  "List-Unsubscribe-Post": "List-Unsubscribe=One-Click"
}
```

When honoring a one-click request, your endpoint should accept a `POST` from that URL and return a blank `200 OK` or `202 Accepted` (and serve the normal unsubscribe page on `GET`). Ensure the recipient stops receiving email within **48 hours**. Mailbox providers such as Gmail and Yahoo require RFC 8058 compliance for bulk senders (more than 5,000 messages per day to their domains).

## Campaigns (automatic)

For campaigns (marketing email to an [audience](https://www.mailblastr.com/docs/audiences/overview)), MailBlastr injects unsubscribe handling automatically for every recipient:

- A **per-contact unsubscribe link** is appended to the message footer. Each recipient gets a unique link, so one click opts that individual out.
- An RFC 8058 **`List-Unsubscribe`** header (with `List-Unsubscribe-Post`) is emitted so mailbox providers can render a native one-click unsubscribe control.

When a contact unsubscribes through either path, they are added to your [suppression list](https://www.mailblastr.com/docs/emails/suppressions) and skipped on subsequent sends. The unsubscribe link is appended after any click-tracking rewrite, so the opt-out link is never wrapped by the click tracker.

> **Warning:** Don't set a `List-Unsubscribe` header by hand on a campaign — MailBlastr manages it. See [Custom headers](https://www.mailblastr.com/docs/emails/headers) for transactional header usage.
