Docs/Analytics

Alerts

Get notified when AI crawler activity changes on your site.

Alerts surface in the Alerts tab of the dashboard. They are computed on each dashboard load — no configuration required.

Alert types

There are five alert types across two sources: the standalone alerts endpoint and the dashboard's inline alert computation.

invisible_content (severity: critical)

Endpoint: GET /api/v1/analytics/{siteId}/alerts

A page is receiving significant bot traffic but has a crawlability score below 30. Bots are visiting content they cannot read.

Trigger: A path has more than 10 crawler visits in the selected period AND a joined crawlability score < 30.

What to do: Run a scan on the flagged path and address the crawlability failures. Common causes are JavaScript-rendered content, missing robots.txt permissions, or blocked resources.

Metadata fields: path, visit_count, crawlability_score


new_bot (severity: info)

Endpoint: GET /api/v1/analytics/{siteId}/alerts

A bot that was not seen in the prior 30 days appeared in the last 7 days.

Trigger: Bot present in crawler_visits in the last 7 days AND absent in the 30-day window ending 7 days ago.

What to do: Review the new bot in the Crawlers tab. If it is an AI training crawler you want to block, add a robots.txt rule. If it is expected, no action needed.

Metadata fields: bot


traffic_spike (severity: warning)

Endpoint: GET /api/v1/analytics/{siteId}/alerts

A page received more than 2× its average daily visit rate in the last 24 hours.

Trigger: recent_count (last 24h visits) > avg_daily × 2, where avg_daily is computed over the last 30 days. Only paths with an established baseline are evaluated.

What to do: Check which bot is driving the spike in the Crawlers tab. A spike from an AI training bot is generally benign. A spike from an unknown bot may indicate scraping.

Metadata fields: path, recent_count, avg_daily


no-data (severity: critical)

Source: Dashboard inline computation

No crawler visits have been recorded more than 72 hours after the site was added.

Trigger: Site age > 72 hours AND totalVisits === 0 AND no recorded lastVisitAt.

What to do: Go to Settings and verify your middleware is installed and deployed. Use the integration test to confirm beacons are reaching the ingest API.


visit-drop (severity: critical)

Source: Dashboard inline computation

No crawler visits received for more than 72 hours after a previously active site.

Trigger: lastVisitAt exists AND hours since lastVisitAt > 72.

What to do: Check that your middleware is still deployed. A deployment that removed or bypassed the middleware is the most common cause.


Alert response format

The standalone alerts endpoint returns:

{
  "alerts": [
    {
      "type": "invisible_content",
      "severity": "critical",
      "title": "Invisible content detected",
      "description": "Bots visited /blog/ai-seo 42 times but your crawlability score is 18/100.",
      "metadata": {
        "path": "/blog/ai-seo",
        "visit_count": 42,
        "crawlability_score": 18
      }
    }
  ]
}

Dashboard-computed alerts (no-data, visit-drop, traffic-drop, traffic-spike, new-bot) include id, severity, category, title, description, stats, actions, and triggeredAt fields.

Query parameters (standalone endpoint)

| Parameter | Type | Default | Max | |-----------|------|---------|-----| | days | integer | 30 | 90 |

Need Help?

Can't find what you're looking for? Reach out and we'll help.