Skip to main content

Overview

The channel element allows you to customize notification content based on which channel the notification is sent through. For example, you can display a detailed message in email and a more concise message in push notifications. When to use:
  • Provide channel-specific content (different content for email vs push vs SMS)
  • Use raw channel data for provider-specific formats (MJML for email, Slack blocks, etc.)
  • Create channel-specific layouts and structures
Channel elements are only valid as top-level elements. You cannot nest channel elements. If a channel element is specified at the top level, all sibling elements must be channel elements.
Alternative: Most elements support a channels property that allows you to selectively display individual elements on a per-channel basis. See the Control Flow documentation for details.

Basic Example

Fields

type
string
required
The type of element. For channel elements, this value must be "channel".
channel
string
required
The channel the contents of this element should be applied to. Can be:
  • Standard channels: "email", "push", "direct_message", "sms"
  • Provider names: "slack", "discord", "teams", etc.
  • "default" - applies to all channels not explicitly specified
elements
CourierElement[]
An array of Elemental elements to apply to the channel. If raw has not been specified, elements is required.
raw
object
Raw data to apply to the channel. This allows you to provide channel-specific formats like MJML for email, Slack blocks, or webhook payloads. If elements has not been specified, raw is required.
font_family
string
The CSS font-family stack to apply to the rendered email. Only valid when channel is "email". Use the exact fontFamily value from the font catalog. Google Fonts are loaded automatically. Defaults to Helvetica, Arial, sans-serif if omitted.

Examples & Variants

Using Elements

Provide different Elemental content per channel:

Using Raw Data

Use raw channel data for provider-specific formats:

Email with MJML

Slack

Webhook

Default Channel

Use "default" to provide content for all channels not explicitly specified:

Channel-Specific Considerations

Email

  • Supports full Elemental elements or raw HTML/MJML
  • Can use raw.subject for email subject line
  • Supports transformers array for templating engines

Push

  • Typically uses meta.title for notification title
  • Content should be concise due to character limits
  • Supports action buttons via action elements

SMS

  • Very limited character count
  • Best for short, essential messages
  • No rich formatting support

Direct Message (Slack, Discord, Teams, etc.)

  • Provider-specific formats via raw property
  • Can use provider-specific block structures
  • Supports rich interactive elements per provider