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

$0No card.

  • Uptime, SSL, DNS, TCP and heartbeat monitors
  • Checks that read what your app returns
  • Stripe webhook and Supabase project checks
  • Email, Telegram, Slack, Discord and webhook alerts
  • A status page on your own domain
  • MCP server for your AI agents
  • 1 app, 50 monitors and 5 heartbeats
  • HTTP checks every 3 minutes from 2 locations
  • Commercial use allowed

Builder

$7.50a month, billed yearly. $9 billed monthly.

  • Everything in the free plan
  • 10 apps, 100 monitors and 50 heartbeats
  • 1-minute HTTP checks from 3 locations, one in Europe
  • No Staygreen mark on your status pages
  • Members-only status pages
  • Alert routing by severity
  • Teammates alerted without an account
  • 1 year of history

Start free, then upgrade from your workspace’s billing whenever you need it.

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
Stripe webhook failuresFreeNot offeredNot offeredNot offeredNot offered
A paused Supabase projectFreeNot offeredNot offeredNot offeredNot offered
Webhook alertsFree€41/moTeamIts pricing page doesn't say which plan$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

Stripe webhook failures

Staygreen
Free
UptimeRobot
Not offered
Better Stack
Not offered
OpenStatus
Not offered
Hyperping
Not offered

A paused Supabase project

Staygreen
Free
UptimeRobot
Not offered
Better Stack
Not offered
OpenStatus
Not offered
Hyperping
Not offered

Webhook alerts

Staygreen
Free
UptimeRobot
€41/moTeam
Better Stack
Its pricing page doesn't say which plan
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

Not offered means it isn’t among the monitor types the vendor lists, read on . Watching Stripe’s own status page doesn’t count: it can’t see your failed deliveries. UptimeRobot showed its prices in euros, so they stay in euros here. OpenStatus’s pricing table covers only its paid plans, so for webhooks, an own domain and a page without its name, its prices are on its cheapest paid plan. Prices change: check UptimeRobot, Better Stack, OpenStatus and Hyperping before you decide.

Know it works, not just that it’s up