set_notification_template
Set the message a notification sends, rendered with Mustache against the data passed on each send: 'Hi {{name}}' with data {"name": "Ada"} becomes 'Hi Ada'. {{value}} is HTML-escaped; use {{{value}}} only where raw markup is intended.
Templates are per (key, channel_type), so one key can carry a full HTML email and a one-line Slack message. Calling this again updates the existing template rather than failing.
What each channel needs: email — subject and body_text (body_html optional); slack and in_app — body_text; whatsapp — provider_config with templateName, because Meta only accepts templates it has already approved for a message a business initiates, and will refuse a body we compose.
The platform ships defaults for auth.verify_email and auth.password_reset, so those work before you set anything; a template you set here overrides them.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | How a send names this template, e.g. 'order.shipped'. Lowercase letters, digits, dots and underscores. | |
| enabled | No | Set false to fall back to the next tier without deleting this. | |
| subject | No | Email subject line. Mustache-rendered. | |
| body_html | No | Optional rich HTML body for email, sent alongside body_text. | |
| body_text | No | Plain-text body. Mustache-rendered. Required for email, slack and in_app. | |
| project_id | No | Optional if whoami returned a default_project_id. | |
| description | No | What this template is for. | |
| channel_type | Yes | ||
| provider_config | No | Structure a body cannot express. REQUIRED for whatsapp: {templateName, languageCode, parameters}. Optional for slack: {blocks}. |