How Monitors Work
PulseGuard runs on Cloudflare’s global edge network. Every monitor you configure is dispatched to one or more probe locations at the interval you choose. Results feed into latency heatmaps, uptime charts, and the incident lifecycle in real time via WebSocket.Check Intervals
You can configure any interval between 30 seconds and 24 hours. The minimum interval across all plans is 30 seconds. The default interval for new monitors is 60 seconds.Shorter intervals consume more of your plan’s check quota. A monitor checking every 30 seconds uses 2,880 checks per day — versus 144 checks at a 10-minute interval.
Double-Check Protocol
When a check returns a failure, PulseGuard does not immediately open an incident. Instead, it applies a multi-vector verification protocol:1
Initial check fails
The primary probe reports a
DOWN result for your monitor.2
Wait 1 second and retry
PulseGuard waits 1,000 ms and repeats the check from the same probe location to filter out transient network blips.
3
Cross-verify via proxy mesh
If the local retry also fails, PulseGuard routes the check through two additional external proxy vectors. If either vector reports
UP, the failure is classified as a false positive and suppressed.4
Declare downtime
Only when all verification vectors confirm
DOWN does PulseGuard open an incident and fire your configured alerts.DOWN before declaring a global outage. This prevents a single flaky probe from triggering unnecessary alerts.
DNS Fallback
If a check fails due to aDNS_ERROR, PulseGuard attempts to re-reach the host via a cached IP address stored from the last successful check. This avoids false positives caused by transient DNS resolution failures.
Monitor Statuses
Every monitor carries one of four statuses at any given time:UP
The most recent check succeeded and the response passed all assertions.
DOWN
All verification vectors confirmed a failure. An incident is open.
PAUSED
Checking is suspended. No checks run and no alerts fire.
MAINTENANCE
A maintenance window is active. Checks run but failures are suppressed and no incidents are created.
Creating a Monitor
1
Open the dashboard
Navigate to Monitors in the left sidebar and click New Monitor.
2
Choose a monitor type
Select from 15 available types including HTTP, SSL, DNS, Browser, WebSocket, and more. See Monitor Types for a full breakdown.
3
Configure the target
Enter the URL or endpoint you want to monitor. For HTTP monitors this is a full URL including protocol (e.g.,
https://api.example.com/health). For TCP port checks use tcp://host:port.4
Set the interval and timeout
Choose how often PulseGuard should check the endpoint and the maximum number of seconds to wait for a response before marking it as a timeout failure.
5
Add assertions (optional)
Define expectations on the response — status code, body content, or a JSONPath expression. See Response Assertions for configuration details.
6
Select check regions
Choose which geographic regions should run the check. Multi-region monitoring gives you visibility into localized failures. See Regions for the full list.
7
Save and activate
Click Create Monitor. PulseGuard schedules the first check immediately.
Configuration Reference
The following fields are available when creating or updating a monitor via the dashboard, CLI, or API.string
required
A human-readable label for the monitor. Appears in alerts, incidents, and status pages.
string
required
The target endpoint. Use a full URL (
https://) for HTTP/HTTPS monitors, tcp://host:port for port checks, ping://hostname for ICMP ping, or a bare domain for SSL, DNS, and Domain monitors.string
default:"HTTP"
The monitor type. Accepted values:
HTTP, HTTPS, PING, PORT, SSL, DNS, DOMAIN, BROWSER, HEARTBEAT, MCP, GRAPHQL, WEBSOCKET, DATABASE, BGP, SEQUENCE. See Monitor Types.integer
default:"60"
Check frequency in seconds. Minimum:
30. Maximum: 86400 (24 hours). Defaults to 60.integer
default:"10"
Maximum seconds to wait for a response before classifying the check as a timeout failure. Maximum:
30.string
default:"GET"
HTTP method for HTTP/HTTPS monitors. Accepted values:
GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.object
Custom request headers as a JSON object or an array of
{ key, value } pairs. Example: [{ "key": "Authorization", "value": "Bearer token" }].string
Request body for POST, PUT, or PATCH requests. Send raw JSON, form data, or GraphQL query strings.
object
Response assertion rules. Defines expected status codes, body content checks, and JSON path assertions. See Response Assertions for the full schema including all supported fields.
integer
default:"1"
Number of consecutive failures required before PulseGuard opens an incident. Increase this value to suppress alerts for intermittent failures. Defaults to
1.array
A JSON array of region codes specifying which locations should run this check. When omitted, PulseGuard uses its default probe location. See Regions for all available codes.
string
A URL to an internal runbook or incident response document. Included in alert notifications so on-call engineers can jump directly to remediation steps.
Related Pages
Monitor Types
Descriptions of all 15 monitor types and when to use each one.
Regions
Full list of 50 probe locations grouped by continent.
Assertions
Configure status code, body regex, and JSONPath expectations.