Last updated: March 22, 2026

Overview

Add specific URLs to persistent monitoring. Each monitored URL is automatically re-validated on a schedule, with dedicated tracking, change detection, and alerting.

How It Works

1. User adds URLs to the monitoring list
2. Each URL gets a configurable scan frequency
3. ValidGraph runs scheduled validations
4. Results are tracked and compared over time
5. Alerts fire on regressions or new errors

Tier Availability

| Tier | Max Monitored URLs | Frequency Options |
|——|——————-|——————-|
| Free | — | — |
| Pro | — | — |
| Agency | 50 | Daily, Weekly |
| Enterprise | 200 | Hourly, Daily, Weekly |

Automated Re-scans: The engine that powers scheduled monitoring
Schema Change Detection: Diff view for monitored URL changes
Sitemap Auto-Import: Bulk-add URLs from sitemap

Quick Start: Add Your First Monitored URL

Step 1: Add a URL to monitoring

curl -X POST https://api.validgraph.io/wp-json/validgraph/v1/monitoring 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -H "Content-Type: application/json" 
  -d '{
    "url": "https://example.com/article-1",
    "frequency": "daily",
    "label": "Homepage Article"
  }'

Step 2: Configure frequency (Agency: daily/weekly; Enterprise: hourly/daily/weekly)

Step 3: View monitoring dashboard — See all monitored URLs and their last scan results

Step 4: Set up email alerts (optional) — Get notified of regressions or new errors

Example workflow:
Your product pages validate with score 85. Set daily monitoring to catch when deployments cause regressions. If score drops below 80, receive email alert.

Technical Details

CRUD API for Monitoring

Create monitoring

POST /wp-json/validgraph/v1/monitoring

Request:

{
  "url": "https://example.com/product",
  "frequency": "daily",
  "label": "Product Page",
  "alert_on_score_drop": true,
  "alert_threshold": 5,
  "alert_recipients": ["[email protected]"]
}

Response:

{
  "success": true,
  "data": {
    "monitoring_id": "mon_abc123",
    "url": "https://example.com/product",
    "frequency": "daily",
    "status": "active",
    "created_at": "2024-03-20T10:00:00Z",
    "next_scan": "2024-03-21T10:00:00Z",
    "last_scan": null,
    "last_score": null,
    "label": "Product Page"
  }
}

List monitored URLs

GET /wp-json/validgraph/v1/monitoring

Response:

{
  "success": true,
  "data": {
    "total": 25,
    "limit": 50,
    "monitored_urls": [
      {
        "monitoring_id": "mon_abc123",
        "url": "https://example.com/product",
        "frequency": "daily",
        "status": "active",
        "last_scan": "2024-03-20T10:15:00Z",
        "last_score": 85,
        "last_validation_id": "val_scan_456",
        "next_scan": "2024-03-21T10:00:00Z",
        "alert_rule_ids": ["alert_rule_xyz"]
      },
      {
        "monitoring_id": "mon_def456",
        "url": "https://example.com/article",
        "frequency": "weekly",
        "status": "active",
        "last_scan": "2024-03-19T15:30:00Z",
        "last_score": 72,
        "next_scan": "2024-03-26T15:30:00Z"
      }
    ]
  }
}

Get specific monitoring

GET /wp-json/validgraph/v1/monitoring/mon_abc123

Update monitoring

PUT /wp-json/validgraph/v1/monitoring/mon_abc123
{
  "frequency": "weekly",
  "alert_threshold": 10
}

Delete monitoring

DELETE /wp-json/validgraph/v1/monitoring/mon_abc123

Frequency Behavior

Agency tier:
– Daily: Rescans every 24 hours at same UTC time
– Weekly: Rescans every 7 days at same UTC time
– Cron expression: Pro tier rescans last 10 URLs weekly; Agency rescans all monitored URLs

Enterprise tier:
– Hourly: Rescans every 60 minutes
– Daily: Rescans every 24 hours
– Weekly: Rescans every 7 days
– Cron expression: Enterprise rescans all monitored URLs at specified frequencies

Monitoring Status Indicators

| Status | Meaning |
|——–|———|
| Active | URL is being monitored; next scan scheduled |
| Paused | Monitoring temporarily disabled |
| Failed | Last scan failed (URL unreachable, timeout, etc.) |
| Checking | Scan currently in progress |

Monitoring with Alert Integration

When creating monitoring with alerts:

{
  "url": "https://example.com/article",
  "frequency": "daily",
  "alerts": {
    "on_score_drop": true,
    "score_threshold": 5,
    "on_new_errors": true,
    "on_validation_failure": true,
    "recipients": ["[email protected]", "[email protected]"]
  }
}

Alerts fire when:
– Score drops by threshold (e.g., 85 → 80)
– New validation errors detected
– URL becomes unreachable
– Validation timeout/failure

References

REST API Best Practices: https://restfulapi.net/
Cron Expression Guide: https://crontab.guru/
URL Monitoring Standards: https://tools.ietf.org/html/rfc3986
Schema.org Validation: https://schema.org/
JSON-LD Best Practices: https://json-ld.org/learn