Skip to main content

Overview

SEO alerts tell you when something changes for a site: a tracked keyword drops, a strong domain stops linking to you, a site audit finds new errors, Google’s AI answers stop citing you, or traffic moves far outside its normal range. Every alert lands in the SEO Suite → Alerts feed. Rules decide which alerts are also sent out, where, and how often. Rules are set per site under Settings → Site → SEO Alerts. The Rules button on the Alerts page opens the same screen.

How rules work

Every rule starts off. Turn a rule on, then choose where its alerts go. Changes save as you make them.
Alerts are part of the SEO module, so they need a plan that includes it. Rank, backlink and audit alerts also need those checks running for the site.

Alert kinds

The kind column is the value a webhook receives.

Webhooks

A webhook turns an alert into an HTTP request to a URL you control, so you can route it into your own tooling: a ticket, a chat message, a dashboard, a spreadsheet, an automation.

Setting it up

1

Turn the rule on

A webhook only fires for a rule that is on. Email and Slack can stay off.
2

Enter the URL

Paste an https:// URL on a public host into the rule’s Webhook URL field. Plain http:// is not accepted, and private or local addresses (localhost, 10.x, 192.168.x, and so on) are rejected. The field saves when you leave it.
3

Send a test

Click Send test on the row. Your endpoint receives the payload below with "test": true, and the app shows the HTTP status your endpoint answered with.
Each rule has its own URL, so different kinds can go to different places. The same URL on several rules is fine; use the kind field to tell them apart.

When it fires

As soon as the alert is detected, one request per alert, even when the rule’s email and Slack delivery is a daily or weekly digest. Webhooks are never batched.

The request

Titles and messages are written for people and may change wording; branch on kind and severity, not on text.

Responding, retries and timeouts

  • Answer with any 2xx status within 10 seconds. The body is ignored.
  • Redirects are not followed; point the URL at the final endpoint.
  • A non-2xx answer or a timeout is retried three more times with increasing delays. After that the alert is still in the feed, but the webhook is not attempted again.
  • A URL that stops passing the checks above (no longer https, or resolving to a private host) is not retried.

Security and idempotency

Requests are not signed. Treat the URL as a secret: use a long random path or a token in the query string, and reject requests whose X-Sight-Event header is not seo.alert. There is no delivery id in the payload. If a retry reaches you after a slow but successful first attempt, you may see the same alert twice; dedupe on site.id, kind, title and occurredAt.

Example receiver

A minimal Next.js route handler:
Keep the handler fast: queue slow work and answer first.