Documentation
Connecting Slack with an incoming webhook
Create a Slack incoming webhook for a channel, add it to AutoPSEO, send a test message, and fix the errors Slack returns when a post fails.
AutoPSEO posts to Slack through incoming webhooks. Slack gives you a URL that writes into one channel, you paste that URL into AutoPSEO, and reports and alerts start arriving there. AutoPSEO itself installs nothing in your workspace: it cannot read messages, list your channels or post anywhere the webhook does not point. Add one entry for each channel you want messages in.
Create the webhook in Slack
Slack issues incoming webhooks through a Slack app. Following Slack's incoming webhook guide:
- Create a Slack app for your workspace, or open one you already use for notifications. Pick a name your team will recognise, such as SEO reports.
- In the app's settings, open Incoming Webhooks and switch on Activate Incoming Webhooks.
- Click Add New Webhook to Workspace, choose the channel and approve. For a private channel you need to be a member of it first.
- Copy the new URL from Webhook URLs for Your Workspace. It starts with
https://hooks.slack.com/services/.
Repeat steps 3 and 4 for every further channel; one app can hold several webhooks. A URL made with Slack's older custom-integration webhooks still works too, although Slack advises moving those to an app.
Slack treats the URL as a secret: anyone who has it can post into the channel. Paste it into AutoPSEO and keep it out of tickets, wikis and screenshots.
Add it to AutoPSEO
- On Slack, Teams & Webhooks, find Slack - Connected workspaces and click Add to Slack. The New channel form opens with Slack already chosen as the destination.
- Name: a label for AutoPSEO's lists, the delivery history and the test message, for example
#seo-alerts. - Webhook URL: paste the Slack URL. For a Slack entry AutoPSEO accepts only
httpsaddresses on slack.com, and says so at once if the URL does not fit. - Click Add channel, then Send test on the new row. A short message naming the entry should appear in Slack within seconds, and AutoPSEO reports how long Slack took to answer.
The URL is stored encrypted (AES-GCM). From then on the list shows only its host and last characters, so choose names that make clear which Slack channel each entry feeds.
Next, give it something to post: a scheduled report or an alert. The Slack - Subscriptions table below the list then shows, per Slack channel, every rule posting there, its schedule and whether it is active or paused.
Several channels and workspaces
A webhook URL belongs to one channel in one workspace, and Slack does not let a message override the channel it was created for. That keeps things predictable:
- One Slack channel, one entry. To split clients between
#client-aand#client-b, create a webhook for each and add both. - Several workspaces work the same way, since each webhook lives in the workspace you created it in.
- One entry can carry many rules. Send the weekly report and the traffic-drop alert to the same entry, or keep alerts in a busier channel of their own.
Why a message did not arrive
Send test shows the reason straight away. For scheduled messages, open Delivery history, which keeps Slack's answer for every failed attempt.
| What AutoPSEO shows | What it means | What to do |
|---|---|---|
| Slack rejected the URL (no_service) | The webhook was removed or disabled in Slack, or the URL is mistyped | Create a new webhook, add it, then delete the old entry |
| The Slack channel no longer exists, or is archived | Slack answered channel_not_found or channel_is_archived | Create a webhook for a channel that is still in use |
| Slack is rate limiting us | Slack answered HTTP 429 | Wait a little, then use Send now or Test rule |
| Timed out after 10 seconds | Slack did not answer in time | Try again later |
| Your trial has ended | No active plan or trial | Choose a plan; scheduled deliveries resume with it |
A failed scheduled report is not sent again in the same period, so use Send now once the cause is fixed. An alert that could not be posted is evaluated again on its next check (when alerts run).
Removing a Slack channel
Delete on the entry's row removes the stored URL and, after a confirmation that tells you how many, every rule that posts there. AutoPSEO changes nothing in Slack: the webhook keeps working until someone removes it in the Slack app, so do that as well if the URL may have been seen by others.