Skip to main content

Provider Overview

Providers are managed through the dashboard. MessagePipe supports multiple email, message and push notification providers with automatic failover capabilities. This ensures reliable delivery even when individual providers experience issues.

How Provider Failover Works

MessagePipe uses a priority-based system:

  1. Priority Assignment: Each provider gets a priority number (lower = higher priority)
  2. Primary Attempt: MessagePipe tries the highest priority provider first
  3. Automatic Failover: If the primary fails, it tries the next highest priority provider
  4. Success or Exhaustion: Process continues until successful delivery or all providers fail

Provider Priority Example

Provider A (Priority 1) → Try first
Provider B (Priority 2) → Try if A fails
Provider C (Priority 3) → Try if A and B fail

Preferred Provider

When sending messages, you can specify a preferredProvider to route a particular request through a specific provider regardless of priority order. If that provider fails, the failover chain takes over using priority order.

This is useful when you need to send a WhatsApp message to one user and an SMS to another. You specify the provider per send request rather than reconfiguring priorities each time.

Supported Providers

Email Providers

  • SendGrid
  • Mailgun
  • Amazon SES
  • SMTP

Message Providers

SMS

  • MessagePipe (built-in, no credentials needed)
  • Twilio
  • Termii
  • Amazon SNS
  • Infobip

Apps (Messaging Apps)

  • WhatsApp (Meta Business API)
  • WhatsApp via Twilio
  • Telegram
  • Signal

Push Notification Providers

  • FCM (Firebase Cloud Messaging) - Android, iOS and Web

Configuration Requirements

Each provider type requires specific configuration parameters. Use the provider schema endpoints to get the exact fields required for any provider.

Email Provider Schemas

Get configuration schemas for all email providers:

GET /email-config/provider-schemas
Authorization: Bearer {your-jwt-token}

Get schema for a specific email provider:

GET /email-config/provider-schemas/{provider}
Authorization: Bearer {your-jwt-token}

Valid values for {provider}: sendgrid, mailgun, ses, smtp

Message Provider Schemas

Get configuration schemas for all message providers:

GET /message-config/provider-schemas
Authorization: Bearer {your-jwt-token}

Get schema for a specific message provider:

GET /message-config/provider-schemas/{provider}
Authorization: Bearer {your-jwt-token}

Valid values for {provider}: messagepipe, twilio, termii, sns, infobip, whatsapp, whatsapp_twilio, telegram, signal

Push Provider Schemas

Get configuration schemas for all push providers:

GET /push-config/provider-schemas
Authorization: Bearer {your-jwt-token}

Get schema for a specific push provider:

GET /push-config/provider-schemas/{provider}
Authorization: Bearer {your-jwt-token}

Valid values for {provider}: fcm

Provider Management

List Configured Providers

Email Providers:

GET /email-config/providers?projectId={projectId}
Authorization: Bearer {your-jwt-token}

Message Providers:

GET /message-config/providers?projectId={projectId}
Authorization: Bearer {your-jwt-token}

Push Notification Providers:

GET /push-config/providers?projectId={projectId}
Authorization: Bearer {your-jwt-token}

Bulk Update Provider Priorities

You can update priorities for multiple providers in a single request, which is more efficient than updating them one at a time.

Email Providers:

PUT /email-config/providers/priorities?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}

{
"providers": [
{ "id": "provider-uuid-1", "priority": 1 },
{ "id": "provider-uuid-2", "priority": 2 },
{ "id": "provider-uuid-3", "priority": 3 }
]
}

Message Providers:

PUT /message-config/providers/priorities?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}

{
"providers": [
{ "id": "provider-uuid-1", "priority": 1 },
{ "id": "provider-uuid-2", "priority": 2 }
]
}

Push Notification Providers:

PUT /push-config/providers/priorities?projectId={projectId}
Content-Type: application/json
Authorization: Bearer {your-jwt-token}

{
"providers": [
{ "id": "provider-uuid-1", "priority": 1 },
{ "id": "provider-uuid-2", "priority": 2 }
]
}

Provider Status

Providers can be:

  • Enabled: Available for message sending
  • Disabled: Temporarily excluded from the failover chain
  • Priority: Order in the failover sequence

Best Practices

  • Configure multiple providers to take advantage of failover
  • Set different priorities to control failover order
  • Test provider configurations for emails before going live by using the test email endpoint
  • Monitor provider performance and adjust priorities as needed
  • Keep provider credentials secure and rotate regularly
  • Use primary providers with proven reliability for your region