Skip to main content
Courier recommends routing to a channel. Naming a provider key in routing.channels instead is supported, and sends through that one provider.

Route to the channel first

Routing to a channel is what Courier recommends. Attach your providers to it, address the recipient, and route to the channel by name. Courier then tries that channel’s providers in and moves to the next one when a send fails. A provider you connect later joins the order without a code change. Pin a provider only for the cases below.

When to pin one

  • Smoke-testing a provider you just connected, before it carries real traffic.
  • Reproducing one provider’s behavior while you debug a delivery.
  • Splitting traffic across two providers on the same channel, such as a transactional sender and a bulk sender.

What pinning costs

A provider key selects, it does not install. Connect the provider under , then add it to the channel in the template’s routing selector. A channel delivers only through the providers attached to it.

Overrides need no pin

A is keyed by provider, and Courier applies it when that provider runs. Route to the channel and the override still lands.
APNs gets the badge. Firebase FCM, on the same channel, is untouched.

Find a provider key

Every provider page ends with a Provider key section carrying the exact string, and lists them all. The key also names each attempt in .

Limits & behavior

  • A provider key is a supported value, not a workaround. Courier recommends a channel key, and accepts either in the same list.
  • A pinned provider has no failover. Channel priority and the next-provider fallback both stop applying.
  • The provider must already be on the template’s channel. A key in routing.channels selects, it does not attach.
  • providers.<key>.override works without a pin. Route to the channel and the override applies when that provider runs.