Intry

Webhooks

Inbound webhooks from Twilio, Telnyx, Stripe, and Clerk.

Overview

Intry Core acts as the consumer of third-party webhooks. Critical inbound streams:

ProviderPath prefixPurpose
Twilio/twilio/*Voice (legacy numbers)
Telnyx/telnyx/*Voice, TeXML, Call Control
Stripe/stripeSubscriptions, invoices
Clerk/webhooks/clerkUser/org sync
Telnyx 10DLC/webhooks/10dlc/eventsA2P compliance events

Routes under /twilio and /telnyx are mirrored via createVoiceGatewayRouter().

Twilio

PathPurpose
/twilio/inbound-callGate inbound, IVR start
/twilio/call-statusCall lifecycle
/twilio/recording-statusRecording callbacks

Requirements: Validate X-Twilio-Signature. Log Twilio Call SIDs alongside internal Call.id.

Telnyx

PathPurpose
/telnyx/inbound-callGate inbound (TeXML)
/telnyx/call-statusStatus callbacks
/telnyx/access-approved-dtmfDTMF door release
/telnyx/call-controlJSON Call Control events
/telnyx/comms-outboundStaff bridge outbound

Requirements: Validate Ed25519 signature {timestamp}|{body}. See docs/TELNYX_TEXML_WEBHOOK_SECURITY.md.

Stripe

PathPurpose
/stripeSubscription 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.


Last verified: 2026-06-21 (commit 293c4a7)

On this page