Integrations · Slack
Slack analytics alerts: one plain message when something changes
Slack analytics alerts from Skald post one message to your channel each time an alert opens: the site, the title, and the detail with its numbers. One Slack incoming webhook, one tick box, one test.
Slack analytics alerts are messages an analytics tool posts to a Slack channel when a figure crosses a rule. Skald sends its site, AI, crawler and security alerts as the signed webhook event alert.opened, and sends a Slack address Slack's own message shape. One of the Skald integrations; the rules are on web analytics alerts.
30-day free trial · no card · we set it up within one working day · free to self-host
# site-alerts · sample
Skald APP11:40
[example.com] 14 server errors in 10 minutes Requests answered 5xx. The Health tab lists the paths; the Recent requests tab shows each one.
Skald APP07:30
[example.com] First visit ever from a citation in ChatGPT The first visit ever that followed a citation from ChatGPT: 09:14 on Tue 20 Oct, landing on /docs/setup/.
Sample messages. The name and icon are the Slack app's you add the webhook to.
[01] what lands in the channel
A Slack alert for each rule, in plain words
Each alert says its rule and its figures, in visits (people who clicked) or requests (crawlers), never both. Pick an alert to see the message Slack gets. The rules and their thresholds are on web analytics alerts.
pick an alert
Skald APP09:12
[example.com] The site did not answer its heartbeat The 5-minute heartbeat request: its last beats failed. If the log has stopped too, the web server itself is down. Check: curl -I the home page; systemctl status nginx.
Skald's own heartbeat asks your site for a page every 5 minutes. Two misses in a row open the alert.
Skald APP11:40
[example.com] 14 server errors in 10 minutes Requests answered 5xx. The Health tab lists the paths; the Recent requests tab shows each one.
10 or more answers with a 5xx status in 10 minutes, checked on every live run.
Skald APP13:05
[example.com] New crawler or assistant: ExampleAIBot 3 requests today from an agent never seen before.
An assistant, a search crawler or an AI-looking agent never seen on this site, with at least 3 requests.
Skald APP07:30
[example.com] First visit ever from a citation in ChatGPT The first visit ever that followed a citation from ChatGPT: 09:14 on Tue 20 Oct, landing on /docs/setup/. ChatGPT sent 3 visits by citation that day.
From whole days already counted twice, once a day. It starts once Skald has 28 days of history.
Skald APP07:30
[example.com] PerplexityBot has made no request for 7 days PerplexityBot came on 19 of the 28 days before, the last on 13 Oct; none in the 7 whole days since.
An AI or search crawler seen on at least 7 of 28 days has gone quiet. Check robots.txt and your CDN rules.
Skald APP07:30
[example.com] Readers fell to 31 on Tuesday 20 Oct The same weekday's median over the 4 weeks before: 88. Whole days only.
Yesterday's readers under half the usual for that weekday, with a usual of at least 20.
Sample messages, shortened where the full detail runs longer.
[02] set up
Send Skald alerts to Slack in three steps
No Slack sign-in and no code. Slack gives you an address for the channel; Skald posts to it.
You need to be an owner or admin of the site's organisation. The address must start with https://. Each Slack channel has its own address: add one webhook per channel.
Add Slack's incoming webhook
In Slack, add an Incoming Webhook to the channel and copy its address. It starts with
https://hooks.slack.com/.Paste it in Skald, tick alert.opened
Settings › Integrations › Add an outgoing webhook. Paste the address, tick
alert.opened, press Add webhook. Slack does not check the secret, so you can ignore it.Send a test
Press Send a test. A line appears in the channel. Each new alert then posts one message.
[03] two shapes
Slack gets text; any other tool gets every figure
A Slack incoming webhook takes only a short text, so Skald knows a hooks.slack.com address and sends Slack's own shape. Any other address gets the full message, signed, with the figures and their unit.
{"text": "[example.com] 14 server errors in 10 minutes\nRequests answered 5xx. The Health tab lists the paths; the Recent requests tab shows each one."}
X-Skald-Signature: t=<unix seconds>,v1=<hex>
{"event": "alert.opened", "site": "example.com",
"alert": {"id": "server_errors-20261020114012-0",
"cause": "server_errors", "subject": "",
"severity": "high",
"title": "14 server errors in 10 minutes"},
"text": "[example.com] 14 server errors in 10 minutes\n...",
"figures": {"figure": 14, "threshold": 10,
"unit": "requests", "data": null},
"at": "2026-10-20T15:40:12Z"}
Sample bodies. Every message is signed with the webhook's own secret; Slack ignores the signature.
[04] when it posts
One message per alert, never a flood
A channel you learn to mute is worse than none. So each alert posts once, when it opens, and only from figures Skald trusts.
Once, when it opens
alert.openedis sent once for each new alert. Site alerts are checked every 2 minutes; AI and crawler alerts once a day.Retried, then given up
Each delivery has 10 seconds. A failed one is tried again after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours, with the same id, then given up.
Never a person
An alert holds figures and words only: nothing about a person, never a secret. Only
httpsaddresses, never redirected.
[05] more than alerts
AI reading changes and new leads in Slack
The same webhook can tick more events. A sales channel can get every booked demo and every deal won; a content channel the AI alerts, such as an assistant starting or stopping reading a page.
- 10:02 [example.com] conversion.completed demo (completed) from AI assistant landed on /pricing/lead
- 14:30 [example.com] lead.won demo (won) from Search engine landed on /docs/setup/won
- 07:30 [example.com] ChatGPT started reading /compare/plausible/alert.opened · AI
[06] what it does not do
What Slack alerts from Skald do not do
A plain message, posted once. Here is what that leaves out.
What it does not do
- Slack gets plain text only: no buttons, and no reply back to Skald.
- Thresholds are set in the server's config by whoever runs Skald. The dashboard switches each rule on or off per site.
- No "resolved" message to Slack:
alert.openedfires when an alert opens. Site down and logging stopped send their resolved line by mail. - The Integrations page needs team accounts and an owner or admin.
- An alert says what the log showed. Skald does not fix the site or block anything itself.
keep reading
More on Slack analytics alerts
questions
Slack analytics alerts FAQ
Straight answers, including what Skald does not do.
How do I send analytics alerts to Slack?
Add an Incoming Webhook to the Slack channel and copy its address. In Skald, paste it under Settings › Integrations › Add an outgoing webhook, tick alert.opened, press Add webhook, then Send a test. A line appears in the channel, and each new alert posts one message from then on.
Which Skald alerts can post to Slack?
Any alert, when it opens: site down, logging stopped, server errors, a 404 surge, a crawler burst, a new crawler, a traffic drop, the first visit from an AI answer, a crawler gone silent, an assistant starting or stopping reading a page, and the security alerts. Which rules are on is set per site on Site › Alerts.
What does a Skald alert look like in Slack?
One plain text message: the site in brackets and the alert's title on the first line, then the detail with its numbers, in visits or in requests. For example: [example.com] 14 server errors in 10 minutes, then the line that says where to look.
Will Slack get the same alert again and again?
No. alert.opened is sent once for each new alert. A failed delivery is tried again after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours, then given up, and every try carries the same id.
Can conversions go to Slack too?
Yes. Tick conversion events on the same webhook, such as conversion.completed or lead.won. Slack gets one line for each: the site, the event, the action and its stage, the source and the landing page. It never holds a name or an email.
Can alerts go to more than one Slack channel?
Yes. Each Slack channel has its own incoming webhook address. Add each one as its own outgoing webhook in Skald, and tick the events that channel should get.
$ tail -f access.log | skald
See what AI does with your site. Free for 30 days.
No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.