Digest and Review Alert Email Customization

Customizing digest notification and review alert email templates with Handlebars syntax for Access Reviews.

This document introduces advanced customization for digest notification and review alert email templates used in Access Reviews. Refer to the examples on this page when you want to customize the appearance of the reviews table and extend the built-in {{DIGEST_NOTIFICATION_TABLE}} placeholder.

Overview

Digest notifications and review alerts share the same default body template and use the {{DIGEST_NOTIFICATION_TABLE}} placeholder. The {{TABLE_PHRASE}} placeholder automatically renders the appropriate header text based on the notification type.

For basic notifications, this built-in table may suffice. Custom templates require additional configuration, but offer greater control over exact formatting.

For custom layouts (lists, different styling, conditional content), you can use Handlebarsarrow-up-right syntax to iterate over certification objects (reviews) and build your own HTML structure to format and display information for recipients.

Using custom templates

To create a custom template in Veza:

  1. Go to Access Reviews > Settings > Notifications

  2. Click Add Template

  3. Enter a template name and subject line

  4. In the Notification body, add your HTML template with placeholders

  5. Set Notification event to ACCESS_WORKFLOW_DIGEST_NOTIFICATION or ACCESS_WORKFLOW_REVIEW_ALERT

  6. Click Save, then use the Test button to send a test email

You can also manage templates programmatically using the Notification Templates API.

Available placeholders

Digest templates support placeholders. These are tokens wrapped in double curly braces (e.g., {{PLACEHOLDER_NAME}}), that are replaced with dynamic values when the email is generated.

There are two types of placeholders:

  • Block placeholders render pre-built HTML content, such as a formatted table ({{DIGEST_NOTIFICATION_TABLE}} or {{DIGEST_NOTIFICATION_WITH_SUMMARY_TABLE}})

  • Simple placeholders insert a single value, such as a date range ({{DIGEST_NOTIFICATION_PERIOD}}) or URL ({{ACCESS_REVIEW_URL}})

For the full list of placeholders ({{DIGEST_NOTIFICATION_PERIOD}}, {{ACCESS_REVIEW_URL}}, {{SETTINGS_URL}}, etc.), see Notification Templates: Digest and Review Alert placeholders.

Built-in table placeholders

These placeholders render pre-built HTML tables. Use them when you want the default table styling without writing custom Handlebars templates:

Placeholder
Description

{{DIGEST_NOTIFICATION_TABLE}}

Built-in table without digest summary column

{{DIGEST_NOTIFICATION_WITH_SUMMARY_TABLE}}

Built-in table with digest summary column

For full control over the table layout, use Handlebars syntax with {{#each CERTIFICATIONS}} instead.

Simple placeholders for custom templates

The following additional placeholders are available for custom templates:

Placeholder
Description

{{TABLE_PHRASE}}

Header text based on notification type: "My Reviews" for scheduled digest notifications (ACCESS_WORKFLOW_DIGEST_NOTIFICATION), or "New Reviews" for instant review alerts (ACCESS_WORKFLOW_REVIEW_ALERT)

{{CERTIFICATIONS_COUNT}}

Number of certifications in the digest

Example digest email using the default DIGEST_NOTIFICATION_TABLE placeholder.

Building custom templates with Handlebars

Handlebarsarrow-up-right is a templating language that adds loops and conditionals to HTML. In digest templates, use Handlebars to iterate over the list of certifications and render each one with custom HTML formatting.

Certification data fields

The CERTIFICATIONS array has one object per review assigned to the recipient. Use {{#each CERTIFICATIONS}} to loop through them. Each certification object provides these fields:

Field
Type
Description

{{CERT_NAME}}

string

Name of the certification

{{CERT_URL}}

string

Link to the certification details

{{WORK_LEFT}}

number

Number of items needing review

{{DUE_DATE}}

string

Due date string, or empty if no due date

{{OVERDUE}}

boolean

true if the certification is past due

{{NEW}}

boolean

true if the certification was recently created

{{DIGEST_SUMMARY}}

string

Workflow summary text (can be empty)

Looping with {{#each}}

This example outputs a paragraph for each certification, showing the name and item count:

Conditionals with {{#if}}

Use {{#if FIELD}} to render content only when a field has a value (non-empty string or true).

This example shows the due date only when one exists:

If-else with {{else}}

Combine {{#if}}, {{else}}, and nested conditions to implement more complex logic.

This example shows "Overdue" if past due, otherwise shows "New" for recent certifications:

Optional digest summary

The {{DIGEST_SUMMARY}} field displays workflow summary text (maximum 64 characters). This field is only populated for digest notifications, not review alerts. This field is not available in the Veza UI.

As{{DIGEST_SUMMARY}} can be empty, always wrap it in a conditional:

To configure this value, include the digest_summary field when creating or updating a workflow via the API:

  • POST /api/preview/awf/workflows

  • PUT /api/preview/awf/workflows/{workflow_id}

Complete template examples

The following examples demonstrate different approaches to formatting digest notifications and review alerts, from using the built-in table to fully custom layouts.

circle-exclamation

Default table with custom wrapper

Use {{DIGEST_NOTIFICATION_TABLE}} to keep the default table styling while customizing the surrounding template (header, footer, branding). This is the simplest approach when you only need to adjust the email wrapper.

chevron-rightView template codehashtag
chevron-rightView example outputhashtag
Default table with custom wrapper example.

Custom table layout

Replace the built-in table with your own table structure for full control over columns, styling, and content. This example uses {{#each CERTIFICATIONS}} to iterate over reviews.

chevron-rightView template codehashtag
chevron-rightView example outputhashtag
Custom table layout example.

Ordered list with status badges

Use a numbered list instead of a table for a more compact presentation. This example adds colored badges for overdue and new certifications.

chevron-rightView template codehashtag
chevron-rightView example outputhashtag
Ordered list with status badges example.

Compact list with emoji indicators

A minimal list format that uses emoji instead of styled badges. This approach works well when you want simpler HTML or better compatibility across email clients.

chevron-rightView template codehashtag
chevron-rightView example outputhashtag
Compact list with emoji indicators example.

Last updated

Was this helpful?