---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/data-destinations/destination/slack#article
headline: Slack destination
description: Learn how to send event data to a Slack channel through a Slack Incoming Webhook.
url: https://www.twilio.com/docs/data-destinations/destination/slack
inLanguage: en
dateModified: 2026-11-04T17:24:28.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Slack destination

> \[!IMPORTANT]
>
> Data Destinations is currently available as a Private Beta product and the information contained in this document is subject to change. Data Destinations is not a HIPAA Eligible Service or PCI compliant and should not be enabled in workflows that are subject to HIPAA or PCI. To learn more, see [Private beta legal information](/docs/data-destinations#private-beta-legal-information).

[Slack](https://slack.com/) is a team messaging platform. This destination
posts events into a Slack channel through a Slack Incoming
Webhook, for real-time, human-readable notifications.

### Destination overview

* **Category**: Customer success, Communication
* **Release status**: Beta
* **Authentication**: Incoming webhook URL
* **Regional availability**: US1

## Join the Data Destinations private beta

[Sign up](https://airtable.com/appaJfyV6LiIFMxuP/pagIaOAtKsQVxTfdW/form)

Get early access to native destinations for data warehouses, observability tools, and event pipelines.

## Eligible events

You can send all [Event Types](/docs/events/event-types-overview) supported by Event
Streams to Slack. There's no user-identifier
restriction for this destination.

> \[!WARNING]
>
> Slack limits Incoming Webhooks to roughly 1 request per second, and this
> destination sends exactly one message per event with no batching. Use it
> for low-volume, high-signal alerting, not for high-throughput event
> streams.

## Get started

### Prerequisites

Before you set up a Slack destination, make sure you have:

* A Slack workspace where you can create an app.
* A Slack app with the **Incoming Webhooks** feature turned on, and a webhook
  added to your workspace that points to the channel you want to receive
  events. Slack generates a unique **Webhook URL**
  (`https://hooks.slack.com/services/T.../B.../XXXX...`) when you do this.
  This destination doesn't require an OAuth install or bot token.

## Create the destination

> \[!NOTE]
>
> See [Set up a destination](/docs/data-destinations/destination-setup) for the full UI and Destinations API setup flow common to every destination type.

### Twilio Console

To create a Slack destination in the Twilio Console:

1. From your Slack account, gather the settings listed in [Destination settings](#destination-settings).
2. In the Twilio Console, go to **Data** > **Data Destinations** > **Destinations** > **Add destination subscription**.
3. Complete the **Add destination subscription** wizard.

### Destinations API

To create a Slack destination through the Destinations API, send a `POST` request to the Destinations endpoint and set `destinationType` to `slack`. For authentication and the other request body fields, see [Create a destination](/docs/data-destinations/api-quickstart#create-a-destination).

```text title="Create a destination"
POST "https://destinations.twilio.com/v1/ControlPlane/Destinations"
```

Set the `config` object in the request body as follows:

| Name                                              | Type   | Description                                                                                                                                 |
| ------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `credentials.credentialType` <br />(**Required**) | string | Set to `API_KEY`.                                                                                                                           |
| `credentials.webhookUrl` <br />(**Required**)     | string | Your Slack incoming webhook URL, for example `https://hooks.slack.com/services/T000/B000/XXXX`. The URL determines the destination channel. |

The following example shows a request body. Replace the uppercase placeholder values with your own.

```json title="Example request body"
{
  "destinationType": "slack",
  "name": "My Slack destination",
  "config": {
    "credentials": {
      "credentialType": "API_KEY",
      "webhookUrl": "WEBHOOK_URL"
    }
  }
}
```

## Destination settings

Use `slack` as the `destinationType`.

| Field       | Description                                                                                                                                                         | Required | Default or choices |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------ |
| Webhook URL | Your Slack Incoming Webhook URL. Encodes the destination channel; Twilio posts directly to this URL with no additional authentication. Sensitive; stored encrypted. | Yes      | None               |

Twilio posts to your **Webhook URL** with no separate authentication step.
The URL itself is the credential, and it also determines which channel
receives the messages. Twilio doesn't support overriding the channel,
username, or icon per message. A Slack Incoming Webhook always posts under
the identity it was created with.

## Default mappings

| Field              | Slack field                                        |
| ------------------ | -------------------------------------------------- |
| Full event payload | Message text (JSON, truncated to 4,000 characters) |

Twilio sends the complete event as a JSON string in the Slack message's
`text` field, with no field extraction or filtering. If the serialized
event exceeds the Slack 4,000-character message limit, Twilio truncates it and
appends a notice that the message was truncated.

> \[!WARNING]
>
> This destination posts the entire raw event as a Slack message, not a
> curated summary. Some event types can carry sensitive data (such as phone
> numbers, IP addresses, or geolocation) directly in the message text.
> Consider which subscriptions you route to Slack and who has access to the
> destination channel.

## Verification and troubleshooting

When you save a Slack destination, Twilio posts a real, visible confirmation
message to your Slack channel to validate the webhook. Unlike some
destinations, Slack has no read-only way to check an Incoming Webhook, so
every save posts a message. Expect to see a confirmation message each time
you save the destination's settings.

Twilio doesn't currently offer a way to manually trigger a test event for this destination, from either the Console or the CLI. To confirm delivery is working, wait for a real event of a subscribed type to fire.

### Common errors

| Cause                                                       | What you'll see                                                                                    | Fix                                                                                   |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Webhook URL is missing, malformed, or uses the wrong scheme | Validation fails with a configuration error                                                        | Confirm the URL was copied correctly from Slack                                       |
| Webhook URL is invalid or was never activated               | Validation fails with an auth error                                                                | Re-check the URL in your Slack app's Incoming Webhooks settings                       |
| Webhook was deleted, or its channel was archived            | Validation fails with an auth error                                                                | Create a new Incoming Webhook for an active channel and update the destination        |
| Slack rate-limiting your webhook (429)                      | Delivery errors reported in the [Debugger](/docs/usage/troubleshooting/debugging-your-application) | Reduce your event volume. This destination isn't intended for high-throughput streams |
| Slack platform error (5xx) or unreachable                   | Delivery errors reported in the [Debugger](/docs/usage/troubleshooting/debugging-your-application) | Retry is automatic. Check the Slack status page                                       |

If Twilio can't deliver events to your channel, Twilio sends an error notification to the [Debugger](/docs/usage/troubleshooting/debugging-your-application) (available in US1 region only). If Twilio continues to encounter delivery errors, Twilio notifies you every 20 minutes after the initial error.

## Additional resources

* [Destinations overview](/docs/data-destinations/destinations-overview)
* [Set up a destination](/docs/data-destinations/destination-setup)
* [Event types reference](/docs/events/event-types-overview)
