Skip to main content
Channel settings control how each channel behaves within a template, and send-time overrides let you adjust a single message.

How overrides work

An override changes part of a message at send time, without editing the template. Courier applies it just before handing the message to the provider, so it works with template-based sends and with any content the template renders. There are two levels: Use both on the same send if you need to. When the two set the same field, the provider override wins.
Courier applies overrides after the render step. The Rendered tab in the logs will not show them, only the pre-override output. To see the final payload, look at the provider request in the Raw tab.
The fields each channel accepts live with that channel: , , , and . Each provider page documents its own provider-specific schema.

Prerequisites

  • A template with more than one channel
  • A connected provider for each of those channels

Configure channels

1

Choose Always or Best-Of per channel

In a template’s channel settings, Always Send To decides how a channel relates to the others:
  • Best Of: the channel sends only if a higher-priority channel fails. This is the fallback pattern (SMS backs up email).
  • Always: the channel sends to every recipient regardless of the others. Use it for guaranteed multi-channel delivery (email and push for a critical alert).
A Disabled channel never sends and is skipped in the Best-Of order. Best-Of works with the order to build fallback logic.
2

Set email address fields

Email channels carry sender and recipient fields you set in the channel settings, with variables allowed for dynamic values:
  • From: "Sarah Bennett <notify@acme-corp.com>". The Name <email> form carries the display name, and it is the only way to set one when a provider’s integration has no From Name field.
  • Reply-To: where replies go.
  • CC / BCC: additional recipients, often driven by a variable.
The sender resolves at three levels, and the first one set wins:
  1. message.channels.email.override.from on the send, for one message.
  2. The From field here, for every send of this template.
  3. From Address on the provider integration, for every email through that provider.
With none of the three set, the send fails at the provider rather than falling back to a Courier address. walks the whole setup.
Gmail is the exception. It always sends as the authorized inbox, so a From value here has no effect on it. Set the display name with the integration’s From Name instead.
3

Add per-channel conditions

A channel condition skips only that channel, while the rest of the notification still delivers (a template condition, by contrast, stops the whole send). Set them in the channel’s Conditions tab, or over the API with message.channels.<channel>.if, where each value is an expression evaluated against data and profile:
Setting routing on a send drops the template’s default routing conditions, so include any channel conditions you want in message.channels.
User preferences take precedence: if a user has custom channel routing, only their selected channels are considered, and channel conditions run within that selection but cannot override it.
4

Override a provider at send time

Adjust how a specific provider sends this one message with providers.<provider>.override, without changing the template. For example, filter push tokens or set a provider-specific field:
See for the push override fields, and each for its override options.
5

Check the logs

Send with your settings and open the message in . Confirm the channels that sent, and that a Best-Of fallback or a channel condition behaved as expected.