Report Delivery Channels
Post a summary of each approved client report to a Slack channel, or to your own system through a signed JSON webhook.
Delivery channels post a short summary of each approved report somewhere other than email: a Slack channel the client or your team watches, or your own system through a webhook. Email stays the main way a client receives a report; a channel is a second copy for the people who live in Slack, or for an integration you have built.
Where to find it
Open a client, click Client Reports, and find the Delivery channels card under the history list. Each client has its own channels.
Slack
Slack delivery uses an incoming webhook, which you create in Slack and paste into RankNest.
- In Slack, create an incoming webhook for the channel you want and copy its
URL. It starts with
https://hooks.slack.com/. - In the Delivery channels card, choose Slack, give the channel a label such as "Client channel", paste the URL, and click Add.
- Click Test. A test message arrives in the Slack channel within a few seconds.
From then on, every report that reaches Ready and is approved posts a message with the client name, the period, the headline numbers and a link to the report.
Note: RankNest stores the webhook URL encrypted and shows only its first part in the list. If you need to change it, remove the channel and add it again.
Webhook
A generic webhook sends the same summary as JSON to a URL you control, so you can file reports in a CRM, a project tool or anything else.
- Choose Webhook, enter a label and the URL (it must use
https), and click Add. - RankNest shows a signing secret. Store it in the system that will receive the webhook.
- Click Test and confirm your endpoint received the request.
Warning: This is the only time RankNest shows this key. Copy it somewhere safe before you close the dialog. If you lose it, you will need to create a new one.
Each request is a JSON POST with three extra headers:
X-RankNest-Event: what happened, such as a report becoming ready.X-RankNest-Timestamp: when the request was sent.X-RankNest-Signature: an HMAC-SHA256 signature of the timestamp, a dot, and the raw request body, using your signing secret, formatted assha256=<hex>.
Check the signature before trusting a request, and reject requests whose timestamp is more than a few minutes old. Your endpoint should answer with any 2xx status within a few seconds; RankNest does not follow redirects.
Managing channels
Each channel in the list shows its last delivery status. You can:
- Test: send a test delivery now.
- Pause or Resume: stop deliveries without removing the channel.
- Remove: delete the channel.
If a delivery fails, the channel shows the error from the last attempt. Fix the endpoint and click Test to confirm it works again.
Tips
- Give each channel a label that says where it goes. "Acme #seo-reports" is easier to recognise in six months than "Slack".
- Post to a channel the client shares with you rather than to the client's own workspace. You see the delivery, and the thread is a natural place to discuss the report.
- Channels post only approved reports. If you hold scheduled reports for approval, nothing reaches Slack until you approve. See Scheduling & Email.
Troubleshooting
Test says the URL is not accepted. Slack URLs must start with
https://hooks.slack.com/. Webhook URLs must use https and point at a public
address; private and local addresses are refused.
Deliveries worked, then stopped. Open the channel's last error. A Slack webhook that was deleted in Slack returns a not-found error; create a new one and add it again.
My endpoint rejects the signature. Sign the timestamp, a literal dot, and the raw body exactly as received, before any JSON parsing or re-formatting, and compare against the header in constant time.
Related
Last updated 2026-10-16