Your app is up.Is it working?

A ping only checks that your server answers. Staygreen checks what it answers, that your crons did their job, and that Stripe’s webhooks arrived.

Free for 50 monitors, with commercial use. No card.

GETaskone.org/api/health200 OK in 182 ms
{
  "status": "ok",
  "db": {
    "ok": true,    "latency_ms": 41
  }
}
A ping monitor saysUpThe server answered 200. That’s all a ping looks at.
Staygreen saysUp$.db.ok is true, as expected.
An example on sample data. Nothing real is touched.

Failures that pass a ping

Each one is a check you add in a minute, or that your coding agent adds for you. Coming soon means it isn’t running yet, and you don’t pay for it.

Your API says 200 while the database is gone

Assertions on the JSON body, like $.db.ok == true. A wrong value is an outage, even with a 200.

askoneAPI healthDown

GET askone.org/api/health returned 200 in 182 ms

  • Status is 200200
  • $.db.ok equals truefalse
  • Answers within 1.5 s182 ms
{"status":"ok","db":{"ok":false,"error":"too many connections"}}
Failed from San Francisco, confirmed from Toronto at 14:02.
Staygreen14:02
askone: API health is down

GET /api/health returned 200, but $.db.ok == true got false.

Failed from San Francisco, confirmed from Toronto.

{"db":{"ok":false,"error":"too many connections"}}
AcknowledgePause 1 hDraft update
Staygreen14:08
askone: API health recovered

Down for 6 minutes.

Alerts that say what broke

A failed request is checked again from a second location before anyone is woken. The alert carries the request, what it got and the response, so you can start fixing from your phone.

  • Email, Telegram, Slack, Discord or a signed webhook
  • A recovery notice when it’s fixed
  • On Telegram, acknowledge or pause from the message itself

Your users see it too

A status page on your own domain, in your colours. And a banner inside your app while something is wrong, so people don’t have to go looking.

You write the update, or your agent drafts it for you to publish. Free includes one page with HTTPS on your domain.

Live voting is having problems. We’re on it. status.askone.org
AskOne statusstatus.askone.org
Partial outage
  • WebsiteOperational
  • Live Q&A roomsOperational
  • Live votingOutage
  • Sign-inOperational
Identified at 14:05A deploy left the vote worker stopped. It’s restarting, and votes cast meanwhile are saved.

Your coding agent can read it

Staygreen has an MCP server and a REST API on every plan. Ask Claude Code or Codex what’s broken and it gets the evidence, not a guess. It can set up monitoring for a new app from its URL.

> Is anything broken in askone?

  staygreen: get_incidents(app: "askone", state: "open")

One open incident since 14:02: API health. /api/health returns 200, but $.db.ok is false from San Francisco and Toronto. The body says "too many connections". Your pool max is 10 in lib/db.ts.

Raise it to 25 and draft a status update for you to publish?

> yes

  staygreen: draft_incident_update(incident: "inc_7Qa2", state: "identified", text: "…")
  Draft saved. It's not public until you publish it.

Free for most apps

Builder is for when you run several apps, or want checks every minute.

Free

  • One app, 50 monitors, HTTP checks every 3 minutes
  • Failed requests confirmed from a second location
  • A status page on your domain, and the in-app banner
  • The MCP server and API for your agent
Start free

Builder

  • 10 apps, 100 monitors, HTTP checks every minute
  • A third location, Frankfurt, in Europe Coming soon
  • 10 status pages, no Staygreen mark, email subscribers Coming soon
  • Alert routing by severity, 1 year of history
  • Alert delay and repeat while down Coming soon
  • Maintenance windows Coming soon

Loading workspace and plans…

Choose monthly or yearly billing. Yearly is selected first. A workspace admin can subscribe or change the plan.

Compare everything in each plan

What the same things cost elsewhere

The cheapest plan that unlocks each one, from each vendor’s own pricing page on . Billed monthly unless it says otherwise.

Cheapest plan that unlocks each feature, by vendor, as of 18 October 2026
FeatureStaygreenUptimeRobotBetter StackOpenStatusHyperping
Webhook alertsFree€41/moTeam$34/moOne responder seat$30/moStarter$24/moEssentials, billed yearly
Checks every minuteBuilder€10/moSolo$34/moOne responder seat$30/moStarter$24/moEssentials, billed yearly
A status page on your own domainFree€10/moSoloIts pricing page doesn't say which plan$30/moStarter$24/moEssentials, billed yearly
A status page without the vendor's name on itBuilder€41/moTeam$284/moA seat, plus white-label for one page$330/moStarter plus white-label$249/moBusiness, billed yearly

Webhook alerts

Staygreen
Free
UptimeRobot
€41/moTeam
Better Stack
$34/moOne responder seat
OpenStatus
$30/moStarter
Hyperping
$24/moEssentials, billed yearly

Checks every minute

Staygreen
Builder
UptimeRobot
€10/moSolo
Better Stack
$34/moOne responder seat
OpenStatus
$30/moStarter
Hyperping
$24/moEssentials, billed yearly

A status page on your own domain

Staygreen
Free
UptimeRobot
€10/moSolo
Better Stack
Its pricing page doesn't say which plan
OpenStatus
$30/moStarter
Hyperping
$24/moEssentials, billed yearly

A status page without the vendor's name on it

Staygreen
Builder
UptimeRobot
€41/moTeam
Better Stack
$284/moA seat, plus white-label for one page
OpenStatus
$330/moStarter plus white-label
Hyperping
$249/moBusiness, billed yearly

UptimeRobot showed its prices in euros, so they stay in euros here. Prices change: check UptimeRobot, Better Stack, OpenStatus and Hyperping before you decide.

Know it works, not just that it’s up