Skip to contentSkip to navigationSkip to topbar
Page tools
Useful for sharing or LLM
Accelerate development with AI

On this page
Looking for more inspiration?Visit the

Webhook destination


(new)

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.

The Webhook destination delivers your events as HTTP requests directly to an endpoint you control. You can receive and process raw event data in your own systems without a native connector.

Destination overview

destination-overview page anchor
  • Category: Raw data
  • Release status: Beta
  • Authentication: None
  • Regional availability: US1, IE1
Join the Data Destinations private beta

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

Sign up(link takes you to an external page)

Eligible events

eligible-events page anchor

Webhook has no restriction: all Event Types are eligible for delivery.

In the IE1 region, only Voice Insights events are eligible for delivery at this time.


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

  • An HTTP(S) endpoint that is publicly reachable and responds within 2 seconds.
  • The endpoint configured to accept POST requests with a JSON body.
  • Optional: credentials embedded in the webhook URL (https://user:pass@host/path), if your endpoint requires authentication. Twilio extracts them automatically and sends them as an Authorization header instead of forwarding the URL as is.

(information)

Info

See Set up a destination for the full UI and Destinations API setup flow common to every destination type.

To create a Webhook destination in the Twilio Console:

  1. Gather the settings listed in Destination settings.
  2. In the Twilio Console, go to Data > Data Destinations > Destinations > Add destination subscription.
  3. Complete the Add destination subscription wizard.

To create a Webhook destination through the Destinations API, send a POST request to the Destinations endpoint and set destinationType to webhook. For authentication and the other request body fields, see Create a destination.

Create a destination

create-a-destination page anchor
POST "https://destinations.twilio.com/v1/ControlPlane/Destinations"

Set the config object in the request body as follows:

NameTypeDescription
methodenum<string>The HTTP method Twilio uses to deliver events. The only supported value is POST.
url
(Required)
stringThe URL of your publicly accessible HTTP endpoint.

The following example shows a request body. Replace the example URL with your endpoint.

1
{
2
"destinationType": "webhook",
3
"name": "My Webhook destination",
4
"config": {
5
"url": "https://example.com/webhooks/twilio"
6
}
7
}

Use webhook as the destinationType.

FieldDescriptionRequiredOptions
Webhook URLThe endpoint Twilio delivers events to. Supports embedded HTTP basic-auth credentials (https://user:pass@host/path). Cannot be changed after the destination is created.YesUser Defined
HTTP MethodThe HTTP method Twilio uses to send requests to your endpoint. You can't change this after you create the destination. New subscriptions must use POST. GET is being phased out and supported only for subscriptions created before October 1, 2026.NoPost

You can't change either field after you create the destination. To change the URL or HTTP Method, create a new destination.

Twilio delivers events to your endpoint over HTTPS through the Twilio proxy delivery service, which signs every outbound request with the X-Twilio-Signature header. Validate the signature with the request validation libraries to confirm requests originated from Twilio.

Twilio sends requests with the User-Agent header value TwilioProxy/1.1, from the Twilio static proxy IP ranges. For the current list of IP addresses and ranges, see IP addresses and ranges.

If your webhook URL includes basic-auth credentials, Twilio removes them from the URL before delivery and sends them as a standard Authorization header instead. Your endpoint never sees the raw URL-embedded credentials on the wire.


FieldDelivered field
Event payloadFull CloudEvents JSON body

Twilio sends data to your endpoint as a JSON array of CloudEvents(link takes you to an external page). Your endpoint should iterate through the events array to process all items in the payload, even when the array contains a single element.


Verification and troubleshooting

verification-and-troubleshooting page anchor

When you save or test a Webhook destination, Twilio sends a marked test event to your endpoint through the same delivery path a real event takes. Twilio does this because a webhook endpoint has no other way to prove reachability. A successful test requires your endpoint to respond with a 2xx status within 2 seconds.

To trigger a test event, open the Console and go to the Trigger Test Event utility.

CauseWhat you'll seeFix
Endpoint unreachable or too slow (>2s)Connectivity test fails: "could not reach the webhook endpoint"Confirm the endpoint is publicly reachable and responds within 2 seconds
Endpoint returns 401/403Test fails as unauthorizedCheck any credentials embedded in the webhook URL
Endpoint returns a 3xx/4xx statusTest fails: "the webhook endpoint did not accept the request"Check the URL and HTTP method
Endpoint returns 5xx, or the Twilio delivery service has an internal issueDelivery reported as retryable in the DebuggerCheck your endpoint's health. Twilio retries 5xx responses

If Twilio can't deliver events to your endpoint, 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.