Alerts and automation
CueScout in n8n
n8n's Webhook node takes the POST and hands the body to the rest of the workflow. Everything on the Zapier and Make pages applies here, with one addition worth the paragraph: n8n is usually self-hosted on a URL you control, which is exactly the case where verifying our signature is worth the five minutes.
The signature is an HMAC-SHA256 of the raw body under the secret shown on your settings screen, sent in X-CueScout-Signature. Verifying it means a public endpoint cannot be fed a fake reading by anyone who guessed the path.
Where the URL comes from: A workflow starting with the Webhook node, POST method
Setting it up
1.Add a Webhook node set to POST
Copy the production URL rather than the test one — the test URL only listens while the editor is open, which is a good way to conclude the integration does not work.
2.Paste it into CueScout with the generic format
Settings → Webhook. Press the test button and confirm the execution appears in n8n.
3.Verify the signature in a Code node
Compare against the raw body, not a re-serialised object — JSON.stringify of a parsed body reorders nothing on most inputs and will bite you eventually. n8n's Webhook node keeps the raw body when "Raw Body" is enabled.
Code node
const crypto = require('crypto'); const secret = $env.CUESCOUT_WEBHOOK_SECRET; const raw = $input.first().binary ? $input.first().binary.data.toString() : JSON.stringify($input.first().json); const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(raw).digest('hex'); const got = $input.first().headers['x-cuescout-signature']; if (expected !== got) throw new Error('bad signature'); return $input.all();
What arrives
One POST a week. Every field is top-level, because a nested object costs you a mapping step for no benefit. visibility_pct and delta are the two worth building a filter on.
Request body
{
"event": "weekly.moved",
"sent_at": "2026-08-14T09:00:00Z",
"product_id": "5f0e…",
"product": "Acme",
"headline": "You are in 41% of AI answers, down 6 points on the previous window.",
"detail": [
"Rival turned up for \"best tool for x\", where you are absent.",
"Your page \"The guide\" is now being cited."
],
"url": "https://cuescout.com/insights/geo",
"visibility_pct": 41,
"delta": -6,
"questions": 8,
"answers": 11,
"low_sample": true
}What this does not do
- The signature covers the exact bytes we sent. Verifying against a re-serialised body works until the day it does not.
- n8n's test URL only listens while the editor is open. Use the production URL for the weekly delivery.
- One destination per product, and one event: the weekly what-moved reading. There is no per-event subscription list.
- It fires once a week, with the digest email. This is not a real-time feed.
- No retries. A failed delivery is recorded with the destination's own error text on the settings screen, and the next attempt is next week.
- Delivery history is the last attempt only. There is no log to page through.
Frequently asked questions
Can n8n run the CueScout MCP server instead?
That is a different thing and this page is not it. The MCP server is a stdio process for AI clients; what n8n receives here is a plain webhook.
How often does it fire?
Once per week per product, at the same time the digest email goes out. The email decides there is something worth saying and the webhook rides that decision, which is also why it cannot double-send.
How do I know it is really CueScout?
Every request carries an X-CueScout-Signature header: an HMAC-SHA256 of the exact body, under a secret shown on the settings screen. Verify it if your endpoint is public — otherwise the URL is the only thing protecting your numbers from anybody who guesses it.
What happens if my endpoint is down?
The delivery is recorded as failed, with whatever your server said, and nothing is retried. You will see it on the settings screen; the next message is next week.
Related
Zapier
Catch Hook, then map visibility_pct and delta into whatever you already run.
Alerts and automationMake
A custom webhook module, then whatever your scenario already does.
Alerts and automationSlack
A formatted weekly message: the number, which way it moved, and who turned up where you are not.
Run the checks on your own site
The readiness check is free, needs no signup, and takes about half a minute. It works out what your site is built on and gives you the fixes written for it.