Every SendOps plan puts a number on each thing you can create or use. On **Free** and **Team** each number is a hard limit: when you reach it, the next one is refused until you upgrade, remove something or a new period starts. On **Business** with monthly billing, most limits can be exceeded and the extra is billed as [overage](/billing/business-overage).

Some limits are **standing** limits: a count of what exists right now, such as active workflows or sending domains. Others are **per period**: an allowance that resets at the start of each usage period, such as workflow enrollments or broadcasts.


  A workspace that existed before these plans were introduced keeps its original limits until its plan changes. See [Existing workspaces](/billing/existing-workspaces).


The numbers below were checked against the SendOps plan catalogue on 10 October 2026. The [pricing page](https://sendops.dev/pricing) shows the same catalogue.

## Free

$0. For trying SendOps and for small projects. Email support.

| Limit | Included | At the limit |
|---|---|---|
| Seats | 1 | Refused; upgrade to Team |
| Email templates | 3 | Refused; upgrade to Team |
| Event retention | 7 days | — |
| Sending domains | 1 | Refused; upgrade to Team |
| AWS accounts | 1 | Refused |
| Active workflows | 1 | Refused; upgrade to Team |
| Workflow enrollments per period | 1,000 | Contact not enrolled until the period resets |
| Saved segments | 3 | Refused; upgrade to Team |
| Broadcasts per period | 10 | Refused until the period resets |
| Contacts | 50,000 | Refused; upgrade to Team |
| Image storage | 100 MiB | Upload refused |

Not included on Free: [temporary inboxes](/ai-agents/temporary-inboxes) and verified senders, [inbound receiving](/inbound/inbound-receiving), [website identity](/website/overview), [custom image domains](/edge/custom-image-domain) and the [audit log](/team/audit-log).

## Team

$29 a month. Email support.

| Limit | Included | At the limit |
|---|---|---|
| Seats | 5 | Buy extra seats at $6 a month each |
| Email templates | 50 | Refused; upgrade to Business |
| Event retention | 90 days | — |
| Sending domains | 10 | Refused; upgrade to Business |
| AWS accounts | 1 | Refused |
| Active workflows | 10 | Refused; upgrade to Business |
| Workflow enrollments per period | 100,000 | Contact not enrolled until the period resets |
| Saved segments | 50 | Refused; upgrade to Business |
| Broadcasts per period | 200 | Refused until the period resets |
| Contacts | 500,000 | Refused; upgrade to Business |
| Temporary inbox mints per period | 3,000 | Refused until the period resets |
| Live temporary inboxes | 25 | Refused until one expires |
| Verified senders | 10 | Refused; upgrade to Business |
| Inbound domains | 1 | Refused; upgrade to Business |
| Inbound messages per period | 10,000 | Still delivered; you are notified |
| Website identity sites | 1 | Refused |
| Custom image domains | 1 | Refused; upgrade to Business |
| Image storage | 5 GiB | Upload refused |
| Audit log history | 90 days | — |

## Business

$149 a month, or $1,639 a year. Priority support.

| Limit | Included | At the limit, monthly billing with overage on |
|---|---|---|
| Seats | 25 | Overage, $5 per seat |
| Email templates | 200 | Overage, $0.50 per template |
| Event retention | 1 year | — |
| Sending domains | 50 | Overage, $2 per domain |
| AWS accounts | 1 | Refused |
| Active workflows | 100 | Overage, $2 per workflow |
| Workflow enrollments per period | 2,000,000 | Overage, $0.25 per 1,000 |
| Saved segments | 500 | Overage, $1 per segment |
| Broadcasts per period | 2,000 | Overage, $0.50 per broadcast |
| Contacts | 5,000,000 | Refused; contact support to raise it |
| Temporary inbox mints per period | 30,000 | Overage, $5 per 1,000 |
| Live temporary inboxes | 500 | Refused until one expires |
| Verified senders | 100 | Refused |
| Inbound domains | 10 | Overage, $5 per domain |
| Inbound messages per period | 100,000 | Overage, $1 per 1,000 |
| Website identity sites | 1 | Refused |
| Custom image domains | 5 | Refused |
| Image storage | 50 GiB | Overage, $0.50 per GiB |
| Audit log history | 1 year | — |

Business also includes [Platform mode](/ai-agents/platform-mode) for temporary inboxes and notification presets.

With overage switched off, or on annual billing, every Business limit is a hard limit, and the "Refused" rule applies to all of them. [Overage on Business](/billing/business-overage) explains the switch and how overage is billed.

## Limits that are the same everywhere

- **One AWS account per workspace**, on every plan. There is no overage on it.
- **At most one website identity site** (none on Free). There is no overage on it.
- **Custom image domains** are a hard limit on every plan, never overage: none on Free, 1 on Team, 5 on Business.
- **Contacts** are a ceiling, never a charge. On Free and Team, upgrading raises it. On Business, support can raise it for you.

## What a refusal looks like

When you reach a hard limit, the action is refused and the dashboard tells you which limit it was, with a link to the plan that lifts it. The API refuses with HTTP `402` and the code `plan_limit_exceeded`, naming the limit you reached; the [developer docs](https://developers.sendops.dev) describe the full response. The [MCP server](/ai-agents/mcp-server) gives your agent the same refusal as one sentence with an upgrade link.

A few places behave differently because there is nothing left to refuse:

- **Workflow enrollments.** A contact who would have entered a workflow is not enrolled, and the [enrolment decision](/workflows/enrolment-decisions) records it as `plan_limit`. Runs in [shadow mode](/workflows/shadow-mode) send nothing and never count.
- **Inbound messages.** Mail is still delivered to your webhook after the allowance is used up; SendOps cannot un-receive it. You are notified once per period instead.
- **Imports and pushes.** A [bundle import](/templates/export-and-import) or a `sendops push` that would take you over a limit is refused as a whole, and nothing is written.

## How periods are counted

Four limits reset each period: **workflow enrollments**, **broadcasts**, **temporary inbox mints** and **inbound messages**.

- **Team and Business** count in monthly periods that start on your billing date. An annual Business plan is billed yearly but still counted monthly, from the same day of the month.
- **Free** counts in calendar months, starting at 00:00 UTC on the first of the month.

A broadcast counts when it is committed to send: when you schedule it or ask for it to be sent. Cancelling or deleting it before it starts gives it back. Test sends never count, and resending to a broadcast's failed recipients is the same broadcast.

## Where to see your usage

Go to **Billing** and look at the **Usage** card. It shows the current period's dates and three groups:

- **This billing period**: the per-period allowances, with the date they reset.
- The standing limits, such as seats, workflows and segments.
- Features your plan does not include, each with the plan it is included from.

Each row shows what you have used against the limit and turns amber as you get close. On Business, a row past its limit shows how much is being billed as overage.

## Notifications

Billing admins are told before and when a limit is reached:

- **Plan limit approaching** when you pass 80% of a limit such as seats, active workflows, segments, sending domains, contacts or workflow enrollments. It is an in-app notification. The same notification tells you once per period when inbound messages go past the allowance.
- **Plan limit reached** when the period's workflow enrollments are used up. It is sent in-app and by email, once per period. On Business with overage on, it says that enrollments continue and are billed.

Both are billing notifications, so at least one channel always stays on. See [Notification Types](/notifications/notification-types).

## Moving to a smaller plan

A downgrade takes effect at the end of your billing period. If you are then over a limit of the new plan, you have **14 days** to get under it. After that, SendOps acts on the limits you are still over and emails your admins a list of what it changed:

- **Seats**: members beyond the limit are deactivated. Admins are kept.
- **Email templates**: templates beyond the limit become read-only.
- **Active workflows**: the most recently activated workflows are paused until the count fits.
- **Platform mode**: switched back to the standard temporary-inbox profile on a plan without it.
- **Everything else**, such as segments, domains and contacts: nothing is deleted or detached. You just cannot add more until you are under the limit.

## When a payment fails

If a subscription goes past due after repeated failed payments, the workspace is held to the Free limits for seats, email templates and active workflows, and Business overage is suspended, until the payment goes through.

## Related pages

- [Overage on Business](/billing/business-overage): the switch, the rates and how overage is invoiced
- [Existing workspaces](/billing/existing-workspaces): workspaces that keep their original limits
- [Plans & Usage](/billing/plans-and-usage): changing plan, seats and payment
- [Temporary inboxes for platforms](/ai-agents/inboxes-for-platforms): the plan you need to mint inboxes for your own users