Webhooks

How the gateway receives inbound SMS from RingCentral and forwards them to your application.

You do not call this endpoint
POST /v1/webhooks/ringcentral is called by RingCentral, not by your application. This page documents the internal webhook receiver so you understand the inbound SMS pipeline. To receive inbound SMS in your app, configure a webhookUrl on your app or connect via WebSocket.
POST/v1/webhooks/ringcentralVerification-Token header

Receives inbound SMS events from RingCentral.

How it works

  1. Handshake — When RingCentral creates a subscription, it sends a request with a Validation-Token header. The gateway echoes this header back in the response to confirm the endpoint.
  2. Verification — Subsequent webhook events include a Verification-Token header. The gateway verifies it against the stored token before processing the event.
  3. Processing — Valid inbound SMS events are parsed, deduplicated by rcMessageId, stored as a message record, and published to WebSocket subscribers.
  4. Fan-out — The gateway sends the inbound SMS to all active apps in the tenant that have a webhookUrl configured.

Fan-out payload

When an inbound SMS arrives, the gateway sends the following JSON payload via HTTP POST to each app's webhookUrl:

Payload your app receives
{
"type": "sms_inbound",
"messageId": "msg_a1b2c3d4e5f6",
"from": "+15551234567",
"to": "+15559876543",
"body": "Hey, is my appointment still on?",
"rcMessageId": "12345678",
"tenantId": "tenant_abc123def456abcd",
"timestamp": "2026-03-01T14:30:00.000Z"
}

Payload fields

FieldTypeDescription
typestringAlways "sms_inbound".
messageIdstringGateway message ID.
fromstringSender phone number.
tostringRecipient phone number (your RC number).
bodystringMessage text content.
rcMessageIdstring | nullRingCentral message ID.
tenantIdstringTenant that received the message.
timestampstringISO 8601 timestamp.

Test webhook payload

When you call POST /v1/apps/:appId/test-webhook, the gateway sends a test payload instead:

Test payload
{
"type": "test",
"timestamp": "2026-03-01T12:00:00.000Z",
"source": "smsgateway"
}

Related docs