Slack destination
Beta
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.
Slack is a team messaging platform. This destination posts events into a Slack channel through a Slack Incoming Webhook, for real-time, human-readable notifications.
- Category: Customer success, Communication
- Release status: Beta
- Authentication: Incoming webhook URL
- Regional availability: US1
Get early access to native destinations for data warehouses, observability tools, and event pipelines.
You can send all Event Types 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.
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.
Info
See Set up a destination for the full UI and Destinations API setup flow common to every destination type.
To create a Slack destination in the Twilio Console:
- From your Slack account, gather the settings listed in Destination settings.
- In the Twilio Console, go to Data > Data Destinations > Destinations > Add destination subscription.
- Complete the Add destination subscription wizard.
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.
POST "https://destinations.twilio.com/v1/ControlPlane/Destinations"
Set the config object in the request body as follows:
| Name | Type | Description |
|---|---|---|
credentials.credentialType (Required) | string | Set to API_KEY. |
credentials.webhookUrl (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.
1{2"destinationType": "slack",3"name": "My Slack destination",4"config": {5"credentials": {6"credentialType": "API_KEY",7"webhookUrl": "WEBHOOK_URL"8}9}10}
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.
| 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.
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.
| 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 | 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 | 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 (available in US1 region only). If Twilio continues to encounter delivery errors, Twilio notifies you every 20 minutes after the initial error.