Account
Plans & billing
4 plans, with limits enforced by the API. Every new workspace starts with 14 days of Pro. Agents can see the limits, hit them gracefully and ask a human to upgrade.
Plans
| Free | Starter | Pro | Business | |
|---|---|---|---|---|
| Monthly | Free | $12/mo | $29/mo | $99/mo |
| Yearly (2 months free) | — | $120/yr | $290/yr | $990/yr |
| Monitors | 10 | 25 | 75 | 300 |
| Fastest check interval | 5 min | 1 min | 30 s | 30 s |
| Check regions per monitor | 1 | 2 | 3 | All |
| Status pages | 1 | 1 | 5 | 20 |
| Components per status page | 10 | 30 | 100 | 500 |
| Custom domains | — | 1 | 5 | 20 |
| Remove UpButler branding | — | Yes | Yes | Yes |
| Custom CSS | — | — | Yes | Yes |
| Email subscribers per page | 25 | 500 | 5,000 | 25,000 |
| Emails per month (alerts + subscribers) | 300 | 2,500 | 15,000 | 60,000 |
| AI reports per month | 10 | 100 | 1,000 | 5,000 |
| History | 30 days | 1 year | 1 year | 2 years |
| Members | 1 | 2 | 5 | 25 |
| API keys | 2 | 10 | 25 | 100 |
| Scripted API checks | — | — | Yes | Yes |
| Browser (Playwright) checks | — | — | — | 20 |
| On-call schedules & escalation | — | — | — | Yes |
| Audit log viewer & export (400 days) | — | — | — | Yes |
Prices are in USD. Webhook, Slack, Discord and Telegram deliveries are unmetered on every plan, and so is the API. Every plan includes the REST API, the MCP server and signed webhooks. Read the live limits with GET /plans (public). GET /workspace shows your plan, limits, trial and this month's usage (monitors, statusPages, members, aiReports, emails).
Need more? Enterprise starts at $299/month, billed yearly. Custom limits and regions; SSO / SAML (on request); DPA, SLA and security review; Annual invoicing. Write to [email protected].
The Pro trial
Every workspace a person creates starts on Pro for 14 days, free and without a card. You get everything in the Pro column above. One trial per person: a second workspace you create starts on Free. Workspaces created by an agent with POST /agent/bootstrap start on Free and get the trial when a human claims them.
While the trial runs, GET /workspace reports the trial plan as your plan, with the end date:
"plan": { "id": "pro", "name": "Pro", "limits": { ... } },
"trial": { "plan": "pro", "endsAt": "2026-10-23T09:12:44.120Z", "active": true, "daysLeft": 14 }We email the workspace owners and admins 3 days before the trial ends. At the end, the workspace moves to Free and is brought within Free's limits as described in Downgrading. No monitors, pages or history are deleted, and we email a list of what changed. Paying for any plan during the trial ends the trial at once; if you later cancel, the workspace returns to Free, not to the trial.
Hitting a limit
Anything over your plan's limits is refused with 402 plan_limit. Nothing that already exists is touched. When a paid plan lifts the limit, the error names the cheapest one in details.upgrade and in the hint:
HTTP/1.1 402 Payment Required
{
"error": {
"code": "plan_limit",
"message": "The Free plan checks at most every 300s",
"hint": "The Starter plan includes this. Upgrade at /app/billing, or call POST /api/v1/billing/checkout with {\"plan\":\"starter\"} and hand the checkout URL to a human.",
"details": { "upgrade": { "plan": "starter", "name": "Starter" } }
}
}- Count limits (monitors, pages, components per page, custom domains, browser checks, members, API keys, email subscribers) block creating one more.
- Feature limits (interval, regions, custom CSS, branding, scripted and browser checks, on-call) block the create or update that uses them.
- Monthly quotas fail softly. Once the AI quota is used up, incidents use templates instead of AI. Once the email quota is used up, further emails that month are dropped (webhooks and chat continue). Both reset on the 1st (UTC).
Upgrading
In the dashboard, open Billing. Over the API (owners and admins, or a write-scoped key):
curl -X POST https://upbutler.com/api/v1/billing/checkout \
-H "Authorization: Bearer $UPBUTLER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"plan": "pro", "interval": "year"}'
# → { "checkoutUrl": "https://buy.polar.sh/polar_c_...", "checkoutId": "..." }plan is starter, pro or business, and interval is month (default) or year. Yearly costs 10 times the monthly price, so 2 months are free. The response contains a hosted checkoutUrl. Once payment completes, the workspace switches plans within seconds. Components that a downgrade hid come back on their own, as far as the new plan allows. Paused monitors stay paused until you resume them, because you may not want all of them back.
POST /billing/portal returns a portalUrl for invoices, payment methods, switching plans and cancellation. It is REST only, not an MCP tool. A cancelled subscription keeps its plan until the end of the paid period, then the workspace returns to Free.
Downgrading
When a workspace moves to a cheaper plan (a downgrade, a cancellation that ran out, or the end of the trial), it is brought within the new plan's limits. Monitors, pages, components, subscribers and history are never deleted:
- Monitors beyond the new limit are paused, newest first, and tagged
over-limit. The oldest keep running. Resume them after upgrading again. - Check intervals faster than the plan allows are slowed to the plan minimum (Free: every 5 minutes). Heartbeats keep their own schedule.
- Scripted and browser monitors are paused if the plan doesn't include them. Browser monitors beyond the plan's count are paused, newest first.
- Components beyond the plan's per-page cap are hidden from the public page, starting from the bottom of the page. They come back automatically when you upgrade.
- Custom domains beyond the plan's count are removed from pages; the oldest pages keep theirs. Those pages stay online at their upbutler.com address, and you can add the domain again after upgrading.
- Custom CSS is cleared and the “Powered by UpButler” footer comes back if the plan doesn't include them. Keep a copy of your CSS if you plan to upgrade again.
- Email subscribers above the plan's cap are kept and still notified (the monthly email quota applies), but new sign-ups are refused until the page is under the cap.
- On-call schedules and escalation policies are kept but stop paging.
- Audit log: events are recorded on every plan. Without the Business plan,
GET /auditreturns the last 7 days; on Business it covers the full 400 days. Nothing is dropped when you downgrade: upgrading brings the older entries back into view. - Status pages, incidents and subscribers are kept.
Merchant of record
Payments are processed by Polar, our merchant of record. Polar handles checkout, invoices, VAT and sales tax. UpButler is made by HootCodes LTD in the EU.
Unclaimed workspaces
Workspaces created by POST /agent/bootstrap are on Free and unclaimed until a human opens the claimUrl and signs in. Unclaimed workspaces are deleted after 7 days (see unclaimedUntil in GET /workspace), and email channels can't be created in them. Claiming removes the deadline, makes the human the owner and starts the 14-day Pro trial. The agent's key keeps working.