Monitoring
Synthetic Monitoring
Scripted multi-step browser checks — navigate, click, fill, wait, and assert — for real user-journey monitoring beyond a simple uptime check.
A Synthetic monitor runs a real headless browser through a scripted sequence of steps — the same way an actual visitor would move through your site — instead of a single request/response check. Use it for anything a plain HTTP check can't express: does login actually work, does the checkout flow complete, does a specific page element render correctly after JavaScript runs.
Availability
Synthetic Monitoring is a plan-gated feature — each check launches a real headless Chromium instance, so it costs meaningfully more compute than a protocol probe. Check Settings > Plan, or ask your organization's Owner.
Steps
A scenario is an ordered list of steps. Every step must succeed for the check to pass — the first failure fails the whole run, same as a real user hitting a broken step and giving up.
| Action | What it does |
|---|---|
goto | Navigate to a URL |
click | Click an element (CSS selector) |
fill | Type a value into an input (CSS selector) |
waitFor | Wait until an element becomes visible (CSS selector) |
assertText | Fail unless an element's text contains a given value |
assertTitle | Fail unless the page title contains a given value |
curl -X POST https://api.monsphere.com/api/v1/organizations/{orgId}/monitors \
-H "X-Api-Key: msk_live_..." -H "Content-Type: application/json" \
-d '{
"name": "Checkout Flow",
"type": "synthetic",
"target": "Checkout flow",
"intervalSeconds": 300,
"timeoutSeconds": 30,
"config": {
"syntheticSteps": [
{ "action": "goto", "target": "https://example.com/cart" },
{ "action": "click", "target": "#checkout-button" },
{ "action": "waitFor", "target": "#payment-form" },
{ "action": "assertText", "target": "h1", "value": "Payment" }
]
}
}'What's not encrypted yet
Unlike Basic Auth or Advanced HTTP Monitoring's headers/body, a fill step's value is stored and returned in the open — this is a known v1 limitation, not an oversight. Don't put a real password into a login scenario's fill step until this gets the same encrypted, never-round-trips treatment those do.
How it runs
Synthetic monitors don't go through Blackbox Exporter or Prometheus at all — a scripted browser session doesn't fit that pull-probe model. They run on MonSPHERE's own internal scheduler, the same one Heartbeat monitors use, so there's no region to pick — every check runs from MonSPHERE's own infrastructure.