Your server says 200.
Your checkout says no.

Playwright-based synthetic monitoring. VerLake runs your login, checkout and API checks against production every minute, alerts you when one breaks, and shows you the exact step that failed and why.

No credit cardFirst monitor in 5 minutesBilled per second
!checkout-flow is failing

Failed 3 runs in a row on production. Step 4: "Place order" stayed disabled.

✓checkout-flow recovered

Passing again after 11 min. All 5 steps in 2.3s.

app.verlake.com/monitors/checkout-flow
Monitors30-day uptime
checkout-flow RUNNING
login-sso 99.98%
search-results 99.91%
api · /health/deep 30s
agent-desktop-login 100%
Run #4,812production · Chromium
Open storefront412ms
Sign in as test customer1,180ms
Add "Trail Runner 2" to cart640ms
Click "Place order"30,000ms
See order confirmation—
› waiting for browser…
✦ AI failure summary"Place order" never became enabled. TypeError: cannot read 'taxRate' of undefined in checkout.3f9a.js, which was deployed 14 min ago. Check /api/tax/quote.

If it runs in a browser, VerLake can watch it

Shopify storefrontsStripe CheckoutOkta & Auth0 SSOSalesforceGenesys Cloud agent desktopAmazon Connect CCPZendeskHubSpot formsYour React SPAInternal admin toolsCustomer portalsREST & JSON APIs
Synthetic monitoring vs uptime checks

Same outage.
Two very different dashboards.

A JS bundle throws, a button stays disabled, an SSO redirect loops, and the server keeps answering 200. Ping checks can't see any of it.

Uptime ping UP

200 OK
GET shop.example.com · 142ms
  • Server responded
  • TLS certificate valid
  • No idea whether anyone can buy anything
VS

VerLake journey PASSING

5/5
checkout-flow · 2.4s · real Chromium
  • Signed in
  • Added to cart
  • Order placed and confirmed
Synthetic monitoring, explained

What is synthetic monitoring?

Synthetic monitoring runs scripted checks against your application on a schedule, from outside, the way a customer would, so you find out a flow is broken before real users hit it.

Uptime monitoring asks "does the server answer?". Synthetic monitoring asks "can someone actually sign in, search and pay?". VerLake runs those scripts as real Playwright browser journeys and fast API checks, and keeps a timeline of every run.

Synthetic monitoringReal user monitoring (RUM)
TrafficScripted, on a scheduleReal visitors
Finds problemsBefore users do, even at 3 am with zero trafficAfter users hit them
Best forCritical flows, SLAs, pre-release checksPerformance across real devices
🧭
Browser journey checksMulti-step flows in real Chromium: login, search, checkout, onboarding.
⚡
API checksStatus, latency, headers and body assertions, as often as every 30 seconds.
🔐
Login & SSO monitoringOAuth redirects, MFA screens and domain-restricted sign-ins.
🎧
Agent desktop monitoringContact-center agent login and softphone readiness, browser side only.
The synthetic monitoring platform

Everything between
"it broke" and "it's fixed".

Real browser journeys

Real Chromium drives your real UI: SPAs, OAuth redirects, multi-step forms. Playwright's auto-waiting keeps false alarms down. You see every step's timing, the console output and the exact error.

  • 1 · goto /login✓ 412ms
  • 2 · fill credentials & submit✓ 1,180ms
  • 3 · expect dashboard data visible✓ 640ms

Alerts that mean it

Get told after N consecutive failures, not on every blip, and again when it recovers.

●checkout-flow failing02:15
●checkout-flow recovered02:26

API checks every 30s

Assert on status, latency, headers and body. A fast tripwire in front of your journeys.

200184ms

Test it, watch it back

Every test run in the editor returns screenshots and a video replay, so you know the journey works before you schedule it.

▶ 0:070:11

AI writes it, AI explains it

Describe a flow and get a Playwright script. When a run fails, get the likely root cause and what to check next. Uses your own AI API key.

Log in, open billing, check the invoice table loads
Here's a script with 4 steps and waits on the table rows…

Status pages with incidents

A branded public page (logo, colour, custom CSS) fed by your monitors, with incident posts and updates. Growth plan and up.

CheckoutOperational
LoginOperational

Environments & your own repo

One script, every environment: variables are injected as process.env. Already have a suite? Point VerLake at your GitHub or Bitbucket repo and a npx playwright test command.

● production● staging● eu-tenant● acme-uat

Teams, roles, tokens

Owner, Admin, Editor and Viewer roles. Google or GitHub sign-in, domain-restricted joining, and personal access tokens for scripting.

A spend cap, built in

Usage billing without the surprise bill. Set a ceiling and runs stop before you pass it.

$64 usedcap $100
Playwright monitoring in 3 steps

If it runs in Playwright,
it runs on VerLake.

01

Write it, generate it, or bring it

Use the editor, describe the flow to the AI assistant, or point at your repo. Hit Test and watch the video replay.

02

Point it at an environment

Production, staging, per-tenant. URLs and credentials arrive as process.env, so one script covers every target.

03

Schedule it and get alerted

Journeys every 1 to 60 minutes, API checks every 30 seconds. Alerts after N consecutive failures, plus the step, console output and AI summary for every run.

import { test, expect } from '@playwright/test';

test('customer can check out', async ({ page }) => {
  await page.goto(process.env.APP_URL);
  await page.getByLabel('Email').fill(process.env.TEST_USER);
  await page.getByLabel('Password').fill(process.env.TEST_PASS);
  await page.getByRole('button', { name: 'Sign in' }).click();

  await page.getByText('Trail Runner 2').click();
  await page.getByRole('button', { name: 'Add to cart' }).click();
  await page.getByRole('button', { name: 'Place order' }).click();

  await expect(page.getByText('Order confirmed')).toBeVisible();
});
# Same script, different targets → process.env.*

production
  APP_URL   = https://shop.example.com
  TEST_USER = synthetic+prod@example.com
  TEST_PASS = ••••••••   # secret

staging
  APP_URL   = https://staging.shop.example.com
  TEST_USER = synthetic+stg@example.com

# or run straight from your repo
repo      github.com/acme/e2e
command   npx playwright test --grep @prod
monitor   checkout-flow
journey   checkout.spec.js
env       production
every     5 min
timeout   60 s             # 1–300 s
alert     after 3 consecutive failures
          + when it recovers

api check /health/deep  every 30 s
  assert status == 200
  assert latency < 800 ms
  assert body contains "db":"ok"
Chromium · timeout 1–300s per run
0s
fastest API check interval
0
MCP connector tools
0d
run history on Scale
$0
for time spent in the queue
MCP connector

Ask your AI assistant
what broke overnight.

Add VerLake to any MCP-compatible AI assistant or coding agent with a few lines of config. It reads your dashboard, runs and queue, and can create, pause, resume or run monitors when you ask.

mcp config
{
  "mcpServers": {
    "verlake": {
      "type": "http",
      "url": "https://app.verlake.com/api/mcp",
      "headers": { "Authorization": "Bearer vlk_pat_YOUR_TOKEN" }
    }
  }
}
get_dashboardlist_monitorsget_monitorlist_runsget_runlist_projectsget_projectlist_environmentsget_environmentget_queue_statuscreate_monitorupdate_monitorduplicate_monitorpause_monitorresume_monitorrun_monitor_now
Anything fail overnight in production?
list_runs · status=FAILED · since 00:00
Two failures, both checkout-flow, at 02:10 and 02:15. "Place order" never enabled, with a TypeError in checkout.js. Passing again since 02:20, after the rollback.
Duplicate it for staging and run it now.
duplicate_monitor → run_monitor_now
Created checkout-flow (staging). It passed all 5 steps in 2.3s.
Journey monitoring use cases

The flows that cost you
money when they break.

Login flow monitoring: know sign-in works before users try it

SSO redirects, MFA screens and feature-flagged dashboards are where "it works on staging" goes to die.

  • Sign in through OAuth pop-ups and redirects
  • Check the dashboard loads data, not a spinner
  • Run the same journey against every tenant
  • Publish the result on a status page
Login and SSO monitoring →
await page.getByRole('button', { name: 'Continue with Google' }).click();
// SSO pop-up handled by Playwright
await expect(page.getByTestId('revenue-chart')).toBeVisible();
await expect(page.getByText('No data')).not.toBeVisible();

Checkout monitoring: every broken minute is lost revenue

Payment widgets, tax services and inventory calls: third parties you don't control but still get blamed for.

  • Search, add to cart, reach payment
  • Catch a disabled "Place order" before customers do
  • API check on pricing every 30 seconds
  • A step timeline that shows which dependency slowed down
More on checkout monitoring →
await page.getByPlaceholder('Search').fill('trail runner');
await page.keyboard.press('Enter');
await page.getByRole('button', { name: 'Add to cart' }).first().click();
await expect(page.getByRole('button', { name: 'Place order' })).toBeEnabled();

Agent desktop monitoring for Genesys Cloud & Amazon Connect

When the agent desktop won't load at 8:55 am, the whole floor sits idle. Script the agent's first five minutes and run them every few minutes.

  • Agent sign-in to the Genesys Cloud or Amazon Connect CCP
  • Softphone panel and queues render
  • Set status to Available and verify it sticks
  • Separate environments per region or business unit
VerLake tests the agent's browser desktop. It does not place or test voice calls or IVR menus.
More on agent desktop monitoring →
await page.goto(process.env.CCP_URL);
await page.getByLabel('Username').fill(process.env.AGENT_USER);
await page.getByLabel('Password').fill(process.env.AGENT_PASS);
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page.getByText('Available')).toBeVisible({ timeout: 20_000 });

Run Playwright tests on a schedule, without babysitting cron

A scheduled workflow or a cron box works right up until it silently stops, and nobody notices the checks aren't running.

  • Point VerLake at your repo and your command
  • 30–365 days of run history, depending on plan
  • 30-day uptime and trend per project
  • Pay only for the seconds the browser runs
# before: .github/workflows/e2e-prod.yml
on:
  schedule:
    - cron: '*/5 * * * *'  # best effort, may be delayed

# after: VerLake monitor
repo     github.com/acme/e2e
command  npx playwright test --grep @prod
every    5 min   alert after 3 failures
Schedule Playwright tests without cron

VerLake or a cron job?

Most teams start by running Playwright on a schedule themselves. Here's what that costs in practice.

Cron on a VMGitHub Actions scheduleVerLake
Shortest intervalWhatever you configure5 min, best effort30s API · 1 min journeys
AlertingBuild itWorkflow failure email✓ After N failures + recovery
Browser infrastructureYou patch and scale itCold start every run✓ Pooled Chromium, managed
History and uptime %Build itLog retention only✓ 7–365 days, 30-day trend
What failed, in one screengrep the logsScroll the job log✓ Step, console, AI summary
Customer status pageNoNo✓ With incidents
Ask it from your AI assistantNoNo✓ 16 MCP tools
5 × 30s journeys every 30 minVM plus your timeRunner minutes plus your time$29/mo
Synthetic monitoring pricing

Pay for browser seconds,
not seats.

Same product on every plan. You pay for the time a browser actually runs your checks. Queue time is free.

A login check usually takes 5–15s, a full checkout 25–60s, and an API check about 1s.

—
execution-seconds / month · — checks
Best fit—

Free

$0

Prove it on a real journey

  • 40,000 seconds, one time
  • About 800 checks
  • 7-day history
  • 1 member
  • AI assistant (your own key)
Start free

Starter

$29/mo

Your critical paths, covered

  • 400,000 seconds/month
  • About 8,000 checks
  • 30-day history
  • 3 members
  • Email support
Choose Starter
POPULAR

Growth

$99/mo

For teams that ship daily

  • 1,500,000 seconds/month
  • About 30,000 checks
  • 90-day history
  • Unlimited members
  • Public status pages
  • Priority email support
Choose Growth

Scale

$249/mo

Broad coverage, tight intervals

  • 4,000,000 seconds/month
  • About 80,000 checks
  • 365-day history
  • Unlimited members
  • Dedicated support channel
Choose Scale

Beyond your plan: $0.10 per 1,000 seconds, with a spend cap you control. SSO/SAML, volume pricing or dedicated infrastructure? Talk to us →

Reliability, in the open

Who monitors the monitor?

You're trusting us to be awake when your product isn't. Here's exactly how a check gets run.

Schedulerevery 30s–1h Durable queuenever dropped Worker fleetdrains on deploy Pooled Chromiumfresh context/run Results & AI Alerts Status page
01 · QUEUE

Every run is queued durably

Scheduled runs go onto a message queue before a worker takes them. A busy or restarting worker can delay a check but never loses it.

02 · DEPLOYS

We drain, we don't kill

When we ship, workers finish in-flight runs before stopping, and new runs wait in the queue. Our deploys never become your false alarms.

03 · ISOLATION

A fresh browser context per run

No cookies, cache or session leak between runs or between customers. Hard timeouts (1–300s) on every run, and a visible banner if the queue ever falls behind.

Shipping next

What we're building next.

NEXT

Slack & webhooks

Send the same alerts to the channels your on-call team already watches.

NEXT

Replay every failure

Screenshots and video kept for failed scheduled runs, not only editor tests.

LATER

Multi-region

Run the same journeys from several locations and compare results by region.

FAQ

Straight
answers.

Something else? info@mindslake.com. A human reads every email.

What is synthetic monitoring?

Synthetic monitoring runs scripted checks against your application on a schedule, from outside, so you find out a flow is broken before real users hit it. VerLake runs those scripts as real Playwright browser journeys and API checks.

How is synthetic monitoring different from uptime monitoring?

Uptime monitoring checks that a URL answers, usually with HTTP 200. Synthetic monitoring performs the multi-step journey a user would, such as logging in or checking out, so it catches failures where the server is up but the product is broken.

What exactly is an execution-second?

One second of a browser (or HTTP client) actually running your check. A 30-second journey uses 30 seconds. Time waiting in the queue is never counted.

How do alerts work?

Choose how many consecutive failures count as "down", so one flaky run doesn't page you. VerLake tells you when the monitor starts failing and again when it recovers.

How often should synthetic checks run?

Revenue-critical journeys such as login and checkout usually run every 1 to 5 minutes, and supporting flows every 15 to 60 minutes. API checks can run every 30 seconds as a fast tripwire.

Do I need to know Playwright?

No. Describe the flow in plain English and the AI assistant writes the script, then helps fix it using your last test run. The assistant uses your organization's own AI API key, which you add in settings.

Can I use my existing Playwright tests?

Yes. Paste a spec into the editor, or connect a GitHub or Bitbucket repository and give VerLake the command to run.

What do I see when a check fails?

The step that failed, how long every step took, the browser console output, the error, and an AI summary of the likely root cause. When you test a journey in the editor, you also get screenshots and a video replay.

How does per-second pricing compare with per-check pricing?

Many tools charge per check run regardless of how long it takes. VerLake charges for the seconds a check actually runs, so short checks cost less and you never pay for queue time.

What happens at my spend cap?

Runs stop before you pass it, so you never get a bill you didn't agree to. You can raise the cap or change plan at any time.

Do you test phone calls or IVR?

No. VerLake tests what happens in a browser, including agent desktops like the Genesys Cloud UI or the Amazon Connect CCP. It doesn't place calls or navigate voice menus.

Can an AI assistant manage my monitors?

Yes. VerLake includes an MCP connector. Create a personal access token, add VerLake to any MCP-compatible AI assistant, and it can list runs, summarise failures, and create, pause or run monitors for you.

Find out what your users see.
Before they tell you.

40,000 free seconds: about 800 real checks on your real product. No credit card.

Start free: 40,000 seconds