How to get Slack alerts when a client's SEO breaks

Add your Slack incoming webhook to the site you want watched, and every confirmed change reaches your channel: a severity color bar, what changed, the before and after values, and a link to the incident. The webhook is pinned to hooks.slack.com, stored encrypted, and a test alert shows every channel reporting back. Telegram and email go out too.

How do you connect a Slack webhook?

In the app, open the alerts settings and find the Slack notifications card for the site. Paste a Slack incoming webhook URL and save. The field accepts exactly what Slack issues: an https URL onhooks.slack.com, at most 512 characters. To stop Slack for a site, save the field empty.

The card exists per site, not per account, because the useful setup is usually one client channel per client site: an incident for one client's domain should not land in another client's channel.

What does the Slack alert actually contain?

The message is built from the same alert context as the email and the Telegram message, so the three cannot disagree about what changed. It carries a color bar set by severity, a headline with the verdict and the URL, the value before the change and the value after it, and the UTC detection time. When the app URL is configured there is a link that opens the incident directly.

Two details worth knowing. A page that stops answering is reported as no reply to our check, because that is the honest description: the page may be down, or our check may have been blocked, and the alert does not pretend to know which. And when a change resolves, a second message arrives with the verdict Resolved, so a channel that was quiet because everything is fine looks different from a channel that was quiet because nobody looked.

What happens if Slack is down or a webhook is revoked?

The other channels still fire. Telegram goes out first, then email, then Slack, and every channel is attempted even when an earlier one fails, so a Slack outage never suppresses the alert you were actually paying for. Failed channels are retried, and per-channel delivery records keep a retry from sending the same channel twice. Email is the durable record: it always goes out, and it is the copy you can forward.

This is also why a webhook that silently receives nothing is treated as the dangerous failure. A revoked webhook looks, from your side, exactly like a quiet week.

Is the webhook URL stored safely?

It is encrypted at rest with AES-256-GCM before it reaches the database, under a key separate from the application. Three consequences follow from the code rather than from policy: the plaintext never lands in the alerts table, which records only that the Slack channel was sent; a decrypt failure is logged without the ciphertext; and if the encryption key is not configured at all, the Slack channel is disabled rather than left to fail halfway through a delivery.

The host pin is part of the same story. Webhooks are accepted only onhooks.slack.com, over https, with no port and no userinfo, because a field that accepted any URL would let a signed-in user turn an alert channel into a request aimed at our own infrastructure.

Which plans include Slack alerts?

Both of them. Slack is not a plan tier: it is a per-site setting, and no plan gate sits between a paying account and the webhook field. The plan comparison names Telegram and email because those ship with every account, and Slack is the opt-in channel you add yourself, on Starter and Agency alike.

How do you test it without waiting for a real disaster?

A test alert sends a real message through every configured channel, rate limited to five an hour per account because each one is a real outbound message. The result comes back per channel, in words a person can act on, and a missing Slack channel in the results is the answer rather than a mystery. Run it after pasting the webhook, not after the first incident.

Questions

How do I get Slack alerts when a client's SEO breaks?
Add your Slack incoming webhook to the site you want watched, and every confirmed change reaches your channel: a severity color bar, what changed, the before and after values, and a link to the incident. The webhook is pinned to hooks.slack.com, stored encrypted, and a test alert shows every channel reporting back. Telegram and email go out too.
What does the Slack alert actually contain?
One message per confirmed change, built from the same alert context as the email and the Telegram message. It carries a color bar set by severity, a headline with the verdict and the URL, the value before and the value after the change, a link to the incident when the app URL is configured, and the UTC detection time. When a change resolves, a second message arrives with the verdict Resolved and a green color bar.
What happens if Slack is down or a webhook is revoked?
The other channels still fire. Every channel is attempted even when an earlier one fails, and failed channels are retried, with per-channel delivery records so a retry never sends the same channel twice. Telegram goes out first, then email, then Slack. A webhook that silently receives nothing is the failure this feature most wants to avoid, which is why the test alert reports per channel rather than as one lump result.
Is the webhook URL stored safely?
The URL must be https on hooks.slack.com, at most 512 characters, and it is encrypted at rest with AES-256-GCM before it touches the database. The plaintext never lands in the alerts table, which records only that the slack channel was sent, and a decrypt failure is logged without the ciphertext. An unset encryption key disables the Slack channel rather than failing it.
Which plans include Slack alerts?
Both. Slack is not a plan tier: it is a per-site setting, and no plan gate sits between a paying account and the webhook field. The plan comparison names Telegram and email because those ship with every account, and Slack is the opt-in channel you add per site on either plan.
How do you test it without waiting for a real disaster?
A test alert sends a real message through every configured channel, rate limited to five an hour per account, and returns a per-channel result in words a person can act on rather than a raw provider error. If the Slack channel is missing from the results, that is the answer, not a mystery.