---
title: "Run the main user journeys from outside · Agent Wranglers"
url: https://agentwranglers.se/playbook/operations/alerts-and-on-call/synthetic-journeys
id: OPS-82
level: Recommended
updated: 2026-10-27
build: a2a6bdfed830
tokens: 1062
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Run the main user journeys from outside every few minutes

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Alerts and on-call](https://agentwranglers.se/playbook/operations/alerts-and-on-call.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: OPS-82
- Level: Recommended
- Chapter: [Alerts and on-call](https://agentwranglers.se/playbook/operations/alerts-and-on-call.md)
- Rule: Script the most important journeys, such as sign-in, search and checkout, and run them from outside your network every 5 minutes. Page when the same journey fails twice in a row.
- Check: Each journey listed in the service level document has a script that ran every 5 minutes over the last 7 days. Breaking the checkout button on staging pages the on-call person within 15 minutes.
- How: Metrics from inside only see requests that arrive. A broken DNS record, an expired certificate or a script error in the browser stops visitors before they reach you. Drive a browser, such as with Playwright, through each journey against production, with a test account and test payment details. Run it from at least two places, so one bad network does not page. Mark the test traffic, such as with a header, and leave it out of the service level indicators. The status page reads the same checks, as [Show each part's state on the status page from outside checks](https://agentwranglers.se/playbook/operations/incidents/status-page.md) says. The simple uptime check underneath it is [Watch the service from outside](https://agentwranglers.se/playbook/engineering/running-in-production/monitoring-uptime.md).

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
// Playwright: the checkout journey, run every 5 minutes against production
import { test, expect } from '@playwright/test';

test('checkout works', async ({ page }) => {
  await page.goto('https://shop.example.com/products/test-mug');
  await page.getByRole('button', { name: 'Add to cart' }).click();
  await page.getByRole('link', { name: 'Checkout' }).click();
  await expect(page.getByRole('heading', { name: 'Payment' })).toBeVisible();
});
```

### Python example

```python
# Playwright for Python: the same journey
from playwright.sync_api import sync_playwright, expect

with sync_playwright() as p:
    page = p.chromium.launch().new_page()
    page.goto("https://shop.example.com/products/test-mug")
    page.get_by_role("button", name="Add to cart").click()
    page.get_by_role("link", name="Checkout").click()
    expect(page.get_by_role("heading", name="Payment")).to_be_visible()
```

## Sources

- [Google SRE book, Monitoring Distributed Systems](https://sre.google/sre-book/monitoring-distributed-systems/)
- [Amazon CloudWatch synthetic monitoring](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)

## Related rules

- ENG-24 [Watch the service from outside](https://agentwranglers.se/playbook/engineering/running-in-production/monitoring-uptime.md) in Engineering
- OPS-73 [Show each part's state on the status page from outside checks](https://agentwranglers.se/playbook/operations/incidents/status-page.md) in Operations and observability

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/operations/alerts-and-on-call/synthetic-journeys">Agent Wranglers operations and observability playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Prove that alerts still reach you](https://agentwranglers.se/playbook/operations/alerts-and-on-call/alert-pipeline-heartbeat.md)
- Next: [Watch the status of the services you depend on](https://agentwranglers.se/playbook/operations/alerts-and-on-call/dependency-status.md)
- [Alerts and on-call](https://agentwranglers.se/playbook/operations/alerts-and-on-call.md)
