SMS Providers
Ring2All Platform — SMS Provider Configuration
Parent Module: SMS Messaging
---
Overview
SMS Providers are external carrier services (Twilio, Telnyx, Bandwidth, etc.) that handle the actual delivery of text messages. Each provider requires specific API credentials and can be configured with rate limits and priority for routing.
Navigation
Admin Panel → SMS → Providers
---
Configuration Fields
| Field Name | Technical Description | User-Friendly Tooltip | Example | Notes |
|---|
| Name | Unique identifier in sms_providers.name. | A friendly name for this SMS carrier. | Twilio US | Must be unique per domain. | |
| Provider Type | Carrier type in provider_type. | The SMS carrier service to use. | twilio | Options: twilio, telnyx, bandwidth, signalwire, generic | |
| API Key | Authentication credential in api_key. | Your API key from the provider. | AC123... | Keep secure. Never share. | |
| API Secret | Authentication credential in api_secret. | Your API secret or auth token. | abcd1234... | Stored encrypted in database. | |
| Account SID | Twilio-specific identifier in account_sid. | Your Twilio Account SID (Twilio only). | AC123... | Required for Twilio provider type. | |
| API Endpoint | Custom endpoint in api_endpoint. | Custom API URL for generic providers. | https://api.carrier.com/sms | Only for generic HTTP providers. | |
| Webhook URL | Inbound callback in webhook_url. | URL for receiving delivery reports and incoming messages. | https://yoursite.com/sms/webhook | Auto-generated for Ring2All hosted. | |
| Webhook Secret | Webhook authentication in webhook_secret. | Secret for validating webhook requests. | whsec_123... | Used to verify incoming webhooks are authentic. | |
| Priority | Routing priority in priority. | Provider priority for routing. Lower numbers are tried first. | 100 | Used when multiple providers match a route. | |
| Is Default | Default provider flag in is_default. | Use this provider when no route matches. | true | Only one provider per domain can be default. | |
| Rate Limit (per second) | Throttle in rate_limit_per_second. | Maximum messages per second to this provider. | 10 | Prevents carrier rate limit violations. | |
| Enabled | Toggle in enabled. | Enable or disable this provider. | true | Disabled providers are not used for routing. |
---
Supported Provider Types
Twilio
| Field | Required | Description |
|---|
| Account SID | ✅ | Found in Twilio Console dashboard | |
| API Secret | ✅ | Auth Token from Twilio Console | |
| Webhook URL | ✅ | Configure in Twilio phone number settings |
Setup Steps:
- Create Twilio account at https://twilio.com
- Copy Account SID and Auth Token from Console
- Purchase or port a phone number
- Configure webhook URL for inbound messages
Telnyx
| Field | Required | Description |
|---|
| API Key | ✅ | API Key from Telnyx Portal | |
| API Secret | ❌ | Not required for Telnyx v2 API | |
| Webhook URL | ✅ | Configure in Telnyx Messaging Profile |
Setup Steps:
- Create Telnyx account at https://telnyx.com
- Generate API Key in Portal → Auth
- Create Messaging Profile with webhook URL
- Assign phone numbers to the profile
Bandwidth
| Field | Required | Description |
|---|
| API Key | ✅ | API Token from Bandwidth Dashboard | |
| Account SID | ✅ | Account ID from Dashboard | |
| Webhook URL | ✅ | Configure in Application settings |
SignalWire
| Field | Required | Description |
|---|
| API Key | ✅ | API Token from SignalWire Space | |
| API Endpoint | ✅ | Your SignalWire Space URL | |
| Webhook URL | ✅ | Configure in phone number settings |
Generic HTTP
For custom or unsupported carriers that have an HTTP API.
| Field | Required | Description |
|---|
| API Endpoint | ✅ | Full URL to the SMS send endpoint | |
| API Key | ✅ | Authentication header value | |
| Settings (JSON) | ❌ | Custom configuration for the API |
---
Priority and Routing
Providers are used in routing based on:
- Route Matching: Routes reference specific providers
- Priority: Lower priority number = higher preference
- Fallback: Routes can specify a fallback provider
- Default: Provider marked
is_default handles unmatched routes
Message to +1555...
→ Check Routes → Match "US Domestic" → Provider: Twilio
→ If Twilio fails → Fallback: Telnyx
→ If no route matches → Default Provider
---
Rate Limiting
The rate_limit_per_second field prevents overwhelming carrier APIs:
| Carrier | Recommended Limit | Notes |
|---|
| Twilio | 10-100 | Depends on account tier | |
| Telnyx | 10-50 | Per messaging profile | |
| Bandwidth | 10 | Standard limit | |
| Short Codes | 100+ | Much higher throughput |
> ⚠️ Warning: Exceeding carrier rate limits can result in temporary blocks or account suspension.
---
Troubleshooting
| Issue | Cause | Solution |
|---|
| "Invalid credentials" | Wrong API key/secret | Verify credentials in provider dashboard | |
| "Rate limit exceeded" | Too many requests | Lower rate_limit_per_second | |
| "Number not found" | Number not in provider account | Verify phone number ownership | |
| "Webhook signature invalid" | Secret mismatch | Re-copy webhook secret | |
| Messages not sending | Provider disabled | Check enabled toggle |
---
Database Schema
CREATE TABLE sms_providers (
id SERIAL PRIMARY KEY,
uuid UUID DEFAULT gen_random_uuid(),
domain_id INTEGER NOT NULL,
name VARCHAR(255) NOT NULL,
provider_type VARCHAR(50) NOT NULL,
api_key TEXT,
api_secret TEXT,
api_endpoint TEXT,
account_sid VARCHAR(255),
webhook_url TEXT,
webhook_secret TEXT,
priority INTEGER DEFAULT 100,
is_default BOOLEAN DEFAULT FALSE,
enabled BOOLEAN DEFAULT TRUE,
rate_limit_per_second INTEGER DEFAULT 10,
settings JSONB DEFAULT '{}',
created_at TIMESTAMP DEFAULT NOW(),
created_by INTEGER,
updated_at TIMESTAMP,
updated_by INTEGER,
UNIQUE(domain_id, name)
);
---
See also: SMS Numbers | SMS Routes | SMS Settings
Glossary
| Term | Definition |
|---|
| SMS Provider | Carrier or gateway endpoint for routing text messages |
---
Lua Script Status ℹ️
Integration Module
| Component | Status | Notes |
|---|
| SMS Providers | ℹ️ Configuration module | Outbound messages dispatched via provider API endpoints |