Flow Monitors

A homepage returning 200 isn't a working product

A flow monitor's configuration is a short executable spec: several steps in order, with assertions between them. Sign in over HTTP and verify the token, or `use browser` to click through the live page — so the question a check answers is whether somebody can still do the thing they came to do.

  • Multi-step HTTP or browser
  • Auth and JWT verification
  • Failures name your line
20Requests per run
30sRun time limit
15mMinimum interval
90dResult history
Deep Dive

Each step of a sign-in, checked

A closer look at what you get, from the first check to the alert that reaches you.

Auth is a first-class step

Bearer and basic credentials, form posts to a token endpoint, and cookie headers are part of the spec rather than something to work around.

Tokens are verified, not just received

A returned JWT is checked against a live JWKS endpoint — ES256 signature and expiry — so a rotated signing key surfaces as a failure instead of a 200.

A failure names a line of your spec

The failing test's title, its line number, and expected against observed, rendered on the source with that line marked. Compare with `HTTP 500`.

HTTP runs share the ping meter

An HTTP flow bills one check per request from the shared allowance. A browser flow bills separately at $2.50 per 1,000 runs — none included in the subscription.

Alerts you already configured

Flow failures go through the same alert channels, cooldowns, and maintenance windows as every other monitor.

Runs only against verified domains

An HTTP monitor sends one request a stranger could have sent anyway; a flow drives a whole sequence, so it runs only against domains your team has verified.
Get started

From a spec to the failing line

Three steps from an empty dashboard to checks that run on their own.

  1. Verify the domain

    Prove the team controls the host the flow will drive. A flow won't run against a domain nobody has verified.
  2. Write the spec

    A few requests in order, with the assertions that matter between them: a status, a field's value, a token that verifies.
  3. Get the failing line

    A failing run names the assertion that broke and the line it sits on, and alerts through your existing channels.
Sign-in flow, every 15 minutes
  1. Sign-in flowPassedRecovered · 4 steps in 1.2s
  2. Failed at step 4 of 4Failedexpect account.status 200 → got 401
  3. Sign-in flowPassed4 steps in 1.3s
  4. Sign-in flowPassed4 steps in 1.1s
  5. Sign-in flowPassed4 steps in 1.2s
The alert to your team names the line that failed
FAQ

Frequently asked questions

The questions people ask most before they start monitoring.

How often can a flow run?

Every 15 minutes at the fastest, then 30 minutes, hourly, every 3, 6 or 12 hours, or daily; hourly is the default. Anything you need caught faster wants an HTTP monitor on the endpoint the flow depends on, which runs at 1-minute resolution.

Does a flow drive a browser?

Only when you ask for one. A flow that sticks to `http` stays a sequence of requests. A flow that `use`s `browser` opens a real Browser Run session, clicks and fills the way a person would, and asserts on what the live page exposes — headings, buttons, the URL after a redirect. Failures that only appear once scripts have run belong on a browser flow; API paths stay on HTTP.

What can't a spec express?

Branching, computation, and generated data. Assertions compare for equality or truthiness, so there are no regex or substring matches, and a signup flow needing a fresh address each run wants a fixed fixture account instead.

What happens when a flow can't run at all?

An unparseable spec, or a host outside reach, is reported as "cannot run" — deliberately never an outage, and it never pages anyone.

How long does a run get?

Thirty seconds and 20 requests, whichever comes first. That covers a sign-in, a read-back, and the calls the token authorises — or a short click-through in a browser session.

Start monitoring your services

Create your first monitor in under 2 minutes. No credit card required to start.