Platform
Chatbot Builder Bulk Messaging Team Inbox Mini CRM API & Webhooks AI Integration WhatsApp Flows
Industries
E-commerce & D2C Real Estate Education Healthcare Finance & BFSI Logistics Hospitality Retail
Integrations 📚 Learn 📝 Blog 🗂 Codex Pricing Start Free Trial →
HomeConnect › Connect Slack to WhatsApp
Slack Integration Guide · Support / Helpdesk

Connect Slack to WhatsApp

Push WhatsApp activity straight into Slack. When a new lead, order, or support request comes in on WhatsApp, your team sees it in a Slack channel the moment it happens, without anyone watching the WhatsApp inbox.

Published 23 June 2026  ·  7 min read  ·  Support / Helpdesk

Before following this guide, read the External API Request step foundation guide. It covers every field in the step interface so this guide can focus on Slack-specific values.

This guide runs the other direction

Unlike the helpdesk guides that read tickets INTO WhatsApp, this one pushes WhatsApp events OUT to Slack. The trigger is a WhatsApp event (new lead, order, keyword); the action posts a message into a Slack channel. Perfect for sales and support teams who live in Slack but get enquiries on WhatsApp.

Slack returns HTTP 200 even on errors

The most important thing to know about the Slack API: it always returns HTTP status 200, even when the request fails. The real success signal is the ok field in the JSON response. If ok is true, the message posted. If ok is false, read the error field. Always check ok, never the HTTP status.

Step 1: Create a Slack app and get a bot token

Slack uses a bot token (starting with xoxb-) to authenticate. This is a one-time setup.

1
Go to api.slack.com/apps and click Create New AppFrom scratch. Name it "WA.Expert Alerts" and pick your workspace.
2
In the left menu, open OAuth & Permissions. Under Scopes → Bot Token Scopes, add chat:write. To post to public channels without inviting the bot, also add chat:write.public.
3
Scroll up and click Install to Workspace, then Allow.
4
Copy the Bot User OAuth Token (starts with xoxb-). Treat it like a password.
Official docs

Slack chat.postMessage reference: docs.slack.dev

Step 2: Invite the bot and get the channel ID

A Slack bot can only post to a channel it belongs to (unless you added chat:write.public). Add it to your alerts channel and grab the channel ID.

1
In the Slack channel where alerts should land (for example #whatsapp-leads), type /invite @WA.Expert Alerts and send.
2
Click the channel name at the top to open channel details. Scroll to the bottom of the About tab. Copy the Channel ID (starts with C for public, G for private).
Find the channel ID quickly

You can also copy the channel ID from the channel's URL in the Slack web app. The last segment after the workspace ID, beginning with C, is the channel ID.

Step 3: Fill in the External API Request step

In your WA.Expert chatbot or automation flow, after the trigger that should fire the alert (a new lead, an order, a keyword), add an External API Request step:

External API Request Step · WA.Expert
Select Method
POST
Request URL
https://slack.com/api/chat.postMessage
Select Auth Type
No Auth (Bearer in header below)
Header Parameters
AuthorizationBearer xoxb-YOUR-BOT-TOKEN
Content-Typeapplication/json
Select Body Type
JSON
Body
{{"channel": "C0123456789","text": "New WhatsApp lead: {{{{customer_name}}}} ({{{{customer_phone}}}}): {{{{customer_message}}}}"}}
Choose Response Type
JSON

Field-by-field breakdown

FieldValueNotes
Select MethodPOSTchat.postMessage always uses POST.
Request URLhttps://slack.com/api/chat.postMessageFixed Slack Web API endpoint for posting messages.
AuthorizationBearer xoxb-YOUR-BOT-TOKENYour Bot User OAuth Token from Step 1, after 'Bearer '.
Content-Typeapplication/jsonRequired when sending a JSON body.
Body channelC0123456789The channel ID from Step 2. Not the channel name.
Body textYour message with {{variables}}Plain text alert. Pull in WhatsApp variables like customer name, phone, and message.
Use the channel ID, not the name

Pass the channel ID (C0123456789), not '#whatsapp-leads'. While names sometimes work, IDs are reliable and do not break if the channel is renamed.

Step 4: Check the response

A successful Slack response looks like this:

Slack API — POST /chat.postMessage response
Success:
{
  "ok": true,
  "channel": "C0123456789",
  "ts": "1719223456.123456",
  "message": {
    "text": "New WhatsApp lead: Priya (+919820000001) ...",
    "type": "message",
    "bot_id": "B0123ABC"
  }
}

Failure (still HTTP 200!):
{
  "ok": false,
  "error": "not_in_channel"
}

Map: ok (true/false). Branch your flow on ok.
If ok = false, read error for the reason.
Always branch on the ok field

Add a conditions step after the API call that checks if ok equals true. Slack returns HTTP 200 even for failures, so the ok field is your only reliable success signal. Common errors: not_in_channel (invite the bot), invalid_auth (wrong token), channel_not_found (wrong channel ID).

Bonus: send a rich Block Kit alert

Plain text works, but a formatted Block Kit message is far more readable for a team scanning a busy channel. Replace the text field with a blocks array:

Rich Block Kit alert — POST /chat.postMessage
POST https://slack.com/api/chat.postMessage
Authorization: Bearer xoxb-YOUR-BOT-TOKEN
Content-Type: application/json

Body:
{
  "channel": "C0123456789",
  "text": "New WhatsApp lead from {{customer_name}}",
  "blocks": [
    {
      "type": "header",
      "text": {"type": "plain_text", "text": "🟢 New WhatsApp Lead"}
    },
    {
      "type": "section",
      "fields": [
        {"type": "mrkdwn", "text": "*Name:*\n{{customer_name}}"},
        {"type": "mrkdwn", "text": "*Phone:*\n{{customer_phone}}"}
      ]
    },
    {
      "type": "section",
      "text": {"type": "mrkdwn", "text": "*Message:*\n{{customer_message}}"}
    }
  ]
}

Always keep the top-level "text" field too — it is the
fallback shown in notifications and on older clients.
Keep a plain text fallback

Even when you send blocks, always include a top-level text field. Slack uses it for the notification preview and for accessibility. Without it, the push notification on a teammate's phone will be blank.

Worked example: new-lead alert to Slack

Automation flow — WhatsApp lead to Slack channel
Trigger: A new contact messages your WhatsApp number for the
first time (or a chatbot captures their name + enquiry).

Captured variables:
  customer_name    = "Priya Sharma"
  customer_phone   = "+919820000001"
  customer_message = "Do you ship to Pune?"

External API Request step (POST):
URL:  https://slack.com/api/chat.postMessage
Headers:
  Authorization: Bearer xoxb-...
  Content-Type: application/json
Body:
  {{
    "channel": "C0123456789",
    "text": "🟢 New WhatsApp lead: Priya Sharma (+919820000001)\nDo you ship to Pune?"
  }}

Response: {{ "ok": true, "ts": "1719223456.123456" }}

Conditions step: if ok = true → continue
                 if ok = false → log error / retry

Result in Slack #whatsapp-leads:
  🟢 New WhatsApp lead: Priya Sharma (+919820000001)
  Do you ship to Pune?

Your sales team sees it instantly and can pick it up,
while the WhatsApp bot keeps the customer engaged.

What teams use this for

WhatsApp triggerSlack alert
New lead / first-time enquiry#sales gets the name, number, and question instantly
High-value order placed#orders is notified so fulfilment starts faster
Support keyword (refund, complaint, urgent)#support is pinged for human escalation
Abandoned cart over a threshold#growth sees it and can follow up
Negative feedback / low rating#cx is alerted to step in

Each of these is a WhatsApp automation trigger in WA.Expert that ends with a Slack chat.postMessage step. Your team lives in Slack; the enquiries arrive on WhatsApp; the two stay in sync.

Troubleshooting

SymptomLikely causeFix
ok: false, error: not_in_channelBot is not a member of the channelIn the channel, type /invite @YourApp. Or add the chat:write.public scope and reinstall.
ok: false, error: invalid_authWrong or revoked bot tokenRecopy the Bot User OAuth Token (xoxb-) from OAuth and Permissions. Ensure 'Bearer ' prefix.
ok: false, error: channel_not_foundWrong channel IDUse the channel ID (C...), not the name. Recopy it from channel details.
ok: false, error: missing_scopechat:write not grantedAdd chat:write under Bot Token Scopes and reinstall the app to the workspace.
ok: false, error: not_allowed_token_typeUsing a user token instead of a bot tokenUse the Bot User OAuth Token (xoxb-), not a user token (xoxp-).
Notification is blank on mobileSent blocks without a top-level text fieldAlways include a top-level text field as the notification fallback, even when sending blocks.
429 rate limitedPosting faster than ~1 msg/sec per channelSlack allows roughly 1 message per second per channel. Check the Retry-After header and space out posts.

Common questions

Why does Slack return ok: false with HTTP 200?
+
Slack's Web API always returns HTTP 200. The real result is the ok field in the JSON body. Always branch your flow on ok, not the HTTP status.
Where do I get a bot token?
+
api.slack.com/apps → create app → OAuth and Permissions → add chat:write → Install to Workspace → copy the Bot User OAuth Token (xoxb-).
Why the not_in_channel error?
+
The bot is not in the channel. Type /invite @YourApp in the channel, or add chat:write.public and reinstall.
How do I find the channel ID?
+
Open the channel, click its name, scroll to the bottom of the About tab. The ID starts with C (public) or G (private). It is also in the channel URL.
Can I send rich formatted alerts?
+
Yes, with Block Kit. Send a blocks array instead of (or alongside) text. Always keep a top-level text field as the notification fallback.
Does this incur extra WA.Expert charges?
+
One automation action per External API Request call. Included on Complete plan. Starter: from Rs. 49 per 1,000 actions. The Slack API is free within rate limits.

Connect Zendesk to WhatsApp

Zendesk Support API: OAuth 2.0, ticket lookup by email.

Read guide →

Connect Jira to WhatsApp

Jira Cloud API: Basic Auth, issue lookup and creation.

Read guide →

External API Request Step

Master every field in WA.Expert's HTTP action step.

Read foundation guide →

Connect Slack to WhatsApp today

Free trial, no credit card required. And if you ever get stuck, we are the only platform in India that answers you live on WhatsApp.

Start Free Trial → Book a Demo
1