Plans and limits
Every limit below is enforced by the API and shown in your dashboard. This page explains what each one means in practice and what actually happens when you reach it.
The ladder
Volume is the only thing that changes as you move up a step inside a plan. Features change when you move between plans.
| Step | Price a month | Emails included | Each extra 1,000 |
|---|---|---|---|
| Free | £0 | 5,000 | Not available |
| Pro 50k | £12 | 50,000 | £0.60 |
| Pro 100k | £25 | 100,000 | £0.55 |
| Growth 250k | £60 | 250,000 | £0.45 |
| Growth 500k | £110 | 500,000 | £0.40 |
| Growth 1M | £220 | 1,000,000 | £0.35 |
| Growth 2.5M | £450 | 2,500,000 | £0.30 |
| Enterprise | Custom | Custom | Custom |
Prices are in GBP and exclude VAT. The month is a calendar month in UTC, and it resets at midnight on the 1st.
Every recipient is one email. A send to three people, across to, cc and bcc, counts as three emails against your allowance, your overage and the new-account daily cap. A scheduled email counts in the month it is sent, not the month you scheduled it; a cancelled one never counts. Emails sent with a test key are never counted.
What changes between plans
| Limit | Free | Pro | Growth | Enterprise |
|---|---|---|---|---|
| Domains | 1 | Unlimited | Unlimited | Unlimited |
| Team members | 1 | 5 | 10 | Unlimited |
| Log retention | 1 day | 7 days | 30 days | 90 days |
| Requests a second, per key | 10 | 10 | 25 | 50 |
| Support | Docs and email, best effort | Email support | Priority email support | Priority support with a named contact |
What each feature means
| Feature | What it means |
|---|---|
| Emails per month | Emails you can send each calendar month before overage applies. Each recipient (to, cc and bcc) counts as one. Resets on the 1st. Test-mode sends don't count. |
| Overage | What you pay per additional 1,000 emails once you pass your included volume. Billed at the end of the month. Not available on Free. |
| Domains | Domains you can verify and send from. Each one gets its own DKIM signing so mail is authenticated as yours. |
| Team members | People who can log in to the dashboard for this account. Each gets their own login link and can be removed at any time. |
| Log retention | How long we keep each email's content. After this the record and its events stay, but the body is deleted. |
| Webhooks | HTTP callbacks to your server for delivery, bounce and complaint events, signed so you can verify them. |
| Support | How to reach us and how quickly we aim to respond. Email support is answered by the people who built Avelto. |
| Dedicated IP | A sending IP used only by you, so your reputation is your own. Best for steady senders over 3,000 emails a day. |
| Uptime SLA | A contractual commitment to API availability, with service credits if we miss it. |
| EU data residency | Your data is stored in the EU. This is true on every plan; Enterprise gets it in writing. |
| Named contact | A specific person who knows your account and answers your questions, rather than a shared queue. |
| Priority support | Your emails go to the front of the queue with a same-business-day target. |
What happens when you reach a limit
Monthly emails
On Free, sending stops. A send whose recipients would take you past the included volume is refused, whole, with a 429 and the error code plan_limit. The message says the same thing the banner in your dashboard says: sending resumes on the 1st, or you can move to a paid plan to keep sending now. Nothing is lost, and nothing is queued up to be sent later.
On a paid plan, sending continues and overage applies. Emails past your included volume are charged at the rate per 1,000 of the step you were on when you sent them, and billed when the month closes, on an invoice of their own charged to your card. Changing step, or moving to Free, never re-prices email already sent, and never cancels a month's overage. Your dashboard shows the count and the running cost as soon as you pass the line, so it is never a surprise on an invoice.
Overage has a safety limit. So that a loop in your code or a leaked key cannot run up a bill nobody meant, a paid account can send up to ten times its included volume on overage in a month (a Pro 50k account, 500,000 above its 50,000) before sending stops with plan_limit until the 1st. Your dashboard tells you when it happens. If you need more, move up a step or get in touch and we will raise it.
Your dashboard warns you at 80% of your included volume on both the overview and the usage page, and the warning names the step above you and its price.
Domains
Free includes one sending domain. Every paid plan is unlimited. Adding a domain past your limit is refused with plan_limit, and the message names the plan that lifts it.
Separately, every new account is capped for its first 7 days, whatever its plan: at most 5 domains, and at most 100 live emails a day (each recipient is one). A send past the daily cap is refused with 429 and the error code plan_limit, and the cap resets at midnight UTC. That is an anti-abuse measure rather than a plan limit, and it lifts by itself after the 7 days.
Team members
A seat is a person who can sign in to your dashboard. A pending invite holds a seat, so five members and one outstanding invite is six seats used. Revoking an invite gives the seat back immediately.
When your seats are full, the invite form says so and names the plan that gives you more. The last owner on an account cannot be removed.
An email address belongs to exactly one account. If someone already has a login somewhere else, they cannot be invited to yours until that account is closed.
The person you invite joins from the link in the invitation email: it shows them your account and their role, and Accept sends a sign-in link to the invited address. Following that link is what joins them. Signing in from the login page does not join an account, so they should use the invitation email.
Owners and members
Everyone on the account can do the daily work. A handful of actions belong to owners, chosen by how much they affect, not by seniority.
Owners only
- Delete the account, or schedule and cancel that deletion
- Request a billable add-on such as a dedicated IP
- Manage billing: start or change a plan (or preview a change), change the card, edit billing details
- Delete a domain
- Invite and remove people
- Create, rotate or revoke a live API key
- Create a key for an AI agent, or give any key the
account:settingsorkeys:managescope - Change notification settings
Everyone
- Send email and read the logs
- Create and revoke test API keys
- Add a domain
- Manage webhooks and suppressions
Creating a live key is an owner's call because a live key is the account's full sending authority handed to a program. That is also why a test key cannot delete a domain even though a member can create one: otherwise the rule above would be trivially avoidable.
If you hit one of these as a member, the error names the action and says to ask an owner.
Asking us to change your plan is open to everyone: get in touch whoever you are. The person who runs into a limit is usually not the person who pays the bill, and making them find that person before they can even tell us would be a strange way to learn we need to sell you something.
Request rate
Each API key is limited to a number of requests a second. Going over returns 429 with a retry-after header; the SDK honours it and retries for you. This limit is per key, so splitting work across keys splits the budget rather than multiplying it.
Creating and rotating keys in the dashboard is limited too, to 20 an hour per account, because every new key is announced by email to the account's alert address.
Sending speed
Live mail is handed to our sending provider at the provider's own rate, which every account shares, and in a fair order: your first email of a minute goes out alongside another account's first, however many either of you queued. At most 3 of one account's emails are being handed over at the same moment; the rest wait their turn in the queue. None of this refuses a send. A large batch takes longer to leave the queue, and other customers' password resets do not wait behind it.
If the provider asks us to slow down, the emails it turned away go back on the queue and try again a little later, without using up any of their retries. An email only fails for this reason if the provider keeps refusing it for six hours.
Account-wide limits
These hold for every plan. Each is far above what an integration normally uses; they exist so that one account cannot use up what every account shares.
| Limit | Value | Over it |
|---|---|---|
| Templates per account | 100 | 403 plan_limit |
| Saved versions per template | the last 50 | the oldest is removed when a new one is saved |
| A template's subject and body once its variables are filled in | 998 characters for the subject, 5,000,000 for the html and for the text, the same as a body sent directly | 422 validation_error, naming the part |
| Webhook endpoints per account | 10 | 403 plan_limit |
| Webhook deliveries in progress | 2 per endpoint, 5 per account | they wait their turn |
| Retrying a failed webhook delivery | 100 an hour per endpoint, failed deliveries only | 429 rate_limited, or 409 for a delivery that succeeded or is still being retried |
| Send again and Send test event | 30 and 10 an hour per endpoint | 429 rate_limited |
The SMTP relay has its own limits on connections and messages in progress; see Limits on the SMTP page.
Log retention
Retention is how long we keep each email's content. After it passes, the email's record, its status and its events all stay queryable; the body is deleted. The dashboard says so on the email rather than showing you an empty preview.
Domain health
Once a domain is verified we keep checking it. Every night we re-resolve its DKIM, SPF and DMARC records and compare them with what we expect.
If a DKIM or SPF record stops resolving, or resolves to something else, the domain is marked action needed, a banner appears in your dashboard, and an entry is written to your audit log. You can also re-check a domain yourself at any time from the domains page; that button is limited to once a minute per domain so a refresh loop cannot hammer the DNS.
A missing DMARC record is advice rather than a fault. It will never mark a domain as action needed, because plenty of domains run without one. Publishing one is still worth doing: see Domains for the three policy levels and where to start.
Webhooks
Every delivery attempt is recorded with the response code, how long it took and how many attempts it has taken. Opening a delivery shows the exact body we sent, the signature header that came with it, and the body your endpoint sent back, truncated if it was very large.
Two buttons on that page help when you are wiring up a handler:
- Send test event posts a synthetic
email.deliveredpayload to your endpoint, so you can build and verify your handler before sending any real mail. - Send again delivers an event you have already had as a new delivery, which is how you test a handler you have just fixed against a past event.
Both are signed exactly like a real delivery, so your signature check is being tested too. Both are dashboard tools rather than API routes, limited to 10 test events and 30 sends again an hour per endpoint. Retrying a failed delivery is the different one: it re-attempts the same delivery and keeps its attempt count, it is what you script after an outage, and it is on the API. It only takes a delivery that has failed, up to 100 an hour per endpoint. See Retry vs send again.
Alerts
Your dashboard can email you when something needs attention. Each alert is off or on per account, and goes to whichever address you choose, defaulting to the account owner. A new address gets a link to confirm it first, unless it already signs in to the account; until the link is followed, alerts keep going to the owner. However much happens at once, an account gets at most 10 alert emails an hour.
| Alert | Sent when |
|---|---|
| Domain health | A verified domain's DKIM or SPF records stop resolving as we expect. |
| Bounce rate | Your bounce rate passes 3%, once at least 50 emails have reached a final state. |
| Complaint rate | Your complaint rate passes 0.08%, on the same sample rule. |
| Usage | You pass 80% of the emails included in your plan this month. |
| API key created | A new API key is created on your account. |
The bounce and complaint thresholds sit deliberately below the levels our upstream sending infrastructure enforces. By the time a rate reaches those, sending is already at risk for everyone on the platform, so the warning has to arrive with enough room to fix the cause. The same alert is never sent twice within 24 hours.
Those higher levels are where sending is paused: a bounce rate over 5% or a complaint rate over 0.1%. Each is judged over today (UTC) once at least 20 emails have reached a final state that day, and over the last 7 days once at least 20 have in that time, so a quieter account is judged too. Only permanent bounces count toward the bounce rate: a full mailbox or a server that was briefly down does not. Mail to the simulator addresses never counts, whatever +label it carries. A paused account gets 403 account_paused on every send; the dashboard shows the reason, and we lift the pause once you have written in and the cause is fixed.
Dedicated IPs
A dedicated IP is a sending address used only by you, so your sending reputation is yours alone rather than shared.
- £35 a month on Pro, £25 a month on Growth and Enterprise, on top of your plan.
- Available from Pro up, for senders steadily over 3,000 emails a day. Not offered on Free.
- Arranged by talking to us. There is no self-serve provisioning.
It is worth having only if you send steadily. A dedicated IP with low or irregular volume has no reputation to speak of, which is usually worse than sharing one that does. A new IP also has to be warmed: volume is raised gradually over a few weeks so receiving networks learn to trust it. We do that with you rather than handing you an IP and wishing you luck.
To ask for one, use the button in your dashboard under Settings, or talk to us. We set these up by hand today.
Changing plan
The Billing page in your dashboard is where a plan changes. Pick the step you want: the first time, you enter a card on that page and the plan starts that day; after that, a change shows you the prorated difference before you confirm, and takes effect once that difference is paid (if your bank asks you to approve the payment, the page shows its check). Moving down to Free ends the plan when the period you have paid for closes; the month's overage is still billed when the month ends. The same page holds your invoices and the card. Where checkout is not yet open on your account, the page says so and the Upgrade buttons open our contact form with your current step and the suggested next one already filled in.
If none of the steps fit, say so. Custom volume, an agreed monthly cap, an uptime commitment and a named contact are all things we do on Enterprise; see Enterprise.
Where to see all of this
- Usage shows emails (recipients) a day for the current month, your total against your included volume, a projection for the month, the overage cost so far, your daily bounce and complaint rates against the alert and pause levels above, and the month's sends broken down by the
tagsyou set on them (an email with two tags counts under each; untagged mail is left out). - Team shows members, pending invites and seats used.
- Domains shows every DNS record we expect, what actually resolved, and each domain's health.
- Settings shows your plan and every entitlement on it, your alert preferences and your dedicated IPs.
- Support shows your support tier and what response time to expect.