UpButler does uptime monitoring for websites and APIs, plus synthetic monitoring with JavaScript and Playwright. Get alerts in Slack, Discord, email, or webhooks the moment something fails.
A quick tour of the core workflows: monitors, incidents, alert routing, and status pages.
API (Production)
142ms • 1m interval
Checkout Flow
Script • 2.1s
API (Production)
5xx spike • 2m ago
Slack
#oncall
Discord
#alerts
Acme Cloud Status
3 monitors • 124 subscribers
Status
All operational
30d uptime
99.99%
Website and API uptime checks, plus JavaScript scripts when you need deeper assertions.
Automatic incident tracking with duration and a clean, readable timeline.
Route alerts to the channels your team actually watches.
Public or private pages with monitor rollups and subscribers.
Monitors
Overview
Total
12
Uptime
99.98%
API (Production)
https://api.example.com/health
142ms
1m
Checkout Flow
Scripted test
2.1s
5m
Incidents
Timeline
API (Production)
5xx spike detected during deploy
Incident created automatically
Alert sent to Slack #oncall
Next check in 60s
Channels
Alert routing
Slack
#oncall
Discord
#alerts
Example alert
DOWN API (Production)
5xx detected • 3 consecutive failures
Status Pages
Public & private
Acme Cloud Status
3 monitors • 124 subscribers
Current status
All systems operational
Last 30 days
99.99%
Don’t just ask “is it up?”, check “does it work?” with deterministic scripts for APIs and pages. That’s synthetic monitoring: assertions you control, on a schedule.
Helpers available
fetch(),
expect() ▾ ,
and
$() ▾
(HTML parsing).
Assertions first
Fail the monitor when the response is wrong, not just when the server is down.
Examples
Script monitor
// API health + business assertion
const res = await fetch('https://api.example.com/health');
expect(res.status).toBe(200);
const json = await res.json();
expect(json.ok).toBe(true);
expect(json.version).toBeDefined(); Checks
Status + JSON
Output
Pass ✓
// HTML parsing + content check
const res = await fetch('https://example.com/pricing');
expect(res.status).toBe(200);
const html = await res.text();
const $page = $(html);
expect($page.find('[data-plan="pro"]').length).toBeGreaterThan(0); Checks
DOM + selectors
Output
Pass ✓
Run real user flows (login, checkout, onboarding) with page.*. Each run records steps and screenshots.
Example
Login flow
// Playwright-style script (auto-detected)
await page.goto('https://example.com/login');
await page.fill('#email', '[email protected]');
await page.fill('#password', 'test-password');
await page.click('button[type=submit]');
await expect(page.locator('[data-testid="dashboard"]')).toBeVisible(); Run output
Step timeline (goto, click, fill, assertions)
Screenshots attached to each step
Alerts when the flow fails
Test real user journeys
Login flows, checkout, onboarding. If it breaks, you'll know before your users do.
No setup drama. Create a monitor, choose alerts, and get back to building.
Add a URL for website/API uptime monitoring, or write a JavaScript script for deeper checks.
Connect Slack, Discord, email, or webhooks. Route alerts to whoever is on call.
Checks run 24/7. You’ll hear about failures early, and you’ll get the recovery message too.
Quick answers about how UpButler works.
Synthetic monitoring means running scripted, deterministic checks on a schedule. In UpButler, that’s JavaScript script tests (API + HTML assertions) and Playwright browser flows.
Yes. Use HTTP monitoring for simple endpoints, and synthetic monitoring scripts when you need deeper checks (JSON shape, DOM content, business rules).
Yes. If your script uses page.*, it runs as a Playwright browser check. It’s ideal for login flows, checkout, and any “real user journey” you want to validate.
When a check fails, you can notify Slack, Discord, email, or webhooks. You get fast signal when something breaks, and a clear paper trail when it recovers.
UpButler tracks failures as incidents with a timeline. You can see what failed, when it started, and when it recovered. No digging through logs.
Yes. Status pages roll up monitors into a clean, shareable view. Use them for transparency during incidents and to reduce inbound support load.
Start free. Upgrade when you outgrow it.
Perfect for side projects
For serious teams
Create your first uptime monitor in under 60 seconds. No credit card required.