| name | twilio-webhooks |
| description | Receive and verify Twilio webhooks. Use when setting up Twilio webhook handlers, debugging X-Twilio-Signature verification, or handling communications events like incoming SMS, voice calls, message status callbacks (delivered, failed), or recording status callbacks.
|
| license | MIT |
| metadata | {"author":"hookdeck","version":"0.1.0","repository":"https://github.com/hookdeck/webhook-skills"} |
Twilio Webhooks
When to Use This Skill
- How do I receive Twilio webhooks?
- How do I verify Twilio webhook signatures (X-Twilio-Signature)?
- How do I handle incoming SMS or voice calls with Twilio?
- How do I process message status callbacks (queued, sent, delivered, failed)?
- Why is my Twilio webhook signature verification failing?
- Setting up Twilio webhook handlers for SMS, voice, WhatsApp, or recordings
- Debugging Twilio signature verification with form-encoded or JSON bodies
Essential Code (USE THIS)
Twilio signs every webhook with X-Twilio-Signature using HMAC-SHA1 (base64). The signing key is your Twilio Auth Token. Twilio sends most webhooks as application/x-www-form-urlencoded, so the SDK is the recommended way to verify — it handles both form and JSON variants.
Express Webhook Handler (Twilio Node SDK)
const express = ();
twilio = ();
app = ();
authToken = process..;
app.(,
express.({ : }),
{
signature = req.[];
url = ;
isValid = twilio.(authToken, signature, url, req.);
(!isValid) {
res.().();
}
(req.. && req..) {
.();
res.().();
}
(req.. && req.. !== ) {
res.();
res.();
}
(req..) {
res.();
res.();
}
res.().();
}
);