节点与集成
Approvals
With the Message > Send and Wait for Response operation, approvers can approve or decline directly inside Slack. No browser page opens: the workflow resumes as soon as someone responds, and the output records who responded.
How it differs from link buttons
| What | Link buttons (default) | Approvals in Slack |
|---|---|---|
| Where the decision happens | Opens an n8n page in the browser | One click inside Slack |
| Who can respond | Anyone who can click the link | Only the approvers you list (an empty list lets anyone who can see the message respond). Anyone else gets a private note you can word yourself, and the workflow keeps waiting. |
| Output | approved and respondedAt |
Adds who responded (ID, name, username, and email) plus the channel and message |
| The message after the decision | Unchanged. The buttons stay clickable, but later clicks show a "no action required" page. The first decision stands. | Your choice: show the outcome and remove the buttons (default), remove the buttons only, or leave the message unchanged |
| Security | Signed links: no one can tamper with the URL or its action, but anyone who has the link can respond, and n8n can't tell who clicked | n8n verifies every callback came from Slack (using Slack's request signing) and checks the responder against your approver list |
Requirements
To approve within Slack, you need:
- Your n8n instance to be reachable from Slack over public HTTPS. Slack calls your instance back when someone responds, so an instance running on localhost won't work.
- A Slack credential, using either an API access token or OAuth2.
- The Signature Secret field of your Slack credential must contain your Slack app's signing secret, found in Settings > Basic Information. Without it, the buttons render but clicks don't resume the workflow.
- Response Type set to Approval.
- The
users:readandusers:read.emailscopes. The responder's ID, name, and username come from Slack's interaction payload; the email comes from the Slack API and needs these scopes. Missing scopes just mean the output omits the email. If you use an OAuth2 credential created before this feature existed, reconnect it so it picks up theusers:read.emailscope.
Set up approvals
1. Create a Slack app and credential
Follow Using API access token or Using OAuth2 to create a Slack app and set up your credential. When you configure your app's scopes, add users:read and users:read.email so the output can include the responder's email.
2. Turn on Interactivity
- Go to Your Apps in Slack and select the app you want to use.
- Go to Features > Interactivity & Shortcuts and turn on Interactivity.
- In Request URL, enter
https://<your-n8n-instance>/webhook-waiting-slack. All workflows on the instance share this one URL. If you changed theN8N_ENDPOINT_WEBHOOK_WAITenvironment variable, adjust the path to match. - Select Save Changes.
3. Add the signing secret to your credential
- In your Slack app, go to Settings > Basic Information and copy the Signing Secret from the App Credentials section.
- In n8n, paste it into the Signature Secret field of your Slack credential.
n8n uses the signing secret to verify that each callback comes from Slack. n8n rejects callbacks that fail verification, and the workflow keeps waiting.
4. Configure the node
In the Slack node, select the Message resource with the Send and Wait for Response operation, and set Response Type to Approval. The settings below then appear under the Advanced Interactivity section header.
- Capture Who Responded: turn this on to switch the approval buttons to Slack interactive buttons and record who responded. The remaining settings appear once it's on.
- Restrict Who Can Approve: select the users allowed to act. You can also specify user IDs with an expression. Anyone not on the list who clicks gets a private notice, and the workflow keeps waiting.
- Unauthorized Reply: the private (ephemeral) message shown to someone who clicks but isn't on the approver list. Defaults to
You are not authorized to respond to this request. - After Decision: what happens to the original Slack message once someone approves or declines.
- Show Outcome and Remove Buttons (default): removes the buttons and adds a line naming the decision and the responder.
- Remove Buttons Only: removes the buttons without adding an outcome line.
- Keep Message Unchanged: leaves the message as sent, buttons included. Later clicks don't change the recorded decision, which is the first one.
If you leave the approver list empty, anyone who can see the message can approve or decline. In a channel, that's every member. The list controls who can respond, not who can see the request, so post sensitive approvals to a private channel or direct message.
5. Test it
Execute the workflow, select Approve in Slack, and check the node output.
Node output
When someone responds in Slack, the node outputs the decision and the responder:
{
"data": {
"approved": true,
"respondedAt": "2025-07-13T12:34:56.000Z",
"channel": "C0123ABC456",
"messageId": "1752407696.123456",
"responder": {
"id": "U0123ABC456",
"name": "Jo Doe",
"username": "jo.doe",
"email": "jo@example.com",
"source": "slack"
}
}
}With link buttons, the output contains only approved and respondedAt.
When you get link buttons instead
The node behaves as before, sending buttons that open an n8n confirmation page, when any of these apply:
- The feature isn't enabled on your instance yet.
- Response Type is Free Text or Custom Form.
- Capture Who Responded is off.
Existing workflows keep working unchanged.
Troubleshooting
- The buttons don't do anything, or Slack shows a warning: the Request URL is wrong, your instance isn't publicly reachable over HTTPS, or the Signature Secret is missing or wrong. Slack shows the same warning for a rejected callback as for an unreachable URL.
- Someone gets a "not authorized" reply: that user isn't listed in Restrict Who Can Approve. The wording comes from Unauthorized Reply.
- The workflow never resumes although someone responded: the Signature Secret is missing or doesn't match your app's Signing Secret. n8n rejects callbacks it can't verify, and the workflow keeps waiting.
官方原文和授权
本页来自 N8N 英文官方网站固定快照,并转换成 xueai 静态页面。内容以 N8N 持续更新的官方页面为准。