Webhooks
Inbound webhooks from Twilio, Telnyx, Stripe, and Clerk.
Overview
Intry Core acts as the consumer of third-party webhooks. Critical inbound streams:
| Provider | Path prefix | Purpose |
|---|---|---|
| Twilio | /twilio/* | Voice (legacy numbers) |
| Telnyx | /telnyx/* | Voice, TeXML, Call Control |
| Stripe | /stripe | Subscriptions, invoices |
| Clerk | /webhooks/clerk | User/org sync |
| Telnyx 10DLC | /webhooks/10dlc/events | A2P compliance events |
Routes under /twilio and /telnyx are mirrored via createVoiceGatewayRouter().
Twilio
| Path | Purpose |
|---|---|
/twilio/inbound-call | Gate inbound, IVR start |
/twilio/call-status | Call lifecycle |
/twilio/recording-status | Recording callbacks |
Requirements: Validate X-Twilio-Signature. Log Twilio Call SIDs alongside internal Call.id.
Telnyx
| Path | Purpose |
|---|---|
/telnyx/inbound-call | Gate inbound (TeXML) |
/telnyx/call-status | Status callbacks |
/telnyx/access-approved-dtmf | DTMF door release |
/telnyx/call-control | JSON Call Control events |
/telnyx/comms-outbound | Staff bridge outbound |
Requirements: Validate Ed25519 signature {timestamp}|{body}. See docs/TELNYX_TEXML_WEBHOOK_SECURITY.md.
Stripe
| Path | Purpose |
|---|---|
/stripe | Subscription lifecycle, invoice events |
Requirements: Verify signing secret. Keep idempotent handlers — Stripe retries aggressively. See docs/STRIPE_WEBHOOKS_SETUP.md.
Clerk
User and organization lifecycle events for auth sync. Verify with verifyWebhook() from @clerk/backend/webhooks.
Environment URLs
Use environment-specific public URLs (ngrok / staging host / production domain). Configure in carrier consoles using BASE_URL.
Related
- Telephony architecture
TELNYX_MIGRATION.md— full webhook URL mapping
Last verified: 2026-06-21 (commit 293c4a7)