SignalWire
Signature Verification
Section titled “Signature Verification”| Property | Value |
|---|---|
| Algorithm | HMAC-SHA256 and HMAC-SHA1 (Twilio-compatible) |
| Headers (priority order) | X-SignalWire-Signature, X-Twilio-Signature, X-SignalWire-SHA256-Signature, X-Twilio-SHA256-Signature |
SHA1 signing formula (primary):
Base64(HMAC-SHA1(url + sorted_params, auth_token))SHA256 signing formula (variant):
Base64(HMAC-SHA256(url + sorted_params, secret))Transyt checks headers in priority order, preferring SignalWire-specific headers over Twilio-compatible fallbacks. Both SHA1 and SHA256 variants are supported.
- In your SignalWire Space, navigate to your phone number or LaML application settings
- Set the webhook URL to:
https://ingest.transyt.com/signalwire/{your-account-slug}
- Use your SignalWire Auth Token as the signing secret when creating the account
Account Configuration
Section titled “Account Configuration”curl -X POST https://ingest.transyt.com/admin/accounts \ -H "X-Admin-Token: YOUR_ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "provider": "signalwire", "account_slug": "main-account", "app_key": "my-app", "signing_secret_current": "your-signalwire-auth-token" }'Event Type Mappings
Section titled “Event Type Mappings”SMS Events
Section titled “SMS Events”| SignalWire Status | Transyt Event |
|---|---|
received | sms.inbound |
delivered | sms.delivered |
sent | sms.sent |
failed | sms.failed |
undelivered | sms.undelivered |
Voice Events
Section titled “Voice Events”| SignalWire Status | Transyt Event |
|---|---|
initiated | call.initiated |
ringing | call.ringing |
answered | call.answered |
completed | call.completed |
busy | call.busy |
no-answer | call.no_answer |
failed | call.failed |
Fax Events
Section titled “Fax Events”| SignalWire Status | Transyt Event |
|---|---|
fax.received | fax.inbound |
fax.sent | fax.sent |
fax.failed | fax.failed |
External ID
Section titled “External ID”The external ID is a composite of the SID and status: {MessageSid}:{status}, {CallSid}:{status}, or {FaxSid}:{status}. This ensures each status change for the same resource is stored as a separate event.