Skip to main content
Courier integrates with providers across email, SMS, push, chat, and in-app. Send through any of them with one API call. Connect the providers your system already uses. Courier handles routing, failover, retries, and rate limits.

Which type of notification are you sending?

Start with the channel you need. Each introduction page lists that category’s providers, the profile fields that address a recipient, and the send-time overrides.

Email

From Amazon SES and SendGrid to a generic SMTP relay.

SMS

Twilio, Vonage, Sinch, and regional carriers.

Push

For iOS, Android, web, and React Native.

Chat & direct message

Slack, Teams, WhatsApp, and Discord.

In-app

Courier Inbox, on the In-App tab. Nothing to connect.

Other Providers

On-call alerting, support tools, and webhooks to anywhere else.
Two categories carry data rather than messages:

Customer data platforms

Sync profiles and trigger sends from Segment or RudderStack events.

Observability

Export delivery metrics to Datadog, New Relic, or OpenTelemetry.

Most-used providers

Each channel’s full list lives on its introduction page. These are the ones teams reach for most often, most popular first:

Email

SendGrid

Amazon SES

Mailgun

Postmark

Resend

SMTP

SMS

Twilio

Vonage

Bird

Plivo

Sinch

Push

Firebase FCM

Apple APNs

Expo

OneSignal

Chat

Slack

Microsoft Teams

WhatsApp

Discord

Alerting

PagerDuty

Opsgenie


Connecting a provider

1

Get credentials from the provider

Get the API key or authentication token from the provider. Your channel’s introduction page links to each provider’s page, which names the credentials that provider needs.
2

Add the provider in Courier

Open the and add the provider.
3

Test the connection

Verify your credentials and confirm Courier can send through the provider.
4

Add the channel to a template

A configured provider only sends once its channel is on a template. Set the channel’s behavior and priority in .
Provider API keys are configured per environment. SendGrid set up in Production also needs its API key added in Test to send test messages. A missing provider configuration gives a MISSING_CONFIGURATION error in your message logs.

What Courier handles for you

Once a provider is connected, delivery behavior comes from Courier, not your code:
  • Routing and failover. Courier picks the channel and provider per send. It moves to the next one when a provider fails. See .
  • Provider metrics. Delivery rates, latency, and error rates per provider appear in the Analytics dashboard. See .
  • Rate limit backoff. Provider 429s are queued and retried on the schedule below.

Rate limit management

When a provider returns a rate limit error (HTTP 429), Courier queues the message and retries with exponential backoff: Retries continue for up to 24 hours (approximately 104 total attempts). A provider Retry-After header overrides the default backoff schedule. After retries are exhausted, Courier attempts to another configured provider or channel. With no alternative, the message is marked UNDELIVERABLE.