# Sending Health

Mailbox providers judge a sender by its bounces, spam complaints and authentication. Flomailr watches the first two, enforces a monthly quota, and checks your guardrails when it sends. **Settings > Sending health** reports what has happened. **Settings > Guardrails** sets what is allowed to happen.

## Bounces and complaints

Flomailr receives bounce and complaint notices from its mail provider and matches each one to your workspace through the campaign that sent the message. Only permanent bounces and spam complaints count. A temporary bounce, such as a full mailbox, is ignored.

| Event          | Contact becomes | Suppression reason |
| -------------- | --------------- | ------------------ |
| Hard bounce    | Bounced         | Hard bounce        |
| Spam complaint | Unsubscribed    | Spam complaint     |

The contact also comes off every list, the campaign's bounced or complained count goes up, and your `EMAIL_BOUNCED` or `EMAIL_COMPLAINED` webhook fires. Every later send skips the address. See [Compliance](/docs/concepts/compliance) for the suppression list.

Single sends (`send_email` and `POST /api/v1/send`) carry no campaign, so they never count toward your rates.

## Thresholds and suspension

**Email health rates** shows your bounce rate and complaint rate over every campaign you have sent. Each bar reads Healthy, Warning or Critical.

| Rate                          | Warning from | Threshold |
| ----------------------------- | ------------ | --------- |
| Bounce rate (permanent)       | 3%           | 5%        |
| Complaint rate (spam reports) | 0.05%        | 0.1%      |

If a rate rises above its threshold, Flomailr suspends the workspace automatically, but only once your campaigns and automations have sent at least 500 emails in total. Below that, one typo would swing the rate too far to mean anything. A suspended workspace cannot send campaigns, automation emails or single sends. The page shows an **Account suspended** banner with the reason, and the **Sending audit log** records it. Contact support to reinstate sending.

## Monthly quota

Each plan has a quota of emails per calendar month. The count includes campaigns, automation emails and single sends.

| Plan       | Emails per month                 |
| ---------- | -------------------------------- |
| Free       | 2,000                            |
| Pro        | 50,000                           |
| Enterprise | 10,000,000, shown as "unlimited" |

A campaign that would pass the quota is refused as a whole, with the number remaining, and is not sent in part. The page shows **Available**, **Nearly full** (80% used) or **Limit reached**, and a blocked send is logged as **Blocked (quota)**.

## Guardrails

**Settings > Guardrails** holds rules the server enforces whatever started the send: the dashboard, an API key or an AI agent. `POST /api/v1/send` skips the daily cap and quiet hours, and `send_email` skips quiet hours. Only owners and admins can change the rules.

| Setting                              | What it does                                                                                                                                            |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Enforce sending guardrails**       | On by default. If you turn it off, every send is blocked, not sent unchecked.                                                                           |
| **Limit sends per day**              | Off by default. Sets **Messages per day**, counted per calendar day in your default time zone. A campaign that would pass it is refused whole.          |
| **Defer sends overnight**            | Off by default. Sets a quiet window with **From** and **Until** hours. Uses each contact's time zone, else your **Default time zone** (UTC by default). |
| **Check the suppression list**       | On by default. Blocks anyone who hard-bounced, complained or opted out.                                                                                 |
| **Agents must opt in to real sends** | Off by default. When on, agent sends are dry runs that report what would happen without delivering anything.                                            |
| **Never send to these domains**      | One domain per line. Matching recipients are dropped.                                                                                                   |

If any recipient is inside quiet hours when a campaign send starts, the whole send is refused and nothing goes out. A scheduled campaign is retried until the window closes. An automation email waits until the window ends.

## Sender authentication

Mail goes out from the shared Flomailr address unless you add a custom domain, which needs the Pro plan. In **Settings > Workspace**, open **Custom sending domain**, enter your root domain (such as `acme.com`, not `mail.acme.com`) and a **From address** prefix, and select **Add domain**. Publish the DNS records the page lists, then select **Check verification**. DNS can take up to 72 hours. Once the status is **Verified**, campaigns, automations and single sends use your address.

Three DNS records decide whether receivers trust your mail:

- **SPF** lists the services allowed to send as your domain. A record may cause at most 10 DNS lookups.
- **DKIM** is a signature checked against a public key that your domain publishes.
- **DMARC** tells receivers what to do with mail that fails the other two, and where to send reports.

The free checker at `/tools/dmarc-checker` reads a domain's live SPF, DKIM, DMARC and MX records, counts SPF lookups against the limit of 10, and says what to fix. Add your DKIM selector (the part before `._domainkey`) to check one key. It needs no account and allows 20 checks per 10 minutes from one network.

Before a large send, an AI agent can call `check_send_readiness`. It returns GO, CAUTION or NO_GO from your domain authentication, bounce and complaint rates, quota and suspension status. See [Sending Safely with AI](/docs/ai/send-safely) and [Settings](/docs/platform/settings).
