Your sending reputation
Your Sapiom organization has one email sending reputation. Every inbox in the organization, on every domain, contributes to it. When its bounce or complaint rate crosses a threshold, sending is suspended for the whole organization until Sapiom support lifts it.
If you run a platform on Sapiom and send mail for your own customers from one organization, all of those customers share this reputation. One customer whose list bounces heavily can stop sending for every customer on your platform. Treat the rate as yours to manage.
How the rates are judged
Section titled “How the rates are judged”The rates are computed over a rolling 24-hour window. Which rule applies depends on how many messages the organization sent in that window, counted per recipient.
| Messages sent in the last 24h | Rate | Warning | Suspension |
|---|---|---|---|
| 1,000 or more | Bounce rate | 5% | 10% |
| 1,000 or more | Complaint rate | 0.5% | 1% |
| Under 1,000 | Complaints | None | 2 or more complaints once the complaint rate reaches 1% |
- Permanent and transient bounces both count toward the bounce rate.
- A small sender is exposed. Under 1,000 sends, two complaints out of 200 messages suspend the organization.
- Mail sent from a custom domain builds its own reputation with mailbox providers such as Gmail and Outlook, but its bounces and complaints still count toward the organization’s rates.
- Sapiom does not notify you when a rate reaches the warning level. Watch the rates yourself.
What a suspension blocks
Section titled “What a suspension blocks”A suspension blocks outbound mail only:
| Blocked | Keeps working |
|---|---|
messages.send, reply, replyAll, forward | Inbound mail arrives in every inbox |
inboxes.create | messages.list, messages.get, threads.*, and other reads |
| Webhook delivery for received mail |
An agent paused waiting for a reply still receives it. An agent that sends fails at the send step: the call throws EmailHttpError with HTTP 422 and body.error "agentmail_message_rejected". When the provider gives a reason, body.upstreamReason carries it. Retrying does not help; the send fails until the suspension is lifted.
Lifting a suspension
Section titled “Lifting a suspension”Contact Sapiom support to lift a suspension.
Reinstating the organization does not reset the 24-hour window. The bounces and complaints that caused the suspension still count, so the next bounce can suspend the organization again. Find and stop the cause before you ask for the lift: pause the sending agent, remove the bad addresses, or stop sending for the customer whose list caused it.
Suppressed addresses
Section titled “Suppressed addresses”Some events add the recipient to a suppression list automatically:
| Event | Suppression entry |
|---|---|
| Permanent bounce | Added |
| Complaint (marked as spam) | Added |
| Unsubscribe | Added |
| Transient bounce | None |
Suppression entries apply to the whole organization. An address suppressed because of mail sent for one of your customers is suppressed for all of them. Automatic entries cannot be removed through the API.
Watch the rates
Section titled “Watch the rates”GET /v1/email/metrics/rates returns the organization’s current bounce and complaint rates. These are the figures that suspension decisions are based on, and they cover every inbox in the organization. The read is free.
curl -sS https://agentmail.services.sapiom.ai/v1/email/metrics/rates \ -H "x-sapiom-api-key: $SAPIOM_API_KEY"{ "bounceRate": 0.012, "complaintRate": 0.0005, "sent": 1840, "windowSeconds": 86400, "windowEnd": "2026-10-13T17:00:00.000Z"}| Field | Meaning |
|---|---|
bounceRate | Bounced over sent in the window, as a fraction: 0.05 is 5%. null when nothing was sent. |
complaintRate | Complaints over sent in the window, as a fraction. null when nothing was sent. |
sent | Messages sent in the window, counted per recipient. |
windowSeconds | Length of the rolling window: 86400 (24 hours). |
windowEnd | End of the window the rates cover, ISO 8601. The window advances hourly. null when there is no data yet. |
Call it with your organization’s own API key. A key that belongs to any other tenant gets HTTP 403 with error: "agentmail_rates_internal_tenant_only", because the rates describe the whole organization.
Alert before the warning thresholds, so you have time to act before a suspension:
| Rate | Warning threshold | Suggested alert |
|---|---|---|
bounceRate | 0.05 | 0.03 |
complaintRate | 0.005 | 0.003 |
When sent is under 1,000, the bounce thresholds do not apply, but two complaints can suspend the organization. Alert on every new complaint at that volume. To see which inbox or customer a bounce or complaint came from, subscribe to the message.bounced and message.complained webhook events.
Sapiom sending limits
Section titled “Sapiom sending limits”Sapiom applies its own limits on top of the reputation rules. See Email limits for the full rules.
| Limit | Value |
|---|---|
| Recipient deliveries per inbox per day | 200, resetting at 00:00 UTC |
| Addresses per recipient field per call | 50 each in to, cc, bcc, and replyTo |
Recommendations
Section titled “Recommendations”- Verify recipients before sending. Assess each address with
emailSearch.verifyEmailfrom Email Lookup, or another verification service, and drop the ones that fail. Unverified lists are the most common cause of bounces. - Honor unsubscribes. Send
List-UnsubscribeandList-Unsubscribe-Postheaders on bulk mail, and stop sending to an address when its owner unsubscribes. A recipient who cannot unsubscribe tends to mark the mail as spam, which counts as a complaint. - Send cold outreach from a custom domain. A custom domain keeps its mailbox-provider reputation separate from your other sending. Its bounces and complaints still count toward the organization’s rates, so verify those recipients too.
© 2026 Sapiom, Inc.