Slack node: 'blocks' are ignored, only 'text' is displayed, despite successful API call

Hello, I am facing an issue where the Slack node is not rendering blocks. It only displays the fallback text.

What I want to do: I want to send a message with interactive buttons using the blocks parameter.

The Problem: The node executes successfully ("ok": true), but only the content of the Notification Text field is displayed in Slack. The blocks are completely ignored.

What I have already tried (Troubleshooting steps):

  • Confirmed the Blocks JSON is valid (even with a simple, hardcoded test).
  • Set “Allow users to send Slash commands and messages” in the Slack App’s App Home settings.
  • Reinstalled the Slack app to the workspace after changing the setting.
  • Reconnected/Re-authenticated the credential in n8n.
  • Confirmed the issue happens both in channels and in DMs.
  • Confirmed that leaving Notification Text blank results in a no_text error, which is expected.

Even after all these steps, a minimal test workflow with hardcoded blocks still fails to render them. Is this a known bug or is there anything else I can check? Thank you.

SOLUTION FOUND - The issue is with how N8N’s Slack node expects the Blocks field format.

I encountered the exact same problem and found the solution. The issue is that N8N’s Slack node Blocks field expects a full message payload object, not just the blocks array.

The Fix

Instead of inputting just the blocks array:

[
  {
    "type": "header",
    "text": {
      "type": "plain_text",
      "text": "My Header"
    }
  },
  {
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "Hello world"
    }
  }
]

You need to wrap it in a blocks object:

{
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "My Header"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "Hello world"
      }
    }
  ]
}

Why This Happens

N8N’s Slack node implementation expects the complete message payload structure that matches Slack’s chat.postMessage API format, not just the blocks array. When you only provide the array, N8N falls back to using the Notification Text field content instead.

Configuration Steps

  1. Set Message Type to “Blocks”
  2. In the Blocks field, use the {"blocks": [...]} object format
  3. Set appropriate Notification Text as fallback text
  4. Ensure your Slack app has chat:write scope

This solution worked perfectly for me after struggling with the same issue. The blocks now render correctly with all interactive elements working as expected.

Hope this helps others facing the same problem!


1 Like

Life-saver. I had even wondered if this was the issue, but I missed the outer braces. Thank you :folded_hands:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.