Notification Templates
Changing the default Veza reminder emails and notifications.
You can use the Notification Templates API to customize the subject and body contents of emails triggered by Access Reviews events, such as notifications when reviewers are reassigned, reminders as a review due date approaches, and recurring digest emails.
Emails can trigger based on actions, deadlines, and review states (mapped to the template's usage
). You can customize a template for each usage, such as when a reviewer is re-assigned, for inactivity reminders, and for periodic summaries of assigned reviews. Each usage can have a single custom template assigned to it.
This document describes the notification types that support custom templates, and the placeholders and default messages for each. See Notification Templates API for API operations and examples.
Templates support HTML and CSS. To use images in an email template, you can add small files as attachments, or reference an image hosted elsewhere
Each reminder and Orchestration Action enabled in a review configuration will trigger independently
Templates for each notification type can use placeholders to include snippets of text and variables
The template is not validated upon submission. Use the Test Email Template operation to ensure that placeholders and attachments are rendering as expected for each usage
Example request body for adding a template:
Custom domains for email notifications By default, emails from Veza originate from noreply@vezacloud.com
. The Veza support team can help you change this to a domain for your organization. To enable a custom domain, you will need to provide Veza with credentials for a user account with permission to send email and an email relay Veza can authenticate to.
Default notifications and usage
The built-in template for all messages uses a {{WORKFLOW_TEXT}}
placeholder, representing an email body that depends on the usage
.
Usage
Subject
Body
ACCESS_WORKFLOW_STARTED
"Access Workflow --> Certification: A new certification was started on workflow {{WORKFLOW_NAME}}
"
"A new certification was started for workflow {{WORKFLOW_NAME}}
"
ACCESS_WORKFLOW_COMPLETED
"Access Certification: A certification on workflow {{WORKFLOW_NAME}}
has been completed"
"A certification has been completed on workflow {{WORKFLOW_NAME}}
"
ACCESS_WORKFLOW_REVIEWER_CHANGED
"Access Certification: Assigned reviewers changed on certification for workflow {{WORKFLOW_NAME}}
"
- When setting to email old reviewer: "On a certification for workflow {{WORKFLOW_NAME}}
the assigned reviewers has changed from {{WORKFLOW_CERT_OLD_REVIEWERS}}
to {{WORKFLOW_CERT_REVIEWERS}}
."
- Otherwise: "{{WORKFLOW_TEXT}}
: On a certification for workflow {{WORKFLOW_NAME}}
the assigned reviewers has changed to {{WORKFLOW_CERT_REVIEWERS}}
."
ACCESS_WORKFLOW_OWNER_CHANGED
"Access Workflow: A new owner assigned to workflow {{WORKFLOW_OWNER}}
"
"The owner of access workflow {{WORKFLOW_NAME}}
has changed from {{WORKFLOW_OLD_OWNER}}
to {{WORKFLOW_OWNER}}
."
ACCESS_WORKFLOW_REMINDER_NO_ACTIVITY
"Access Certification Reminder: Certification has had no activity from {{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
on workflow {{WORKFLOW_NAME}}
"
"User {{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
hasn't made progress on the certification started on {{WORKFLOW_CERT_STARTED_ON_DATE}}
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
. User {{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
has {{WORKFLOW_CERT_LAST_ACTIVITY_ROWS_NEED_SIGN_OFF}}
of {{WORKFLOW_CERT_LAST_ACTIVITY_ROWS_TOTAL}}
rows that need to be signed off."
ACCESS_WORKFLOW_REMINDER_DUE
"Access Certification Reminder: Certification {{WORKFLOW_CERT_DUE_IN_PHRASE}}
on workflow {{WORKFLOW_NAME}}
"
"The certification started on {{WORKFLOW_CERT_STARTED_ON_DATE}}
for workflow {{WORKFLOW_NAME}}
{{WORKFLOW_CERT_DUE_ON_PHRASE}}
."
ACCESS_WORKFLOW_ROW_ACCEPTED_AND_SIGNEDOFF
"Access Review: Access for {{REVIEW_ACCEPTED_REJECTED_ROWS_PHRASE}}
was approved in {{WORKFLOW_NAME}}
Review"
"In the access review {{WORKFLOW_NAME}}
, access for {{REVIEW_ACCEPTED_REJECTED_ROWS_PHRASE}}
was approved.
Please find more details below:
{{REVIEW_ACCEPTED_REJECTED_ROWS_DATA}}
"
ACCESS_WORKFLOW_ROW_REJECTED_AND_SIGNEDOFF
"Access Review: Access for {{REVIEW_ACCEPTED_REJECTED_ROWS_PHRASE}}
was rejected in {{WORKFLOW_NAME}}
Review"
"In the access review {{WORKFLOW_NAME}}
, access for {{REVIEW_ACCEPTED_REJECTED_ROWS_PHRASE}}
was rejected.
Please revoke the access described below:
{{REVIEW_ACCEPTED_REJECTED_ROWS_DATA}}
"
ACCESS_WORKFLOW_DIGEST_NOTIFICATION
"My Reviews - {{DIGEST_NOTIFICATION_PERIOD}}
"
Displays a summary of in-progress access reviews for the specified time period. See Digest Notification Placeholders for more details.
Built-in templates
See the sections below for default HTML templates and placeholders:
Image attachments
Small images under 64kb can be attached when configuring a template.
The image must be base64-encoded and specified in the attachments
field of the API request.
To use an attachment you have uploaded in a template, specify it by attachment.name
, for example:
To embed high-resolution images in your templates, you should serve the content from a public URL, and use HTML to link and style it.
Placeholders
Use placeholders to include dynamic information in templates, such as decision timestamps, reviewer names, and other review or configuration metadata. Some placeholders are available depending on the template usage
, and some are available for all templates, such as {{WORKFLOW_NAME}}
and {{WORKFLOW_URL}}
.
Placeholders for all templates
Summary
Placeholder
Configuration Name
{{WORKFLOW_NAME}}
Configuration Text
{{WORKFLOW_TEXT}}
Configuration URL
{{WORKFLOW_URL}}
Configuration Time
{{WORKFLOW_TIME}}
Configuration Owner
{{WORKFLOW_OWNER}}
Configuration Description
{{WORKFLOW_DESCRIPTION}}
If a review (certification
) exists for a configuration (workflow
), the following placeholders are available:
Summary
Placeholder
Review Due On Date
{{WORKFLOW_CERT_DUE_ON_DATE}}
Review Last Activity On Date
{{WORKFLOW_CERT_LAST_ACTIVITY_ON_DATE}}
Review Last Activity On Time
{{WORKFLOW_CERT_LAST_ACTIVITY_ON_TIME}}
Review Last Activity By
{{WORKFLOW_CERT_LAST_ACTIVITY_BY}}
Review Last Updated On
{{WORKFLOW_CERT_LAST_UPDATED_ON_DATE}}
Review Last Updated On Full
{{WORKFLOW_CERT_LAST_UPDATED_ON_TIME}}
Review Last Updated By
{{WORKFLOW_CERT_LAST_UPDATED_BY}}
Review Started On Date
{{WORKFLOW_CERT_STARTED_ON_DATE}}
Review Started On Time
{{WORKFLOW_CERT_STARTED_ON_TIME}}
Review Created By
{{WORKFLOW_CERT_CREATED_BY}}
Review Completed On Date
{{WORKFLOW_CERT_COMPLETED_ON_DATE}}
Review Completed On Time
{{WORKFLOW_CERT_COMPLETED_ON_TIME}}
Review Completed By
{{WORKFLOW_CERT_COMPLETED_BY}}
Review Phrase
{{WORKFLOW_CERT_PHRASE}}
Dates and Times: For placeholders that refer to a timestamp, you can show the full "Time" or simple "Date" format:
{{WORKFLOW_CERT_STARTED_ON_TIME}}
result: "Mon, Jan 2nd 2006, 3:04:05PM"{{WORKFLOW_CERT_STARTED_ON_DATE}}
result: "2006-01-02"
Digest notification placeholders
Unique placeholders are available for the ACCESS_WORKFLOW_DIGEST_NOTIFICATION
usage:
Placeholder
Description
{{DIGEST_NOTIFICATION_PERIOD}}
The time period covered by the digest (e.g., "January 1 - January 7, 2024")
{{ACCESS_REVIEW_URL}}
Link to the Access Reviews overview (varies based on user role)
{{SETTINGS_URL}}
Link to the Access Review settings page where digest emails can be configured. Only admins and operators can view this page.
{{DIGEST_NOTIFICATION_TABLE}}
Formatted HTML table showing in-progress reviews.
The {{DIGEST_NOTIFICATION_TABLE}}
placeholder generates a tabular summary of assigned reviews, including the:
Review name and link to the review
Due date (if applicable)
Total items needing review
Status indicators (e.g., New, Overdue)
ACCESS_WORKFLOW_OWNER_CHANGED placeholders
Summary
Placeholder
Workflow Old Owner
{{WORKFLOW_OLD_OWNER}}
ACCESS_WORKFLOW_REMINDER_NO_ACTIVITY placeholders
Summary
Placeholder
Review Last Activity Days
{{WORKFLOW_CERT_LAST_ACTIVITY_DAYS}}
Review Last Activity Phrase
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
Review Last Activity Reviewer
{{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
Review Last Activity Rows Total
{{WORKFLOW_CERT_LAST_ACTIVITY_ROWS_TOTAL}}
Review Last Activity Rows Need Sign Off
{{WORKFLOW_CERT_LAST_ACTIVITY_ROWS_NEED_SIGN_OFF}}
Review Last Activity Rows Signed Off
{{WORKFLOW_CERT_LAST_ACTIVITY_ROWS_SIGNED_OFF}}
ACCESS_WORKFLOW_REMINDER placeholders
Summary
Placeholder
Review Due In Phrase
{{WORKFLOW_CERT_DUE_IN_PHRASE}}
Review Due Date Phrase
{{WORKFLOW_CERT_DUE_ON_PHRASE}}
Review Due Days
{{WORKFLOW_CERT_DUE_DAYS}}
ACCESS_WORKFLOW_REVIEWER_CHANGED placeholders
Summary
Placeholder
Review Old Reviewers
{{WORKFLOW_CERT_OLD_REVIEWERS}}
Review Current Reviewers
{{WORKFLOW_CERT_REVIEWERS}}
Placeholders: Rejected and Accepted Rows
Usages ACCESS_WORKFLOW_ROW_ACCEPTED_AND_SIGNEDOFF
and ACCESS_WORKFLOW_ROW_REJECTED_AND_SIGNEDOFF
have unique placeholders:
Summary
Placeholder
Number of impacted rows
{{REVIEW_ACCEPTED_REJECTED_ROWS_PHRASE}}
List of approved or rejected rows
{{REVIEW_ACCEPTED_REJECTED_ROWS_DATA}}
List of approved or rejected rows, including notes
{{REVIEW_ACCEPTED_REJECTED_ROWS_DATA_WITH_NOTES}}
Examples:
Number of impacted rows:
List of approved or rejected rows:
List of approved or rejected rows, including notes:
When including notes, rows approved or rejected without a note will fall back to:
Placeholders: Phrases
Some placeholders represent a collection of strings and variables and are used to construct the default messages:
Phrase
Default Message
{{ACCESS_WORKFLOW_STARTED_PHRASE}}
"Access Workflow --> Certification: A new certification was started on workflow {{WORKFLOW_NAME}}
"
{{ACCESS_WORKFLOW_COMPLETED_PHRASE}}
"Access Certification: A certification on workflow {{WORKFLOW_NAME}}
has been completed"
{{ACCESS_WORKFLOW_REVIEWER_CHANGED_PHRASE}}
"Access Workflow: A new owner assigned to workflow {{WORKFLOW_NAME}}
"
{{ACCESS_WORKFLOW_OWNER_CHANGED_PHRASE}}
"Access Certification Reminder: Certification has had no activity from {{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
on workflow {{WORKFLOW_NAME}}
"
{{ACCESS_WORKFLOW_REMINDER_NO_ACTIVITY_PHRASE}}
"Access Certification Reminder: Certification has had no activity from {{WORKFLOW_CERT_LAST_ACTIVITY_REVIEWER}}
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
on workflow {{WORKFLOW_NAME}}
"
{{ACCESS_WORKFLOW_REMINDER_DUE_PHRASE}}
"Access Certification Reminder: Certification {{WORKFLOW_CERT_DUE_IN_PHRASE}}
on workflow {{WORKFLOW_NAME}}
"
{{WORKFLOW_CERT_DUE_IN_PHRASE}}
"is due on {{WORKFLOW_CERT_DUE_ON_DATE}}
" (if future)
"was due on {{WORKFLOW_CERT_DUE_ON_DATE}}
" (if past)
{{WORKFLOW_CERT_LAST_ACTIVITY_PHASE}}
"for {{WORKFLOW_CERT_LAST_ACTIVITY_DAYS}}
day" (if singular)
"for {{WORKFLOW_CERT_LAST_ACTIVITY_DAYS}}
days" (if plural)
Last updated