[{"data":1,"prerenderedAt":31},["ShallowReactive",2],{"$ffry70plri3ue":3,"$f72ks4xcemiba":22},{"content":4,"package":5,"version":21},"# Webhooks\n\n::div{class=\"docs-note docs-note--new-feature\"}\nThe webhook middleware was added in the 3.1 release.\n::\nTwilio signs the webhook requests it sends to your application with an `X-Twilio-Signature` header. The `BabDev\\Twilio\\Http\\Middleware\\ValidateTwilioSignature` middleware [validates this signature](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fusage\u002Fwebhooks\u002Fwebhooks-security), rejecting requests without a valid signature with a 403 response.\n\n```php\nuse App\\Http\\Controllers\\TwilioSmsController;\nuse BabDev\\Twilio\\Http\\Middleware\\ValidateTwilioSignature;\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::post('\u002Ftwilio\u002Fsms', TwilioSmsController::class)\n    ->middleware(ValidateTwilioSignature::class);\n```\n\nTwilio's webhook requests do not include a CSRF token, so routes in your `routes\u002Fweb.php` file should be excluded from CSRF protection in your application's `bootstrap\u002Fapp.php` file.\n\n```php\nuse Illuminate\\Foundation\\Configuration\\Middleware;\n\n->withMiddleware(function (Middleware $middleware): void {\n    $middleware->validateCsrfTokens(except: [\n        'twilio\u002F*',\n    ]);\n})\n```\n\n## Choosing a Connection\n\nSignatures are validated using your default connection's credentials. To use another connection, pass its name to the middleware.\n\n```php\nRoute::post('\u002Ftwilio\u002Fsms', TwilioSmsController::class)\n    ->middleware(ValidateTwilioSignature::using('my_new_connection'));\n```\n\nTwilio signs requests using your account's auth token. If a connection authenticates with an API key, set the `webhook_token` key for the connection (or the `TWILIO_API_WEBHOOK_TOKEN` environment variable for the default connection) to your account's auth token, as the API key's secret cannot be used to validate signatures. A `Twilio\\Exceptions\\ConfigurationException` is thrown if a connection has no token to validate signatures with.\n\n## Proxies and Load Balancers\n\nSignatures are validated against the URL Twilio requested, including its scheme and host. If your application is behind a load balancer or proxy that terminates TLS, [configure your trusted proxies](https:\u002F\u002Flaravel.com\u002Fdocs\u002Frequests#configuring-trusted-proxies) so the request's URL matches the URL Twilio requested.\n",{"name":6,"slug":7,"description":8,"github":9,"packagistName":11,"packageType":12,"hasDocumentation":13,"supported":13,"visible":13,"versions":14},"Laravel Twilio","laravel-twilio","Twilio SDK integration for Laravel",{"owner":10,"repo":7},"BabDev","babdev\u002Flaravel-twilio","laravel-package",true,[15,17,19],{"version":16,"released":13},"3.x",{"version":18,"released":13},"2.x",{"version":20,"released":13},"1.x",{"version":16,"released":13},{"content":23,"package":24,"version":30},"- [Introduction](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Fintro)\n- [Installation & Setup](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Finstallation)\n- [Using The Client](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Fclient-usage)\n- [Connection Management](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Fconnections)\n- [Notifications](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Fnotifications)\n- [Webhooks](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Fwebhooks)\n- [Testing](\u002Fopen-source\u002Fpackages\u002Flaravel-twilio\u002Fdocs\u002F3.x\u002Ftesting)\n",{"name":6,"slug":7,"description":8,"github":25,"packagistName":11,"packageType":12,"hasDocumentation":13,"supported":13,"visible":13,"versions":26},{"owner":10,"repo":7},[27,28,29],{"version":16,"released":13},{"version":18,"released":13},{"version":20,"released":13},{"version":16,"released":13},1790810589123]