Skip to main content

Overview

The template approval workflow lets you require external review before publishing template changes. When enabled, templates enter a read-only state after submission and can only be published after checks are resolved via API.

How It Works

When a template is submitted for review, Courier emits a notification:submitted webhook. Your external system receives the event, runs its review process, and calls the Courier API to publish or reject the template.
Approval workflow diagram showing submission, webhook, review, and publish steps

Approval workflow flow

Enable Checks for a Template

Enable checks on each template that requires an approval workflow:
  1. Open the notification template
  2. Click the Settings gear
  3. Navigate to the Checks tab
  4. Enable custom checks
Checks tab in template settings with custom checks toggle

Enable custom checks in template settings

The template’s publish button is replaced with a Send for Review option.
Template showing Send for Review button

Send for Review button replaces Publish

After submission, the template enters a read-only state. No changes can be made to the latest draft until the submission is resolved or canceled.
Template in read-only state with cancel submission option

Template in read-only state after submission

Webhooks

Configure a webhook in Settings > Webhooks to receive submission events. The webhook fires when a notification is submitted, canceled, or published. Courier sends all event types to the same webhook endpoint, so filter on the type field.
Webhook configuration in Courier settings

Webhook Settings

Edit webhook dialog with URL and event configuration

Edit Webhook Dialog

Event Types

For other notification event types, see the webhook documentation. Once you receive a notification:submitted event, trigger your external approval workflow. When the review is complete, publish the template.

Fetching Content (Optional)

After receiving the notification:submitted event, you can retrieve the template content for use in your review process:
Sample notification template in the designer

Sample Template

Sample Response

Checksums

Each block, channel, and notification includes an MD5 checksum. Use these to track content changes across submissions and manage translation workflows.

Publishing the Template

Once all checks are resolved, call the API to publish the template:
To reject a submission, see Cancel a submission. You can also set the check status to FAILED or PENDING for more complex state management in your approval workflow.

Fetching Checks

Example: GET /notifications/SFTYJKSF0241SVH2TWY97TTFFTQG/1630424150210/checks

Cancel a Submission

Cancel a submission by deleting it. This moves the template back to a draft state and sets all checks to FAILED. Once canceled, setting a check to RESOLVED will not publish that submission.

Submitted Keys

Submitted keys let you send notifications using draft content that has been submitted for review but not yet published. This is useful for testing changes before they go live. Manage submitted keys in Settings > API Keys.
Submitted keys section in API Keys settings

Submitted Keys in API Key settings

Outbound Webhooks

Configure webhook endpoints for notification events

Send API

Send notifications using template IDs or event aliases