Notifications
Per-deployment notification channels — email, Slack, webhook. HMAC signing for webhooks.
The notification system delivers automated messages to your team across three channels: email, Slack, and webhook. It is currently used by the conversion analysis cron job and is designed to support additional event-driven triggers in the future.
Prerequisites
At least one channel must be configured and enabled before notifications are delivered. The notification system is independent of transactional order emails.
Channels
Reuses the existing email queue pipeline. Notifications are sent from the same fromEmail address configured in Settings → Email Provider. You specify one or more recipient addresses in the Notifications settings.
Configure: enable the email channel and enter a comma-separated list of recipient addresses.
Slack
Sends a plain-text message to a Slack channel via an incoming webhook URL.
Configure: enable the Slack channel and paste your Slack incoming webhook URL. Treat the webhook URL as a secret — anyone with it can post to your channel.
Webhook
Posts a JSON payload to any URL via HTTP POST. An optional HMAC-SHA256 secret can be configured. When a secret is set, Autonnel signs the payload body and includes the signature in the request:
X-Webhook-Signature: sha256=<hex-digest>
To verify on your server:
const crypto = require('node:crypto');
function verifySignature(secret, rawBody, signatureHeader) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
);
}
The payload shape:
{
"purpose": "conversion_analysis",
"subject": "Conversion analysis — last 2 hours",
"body": "...",
"timestamp": "2026-05-11T14:00:00.000Z"
}
HTTP timeout is 10 seconds per attempt. There is no retry on failure; the failure is recorded in the notification log.
Conversion analysis cadence
The conversion analysis cron job runs on a configurable interval (30 minutes to 24 hours, default 2 hours). The interval is set in Settings → Notifications. Each run analyzes recent funnel behavior via the configured LLM and dispatches the summary to all enabled channels.
You can also provide a custom prompt in the settings to prepend to or override the default analysis prompt.
Testing a channel
Each channel has a Test button in Settings → Notifications. Clicking it sends a test event through that channel immediately and records it in the notification log with purpose: "test".
Use the test button after initial configuration to confirm the channel is reachable before the next cron run.
Notification log
Every dispatch attempt — whether from a cron run or a test — is logged with:
| Field | Description |
|---|---|
channel | email, slack, or webhook |
purpose | conversion_analysis or test |
recipient | Email address, Slack webhook URL, or target URL |
status | sent or failed |
error | Error message if failed |
Log rows are retained for 3 days. The notification-log-cleanup cron job removes older rows automatically.
You can view recent logs in Settings → Notifications → Logs.
Permission
The Notifications settings page and its API require the settings.notifications feature permission.
Caveats
- Webhook URLs must be reachable from your deployment. If your server is behind a firewall or on a private network, external webhook targets may not be reachable.
- SSRF in self-hosted deployments. Autonnel does not restrict webhook target URLs in the OSS core. On SaaS deployments, webhook URLs pointing to localhost or private IP ranges are blocked. If you are self-hosting and multiple deployments exist, consider adding your own URL allowlist.
- Slack webhook URLs are credentials. Anyone with the URL can post to your Slack channel. Do not share it publicly or commit it to version control.
- No retry on failure. A failed webhook or Slack delivery is logged but not retried. If a channel is consistently failing, check the log for error details and verify the URL is correct and reachable.
- Email channel requires an active email provider. If no email provider is configured in Settings → Email Provider, email notifications fail even if the email channel is enabled.
Related
- LLM settings — required for conversion analysis to produce output.
- Email provider — required for the email notification channel.
- Orders — Emails — transactional order emails (separate from notifications).