# Customizing Templates

This guide covers creating custom email notification templates. After reading this document, you will be able to:

* Create and test custom templates in the Veza UI
* Use Handlebars syntax for digest notifications with dynamic content
* Configure Access Intelligence alert templates
* Manage templates programmatically via API

## Overview

Custom templates allow you to modify the content, branding, and layout of Veza notification emails. Templates support placeholder tokens that are replaced with dynamic values when emails are sent.

**Document sections:**

* [Prerequisites](#prerequisites) - Required access and setup
* [Create a basic template](#create-a-basic-template) - UI-based template creation
* [Notification events](#notification-events) - Available event types
* [Example templates](#example-templates) - Sample HTML templates
* [Digest and review alert customization](#digest-and-review-alert-customization) - Handlebars-based templates
* [Create templates via API](#create-templates-via-api) - Programmatic management
* [Best practices](#best-practices) - Design and testing guidelines
* [Access Intelligence templates](#access-intelligence-templates) - Alert and risk notifications
* [Default templates reference](#default-templates-reference) - Built-in template HTML

{% hint style="info" %}
**Before you start**: Use inline CSS styles (not `<style>` blocks) for email client compatibility. Test templates in Gmail, Outlook, and Apple Mail before deploying.
{% endhint %}

## Prerequisites

* Access to **Access Reviews** > **Settings** > **Notifications**
* (Optional) API key for programmatic management

## Create a basic template

{% hint style="info" %}
**Required role**: Administrator or Operator role to create, update, or delete Access Review templates.
{% endhint %}

### Step 1: Open the template editor

1. Navigate to **Access Reviews** > **Settings** > **Notifications**
2. Click **Create Template**

A two-tab wizard modal will open with **Notification details** and **Customize template** tabs.

### Step 2: Configure notification details (Tab 1)

Fill in the required fields on the **Notification details** tab:

| Field                      | Description                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------ |
| **Template name**          | Descriptive name (e.g., "Custom Review Started")                                           |
| **Send notification when** | Event type this template applies to (see [Notification events](#notification-events))      |
| **Deliver via**            | Choose **Email**, **Slack**, or **Microsoft Teams** notification delivery                  |
| **Use template for**       | Choose **Use as default template for workflows** or **Choose specific workflows** to scope |

{% hint style="info" %}
**Template scope**: Default templates apply to all workflows using the selected event. If a default template already exists for an event, you can create additional templates scoped to specific workflows.
{% endhint %}

### Step 3: Customize the template (Tab 2)

Navigate to the **Customize template** tab to design the notification content:

| Field                 | Description                                                            | Applies To |
| --------------------- | ---------------------------------------------------------------------- | ---------- |
| **Email Subject**     | Subject line (supports placeholders)                                   | Email only |
| **Notification Body** | HTML content with placeholders and Handlebars (for digest/alert types) | All types  |
| **Attachments**       | Upload images (max 64KB each) to reference via `<img src="cid:name">`  | Email only |

{% hint style="info" %}
**Microsoft Teams notifications**: When **Deliver via** is set to **Microsoft Teams**, the subject field is hidden and only the notification body is configured. Teams notifications use Adaptive Card JSON format. See [Microsoft Teams App](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/destinations/teams-app.md) for integration setup and [available template placeholders](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/destinations/teams-app.md#common-template-placeholders).
{% endhint %}

### Step 4: Save and test

1. Click **Save** to create the template
2. Find your template in the list and open the **Actions** menu
3. Select **Send test notification**
4. Enter recipient email addresses and send a test notification
5. Verify placeholders are replaced and formatting displays correctly

## Notification events

Each template is associated with a specific notification event. Available events for Access Reviews:

| Event                                        | API Usage Value                              |
| -------------------------------------------- | -------------------------------------------- |
| Review Started (review published)            | `ACCESS_WORKFLOW_STARTED`                    |
| Review Completed (review marked complete)    | `ACCESS_WORKFLOW_COMPLETED`                  |
| Reviewer Changed (reviewer reassigned)       | `ACCESS_WORKFLOW_REVIEWER_CHANGED`           |
| Owner Changed (ownership changes)            | `ACCESS_WORKFLOW_OWNER_CHANGED`              |
| Reminder: No Activity (period of inactivity) | `ACCESS_WORKFLOW_REMINDER_NO_ACTIVITY`       |
| Reminder: Due Date (due date proximity)      | `ACCESS_WORKFLOW_REMINDER_DUE`               |
| Digest Notification (periodic summary)       | `ACCESS_WORKFLOW_DIGEST_NOTIFICATION`        |
| Review Alert (new/assigned reviews)          | `ACCESS_WORKFLOW_REVIEW_ALERT`               |
| Approved Row (row approved)                  | `ACCESS_WORKFLOW_ROW_ACCEPTED_AND_SIGNEDOFF` |
| Rejected Row (row rejected)                  | `ACCESS_WORKFLOW_ROW_REJECTED_AND_SIGNEDOFF` |

## Example templates

### Simple reminder template

```html
<!DOCTYPE html>
<html>
<head>
  <title>Review Reminder</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
  <img src="cid:logo" alt="Company Logo" style="width: 100px;">

  <h2>Review Reminder</h2>

  <p>The review <strong>{{WORKFLOW_NAME}}</strong> requires your attention.</p>

  <p>Due date: {{WORKFLOW_CERT_DUE_ON_DATE}}</p>

  <a href="{{WORKFLOW_URL}}" style="background-color: #3c7bfa; color: white; padding: 12px 24px; text-decoration: none; border-radius: 5px; display: inline-block;">
    View Review
  </a>

  <p style="color: #666; font-size: 12px; margin-top: 30px;">
    This is an automated notification from Veza.
  </p>
</body>
</html>
```

### Review completed template

```html
<!DOCTYPE html>
<html>
<head>
  <title>Review Completed</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
  <h2>Access Review Completed</h2>

  <p>The certification for <strong>{{WORKFLOW_NAME}}</strong> has been completed.</p>

  <table style="border-collapse: collapse; margin: 20px 0;">
    <tr>
      <td style="padding: 8px; border: 1px solid #ddd;"><strong>Completed by:</strong></td>
      <td style="padding: 8px; border: 1px solid #ddd;">{{WORKFLOW_CERT_COMPLETED_BY}}</td>
    </tr>
    <tr>
      <td style="padding: 8px; border: 1px solid #ddd;"><strong>Completed on:</strong></td>
      <td style="padding: 8px; border: 1px solid #ddd;">{{WORKFLOW_CERT_COMPLETED_ON_DATE}}</td>
    </tr>
  </table>

  <a href="{{WORKFLOW_URL}}" style="background-color: #3c7bfa; color: white; padding: 12px 24px; text-decoration: none; border-radius: 5px; display: inline-block;">
    View Details
  </a>
</body>
</html>
```

***

## Digest and review alert customization

Digest notifications and review alerts support advanced customization using [Handlebars](https://handlebarsjs.com/) syntax. This allows you to iterate over reviews and create custom table layouts.

### Using the built-in table

The simplest approach uses the `{{DIGEST_NOTIFICATION_TABLE}}` placeholder:

```html
<!DOCTYPE html>
<html>
<body style="padding: 50px; font-family: Arial, sans-serif; text-align: center; background-color: #f1efef;">
  <img src="cid:logo_mail_blue.png" alt="Veza Logo" style="padding: 20px;">

  <div style="max-width: 750px; margin: auto; padding: 15px; background-color: white; border-radius: 10px;">
    <div style="font-size: 28px; font-weight: 600;">{{TABLE_PHRASE}}</div>
    <div style="font-size: 22px; font-weight: 600;">{{DIGEST_NOTIFICATION_PERIOD}}</div>

    {{DIGEST_NOTIFICATION_TABLE}}

    <a href="{{ACCESS_REVIEW_URL}}">
      <button style="background-color: #3c7bfa; color: white; border: none; border-radius: 7.5px; font-size: 18px; padding: 12px 14px;">
        Go to My Reviews
      </button>
    </a>
  </div>

  <div style="font-size: 16px; color: #666; padding: 20px;">
    To manage notifications, visit <a href="{{SETTINGS_URL}}" style="color: #3c7bfa;">settings</a>
  </div>
</body>
</html>
```

### Custom table with Handlebars

For full control, use `{{#each CERTIFICATIONS}}` to iterate over reviews:

```html
<!DOCTYPE html>
<html>
<body style="padding: 50px; font-family: Arial, sans-serif; text-align: center; background-color: #f1efef;">
  <img src="cid:logo_mail_blue.png" alt="Veza Logo" style="padding: 20px;">

  <div style="max-width: 750px; margin: auto; padding: 15px; background-color: white; border-radius: 10px;">
    <div style="font-size: 28px; font-weight: 600;">{{TABLE_PHRASE}}</div>
    <div style="font-size: 22px; font-weight: 600;">{{DIGEST_NOTIFICATION_PERIOD}}</div>

    <table style="width: 90%; margin: 20px auto;">
      {{#each CERTIFICATIONS}}
      <tr>
        <td style="padding: 10px;">
          <a href="{{CERT_URL}}" style="color: #3c7bfa; font-size: 20px; font-weight: bold; text-decoration: none;">
            {{CERT_NAME}}
          </a>
          {{#if DUE_DATE}}
          <br><span style="font-size: 15px; color: #666;">Due {{DUE_DATE}}</span>
          {{/if}}
        </td>
        <td style="text-align: right; padding: 10px;">
          <span style="background-color: #d4d4d4; color: #666; padding: 6px 15px; border-radius: 31px; font-size: 16px;">
            {{WORK_LEFT}} need review
          </span>
        </td>
      </tr>
      {{/each}}
    </table>

    <a href="{{ACCESS_REVIEW_URL}}">
      <button style="background-color: #3c7bfa; color: white; border: none; border-radius: 7.5px; font-size: 18px; padding: 12px 14px;">
        Go to My Reviews
      </button>
    </a>
  </div>
</body>
</html>
```

### Adding status badges

Use conditionals to show overdue and new status:

```html
{{#each CERTIFICATIONS}}
<li style="padding: 10px; font-size: 18px;">
  <a href="{{CERT_URL}}" style="color: #3c7bfa; font-weight: bold;">{{CERT_NAME}}</a>
  <span style="color: #666;"> - {{WORK_LEFT}} need review</span>

  {{#if DUE_DATE}}
  <br><span style="font-size: 15px; color: #999;">(Due {{DUE_DATE}})</span>
  {{/if}}

  {{#if OVERDUE}}
  <span style="background-color: #f7b5b5; color: #666; padding: 2px 8px; border-radius: 10px; font-size: 14px; margin-left: 10px;">Overdue</span>
  {{else}}
    {{#if NEW}}
    <span style="background-color: aquamarine; color: #666; padding: 2px 8px; border-radius: 10px; font-size: 14px; margin-left: 10px;">New</span>
    {{/if}}
  {{/if}}
</li>
{{/each}}
```

### Certification data fields

Within the `{{#each CERTIFICATIONS}}` loop, you can access fields such as `{{CERT_NAME}}`, `{{CERT_URL}}`, `{{WORK_LEFT}}`, `{{DUE_DATE}}`, `{{OVERDUE}}`, and `{{NEW}}`. See [Digest and review alert placeholders](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/email-templates/placeholders-reference.md#digest-and-review-alert-placeholders) for the full field reference.

***

## Create templates via API

For programmatic management or when the UI isn't available:

### Create a template

```bash
# Encode your HTML template
template_base64=$(cat template.html | base64)

# Create the template
curl -X POST "https://{{VEZA_URL}}/api/preview/notifications/email_templates" \
  -H "Authorization: Bearer $token" \
  -H "Content-Type: application/json" \
  -d '{
    "value": {
      "name": "Custom Reminder",
      "subject_template": "Review {{WORKFLOW_NAME}} needs attention",
      "body_template_base64": "'"${template_base64}"'",
      "usage": "ACCESS_WORKFLOW_REMINDER_DUE"
    }
  }'
```

### Test a template

```bash
curl -X POST "https://{{VEZA_URL}}/api/preview/notifications/email_templates:test_template" \
  -H "Authorization: Bearer $token" \
  -H "Content-Type: application/json" \
  -d '{
    "to": ["recipient@example.com"],
    "template": {"id": "template-uuid-here"}
  }'
```

See [Notification Templates API](/4yItIzMvkpAvMVFAamTf/developers/api/notification-templates/email-templates-api.md) for complete API reference.

***

## Best practices

### Email client compatibility

{% hint style="warning" %}
Email clients have limited CSS support. Always use inline `style` attributes instead of `<style>` blocks or external CSS.
{% endhint %}

* Use **inline styles** on every element
* Use **table layouts** for complex structures
* Test in Gmail, Outlook, and Apple Mail
* Avoid CSS flexbox, grid, or advanced selectors

### Template design tips

1. **Keep it focused**: Include only essential information
2. **Clear call-to-action**: Prominent buttons linking to Veza
3. **Mobile-friendly**: Test on mobile devices
4. **Consistent branding**: Use your organization's colors and logo
5. **Accessible**: Include alt text for images

### Testing templates

Before deploying a template to production:

1. **Send a test email**: Use the **Send test notification** option in the template's Actions menu
2. **Verify in multiple email clients**: Gmail, Outlook, and Apple Mail render HTML differently
3. **Check placeholder replacement**: Confirm all `{{PLACEHOLDER}}` tokens are replaced with actual values
4. **Test edge cases**:
   * Reviews with no due date (empty `{{DUE_DATE}}`)
   * Long names that might break layouts
   * Multiple reviewers (for reviewer-related placeholders)
5. **Verify links**: Click through to confirm URLs resolve correctly
6. **Check mobile rendering**: Preview on mobile devices or use responsive design testing tools

{% hint style="info" %}
**Testing `{{REVIEW_REJECTED_ROWS_ALL_ACCESS_PATHS}}`**: When a test email is sent for a template that contains this placeholder, Veza attaches a sample file (`sample_rejected_access_paths.csv`) so you can preview the CSV format before the template is used in a live review.
{% endhint %}

***

## Access Intelligence templates

{% hint style="info" %}
**Getting started with alerts?** See [Rules and Alerts](/4yItIzMvkpAvMVFAamTf/features/insights/rules-and-alerts.md) for how to create rules and configure notification delivery. See [Risks](/4yItIzMvkpAvMVFAamTf/features/insights/risks.md) for how risk levels trigger notifications.
{% endhint %}

Access Intelligence notifications (rule-triggered alerts and risk notifications) are managed separately from Access Reviews templates. Configure these templates from **Administration** > **System Settings**.

{% hint style="info" %}
**Required role**: Administrator or Operator role to create, update, or delete Access Intelligence templates.
{% endhint %}

### Enable formatted HTML emails

By default, alert and risk email notifications use a JSON payload format. To enable formatted HTML templates:

1. Go to **Administration** > **System Settings**
2. Locate **Use New Default Email Template** and enable the toggle
3. Click **Save**

Once enabled, alert emails will use a structured HTML format with severity indicators, timestamps, and direct links to alerts and queries.

### Create or customize templates

To create or modify templates for alerts and risks:

1. Go to **Administration** > **System Settings**
2. Scroll to the **Custom Templates** section
3. Click **Create Template** to create a new template, or select an existing template from the table and choose **Edit template** from the Actions menu
4. Configure the template:
   * **Template Name**: A descriptive name for the template
   * **Event**: Choose `Query Rule Alert` (for ASSESSMENT\_RULE\_QUERY\_ALERT notifications) or `Risk Alert` (for ASSESSMENT\_RISK notifications)
   * **Subject**: Email subject line (supports placeholders)
   * **Body**: Email content in HTML format (supports placeholders and Handlebars templating)
   * **Attachments** (optional): Upload images (max 64KB each) to reference in the body via `<img src="cid:image_name">`
5. Click **Save**

{% hint style="warning" %}
**One template per event**: You can only create one custom template for each event type (Query Rule Alert or Risk Alert). The Create Template button will be disabled once both templates exist.
{% endhint %}

### Key placeholders

**Alert notifications (ASSESSMENT\_RULE\_QUERY\_ALERT):**

| Placeholder                 | Description                                    |
| --------------------------- | ---------------------------------------------- |
| `{{ALERT_TITLE}}`           | Alert/rule name                                |
| `{{SEVERITY}}`              | Severity level (e.g., "High", "Medium", "Low") |
| `{{ALERT_TIME}}`            | Timestamp when alert was triggered             |
| `{{QUERY_NAME}}`            | Name of the assessment query                   |
| `{{CURRENT_VALUE}}`         | Current result count                           |
| `{{THRESHOLD}}`             | Alert threshold value                          |
| `{{CONDITION_DESCRIPTION}}` | Human-readable condition description           |
| `{{LINK_TO_ALERT_DETAILS}}` | URL to alert details in Veza                   |
| `{{LINK_TO_QUERY}}`         | URL to assessment query                        |

**Risk notifications (ASSESSMENT\_RISK):**

| Placeholder           | Description                |
| --------------------- | -------------------------- |
| `{{RISK_LEN}}`        | Number of risks identified |
| `{{QUERY_NAME}}`      | Name of the risk query     |
| `{{#each RISK_ROWS}}` | Loop through risk details  |

For the full list, see [Access Intelligence Placeholders](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/email-templates/placeholders-reference.md#access-intelligence-placeholders).

### Test templates

After creating a template, test it before using in production:

1. In the **Custom Templates** section, locate your template in the table
2. Open the **Actions** menu for the template
3. Select **Send test notification**
4. Enter recipient email addresses
5. Click **Send** to deliver a test email with sample data

Verify that placeholders render correctly and formatting displays as expected in your email client.

***

## Default templates reference

The following templates are used by default when no custom template exists for the notification type. Use these as a starting point when creating custom templates. Access Intelligence alert templates require the **Use New Default Email Template** toggle to be enabled in System Settings — see [Enable formatted HTML emails](#enable-formatted-html-emails).

For Lifecycle Management default templates, see [Notifications: Email Templates and Webhook Configuration](/4yItIzMvkpAvMVFAamTf/features/lifecycle-management/policies-workflows/lifecycle-management-notification-templates.md#default-template-content).

{% hint style="success" %}
When submitting templates via the API, escape double quotes `"` in your HTML for JSON compatibility:

```html
<html>
 <head>
 <meta charset=\"UTF-8\" />
 </head>
</html>
```

{% endhint %}

<details>

<summary>Default notification email template</summary>

This template applies to all standard notifications (review started, completed, reminders, etc.) unless a custom template exists:

```html
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Notification</title>
    <meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <meta name="x-apple-disable-message-reformatting" />
    <style>
      * {
        font-family: Roboto, Arial, sans-serif;
      }
      body {
        padding: 0;
        margin: 0;
      }
      table {
        border: 0;
        width: 100%;
        border-spacing: 0;
      }
      table tr td {
        padding: 0;
      }
      .timestamp {
        color: #9097ad;
        font-size: 12px;
        line-height: 14px;
        padding-bottom: 5px;
      }
      .notification-text {
        font-size: 14px;
        line-height: 16px;
        color: #263040;
        padding-bottom: 30px;
      }
      .view-in-link a {
        text-decoration: none;
        background: #933aeb;
        border-radius: 10px;
        color: #ffffff;
        font-size: 14px;
        line-height: 16px;
        padding: 15px 35px;
        display: inline-block;
        font-weight: 500;
      }
      .ExternalClass {
        width: 100%;
      }
    </style>
  </head>
  <body style="padding: 0;">
    <table style="margin: 0; padding: 24px !important;">
      <tr style="margin: 0; padding: 0;">
        <th style="margin: 0; padding: 0 0 24px 0; text-align: left">
          <img src="cid:vezaLogo" style="width: 75px; display:inline-block;" alt="Veza logo" />
        </th>
      </tr>
      <tr>
        <td class="timestamp">{{WORKFLOW_TIME}}</td>
      </tr>
      <tr>
        <td class="notification-text">{{WORKFLOW_TEXT}}</td>
      </tr>
      <tr>
        <td class="view-in-link">
          <a href="{{WORKFLOW_URL}}" rel="noreferrer noopener" target="_blank">View in Veza</a>
        </td>
      </tr>
    </table>
  </body>
</html>
```

</details>

<details>

<summary>Default digest and review alert template</summary>

This template is used for digest notifications and review alerts:

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Access Reviews Digest</title>
  </head>
  <body style="padding: 50px 5px 0px 50px; font-family: Arial, sans-serif; text-align: center; background-color: #f1efef;">
    <img src="cid:vezaLogo" alt="Veza Logo" style="padding: 20px;">

    <div style="max-width: 750px; margin: auto; padding: 15px 0 15px; background-color: white; border-radius: 10px;">
      <div>
        <div style="font-size: 28px; color: black; margin: 2px; font-weight: 600;">{{TABLE_PHRASE}}</div>
        <span style="font-size: 22px; color: black; font-weight: 600;">{{DIGEST_NOTIFICATION_PERIOD}}</span>
      </div>

      {{DIGEST_NOTIFICATION_TABLE}}

      <a href="{{ACCESS_REVIEW_URL}}">
        <button style="display: inline-block; background-color: #3c7bfa; color: white; border: none; border-radius: 7.5px; font-size: 18px; cursor: pointer; text-align: center; line-height: 1.5em; padding: 12px 14px; font-weight: 400;">
          Go to My Reviews
        </button>
      </a>
    </div>

    <div style="font-size: 16px; color: #666; padding-top: 20px; padding: 10px 10px;">
      Copyright &copy; 2024 Veza.
    </div>

    <div style="font-size: 16px; color: #666; padding: 10px; padding-bottom: 50px;">
      To manage notifications, visit <a href="{{SETTINGS_URL}}" style="color: #3c7bfa;">settings</a>
    </div>
  </body>
</html>
```

</details>

<details>

<summary>Default query alert email template</summary>

This template is used for `ASSESSMENT_RULE_QUERY_ALERT` notifications when **Use New Default Email Template** is enabled in System Settings:

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Veza Security Alert</title>
    <style>
        body { margin: 0; padding: 0; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; background-color: #E6E6E6; }
        table, td { border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; }
        img { border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; }
        @media only screen and (max-width: 600px) {
            .container { width: 100% !important; }
            .content-padding { padding: 20px !important; }
            .mobile-stack { display: block !important; width: 100% !important; padding-bottom: 10px; }
        }
    </style>
</head>
<body style="margin: 0; padding: 0; background-color: #E6E6E6; font-family: Helvetica, Arial, sans-serif;">
    <table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #E6E6E6;">
        <tr>
            <td align="center" style="padding: 40px 10px;">
                <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px; background-color: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
                    <tr>
                        <td align="center" style="padding: 40px 0 30px 0;">
                            <img src="cid:logo_mail_blue.png" alt="Veza Logo" width="120" style="display: block; width: 120px; border: 0;">
                        </td>
                    </tr>
                    <tr>
                        <td class="content-padding" style="padding: 0 50px;">
                            <div style="font-size: 16px; color: #1A1A1A; margin-bottom: 20px; line-height: 1.5;">
                                Hello,
                            </div>
                            <div style="font-size: 16px; color: #1A1A1A; margin-bottom: 30px; line-height: 1.5;">
                                This alert was triggered because the query <strong style="color: #000000;">{{QUERY_NAME}}</strong> returned <strong style="color: #000000;">{{CURRENT_VALUE}}</strong> results, which {{CONDITION_DESCRIPTION}}
                            </div>
                            <table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin-bottom: 30px;">
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; width: 140px; font-size: 15px; color: #8C8C8C;">Rule Name</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{ALERT_TITLE}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Severity</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #FF4D4F; font-weight: bold;">{{SEVERITY}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Time Triggered</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{ALERT_TIME}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Name</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_NAME}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Source</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_SOURCE}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Destination</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_DESTINATION}}</td>
                                </tr>
                            </table>
                            <table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin-bottom: 25px;">
                                <tr>
                                    <td align="center">
                                        <table border="0" cellpadding="0" cellspacing="0">
                                            <tr>
                                                <td align="center" bgcolor="#0066FF" style="border-radius: 6px;">
                                                    <a href="{{LINK_TO_QUERY}}" target="_blank" style="font-size: 16px; font-weight: bold; color: #ffffff; text-decoration: none; display: inline-block; padding: 14px 40px; border-radius: 6px; border: 1px solid #0066FF; background-color: #0066FF; font-family: Helvetica, Arial, sans-serif;">
                                                        Review Query Results
                                                    </a>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                            </table>
                            <div style="text-align: center; font-size: 14px; color: #1A1A1A; margin-bottom: 30px;">
                                What triggered this alert? <a href="{{LINK_TO_ALERT_DETAILS}}" style="color: #0066FF; text-decoration: none; font-weight: 500;">See full alert details in Veza</a>
                            </div>
                            <div style="height: 1px; background-color: #EAEAEA; width: 100%; margin-bottom: 25px;"></div>
                        </td>
                    </tr>
                    <tr>
                        <td class="content-padding" style="padding: 0 50px 40px 50px;">
                            <div style="font-size: 13px; color: #757575; line-height: 1.6; margin-bottom: 15px;">
                                You are receiving this alert because you are subscribed to notifications for the following query: {{QUERY_NAME}}. This is an automated message.
                            </div>
                            <div style="font-size: 13px; color: #757575; line-height: 1.6; margin-bottom: 15px;">
                                Veza will never ask you for your password or other sensitive credentials in an email.
                            </div>
                            <div style="font-size: 13px; color: #757575; line-height: 1.6;">
                                © {{CURRENT_YEAR}} Veza Technologies Inc. | <a href="https://veza.com" style="color: #0066FF; text-decoration: none;">Veza.com</a> | <a href="mailto:support@veza.com" style="color: #0066FF; text-decoration: none;">Support</a>
                            </div>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>
```

</details>

<details>

<summary>Default property alert email template</summary>

This template is used for `ASSESSMENT_RULE_QUERY_PROPERTIES` notifications when **Use New Default Email Template** is enabled in System Settings:

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Veza Security Alert</title>
    <style>
        body { margin: 0; padding: 0; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; background-color: #E6E6E6; }
        table, td { border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; }
        img { border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; }
        @media only screen and (max-width: 600px) {
            .container { width: 100% !important; }
            .content-padding { padding: 20px !important; }
            .mobile-stack { display: block !important; width: 100% !important; padding-bottom: 10px; }
        }
    </style>
</head>
<body style="margin: 0; padding: 0; background-color: #E6E6E6; font-family: Helvetica, Arial, sans-serif;">
    <table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #E6E6E6;">
        <tr>
            <td align="center" style="padding: 40px 10px;">
                <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px; background-color: #ffffff; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
                    <tr>
                        <td align="center" style="padding: 40px 0 30px 0;">
                            <img src="cid:logo_mail_blue.png" alt="Veza Logo" width="120" style="display: block; width: 120px; border: 0;">
                        </td>
                    </tr>
                    <tr>
                        <td class="content-padding" style="padding: 0 50px;">
                            <div style="font-size: 16px; color: #1A1A1A; margin-bottom: 20px; line-height: 1.5;">
                                Hello,
                            </div>
                            <div style="font-size: 16px; color: #1A1A1A; margin-bottom: 30px; line-height: 1.5;">
                                This alert was triggered because the property <strong style="color: #000000;">{{PROPERTY_NAME}}</strong> in query <strong style="color: #000000;">{{QUERY_NAME}}</strong> has changed.
                            </div>
                            <table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin-bottom: 30px;">
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; width: 140px; font-size: 15px; color: #8C8C8C;">Rule Name</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{ALERT_TITLE}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Severity</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #FF4D4F; font-weight: bold;">{{SEVERITY}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Time Triggered</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{ALERT_TIME}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Name</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_NAME}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Property Name</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{PROPERTY_NAME}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Source</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_SOURCE}}</td>
                                </tr>
                                <tr>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #8C8C8C;">Query Destination</td>
                                    <td valign="top" style="padding-bottom: 12px; font-size: 15px; color: #000000; font-weight: bold;">{{QUERY_DESTINATION}}</td>
                                </tr>
                            </table>
                            <table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin-bottom: 25px;">
                                <tr>
                                    <td align="center">
                                        <table border="0" cellpadding="0" cellspacing="0">
                                            <tr>
                                                <td align="center" bgcolor="#0066FF" style="border-radius: 6px;">
                                                    <a href="{{LINK_TO_QUERY}}" target="_blank" style="font-size: 16px; font-weight: bold; color: #ffffff; text-decoration: none; display: inline-block; padding: 14px 40px; border-radius: 6px; border: 1px solid #0066FF; background-color: #0066FF; font-family: Helvetica, Arial, sans-serif;">
                                                        Review Query Results
                                                    </a>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                            </table>
                            <div style="text-align: center; font-size: 14px; color: #1A1A1A; margin-bottom: 30px;">
                                What triggered this alert? <a href="{{LINK_TO_ALERT_DETAILS}}" style="color: #0066FF; text-decoration: none; font-weight: 500;">See full alert details in Veza</a>
                            </div>
                            <div style="height: 1px; background-color: #EAEAEA; width: 100%; margin-bottom: 25px;"></div>
                        </td>
                    </tr>
                    <tr>
                        <td class="content-padding" style="padding: 0 50px 40px 50px;">
                            <div style="font-size: 13px; color: #757575; line-height: 1.6; margin-bottom: 15px;">
                                You are receiving this alert because you are subscribed to notifications for the following query: {{QUERY_NAME}}. This is an automated message.
                            </div>
                            <div style="font-size: 13px; color: #757575; line-height: 1.6; margin-bottom: 15px;">
                                Veza will never ask you for your password or other sensitive credentials in an email.
                            </div>
                            <div style="font-size: 13px; color: #757575; line-height: 1.6;">
                                © {{CURRENT_YEAR}} Veza Technologies Inc. | <a href="https://veza.com" style="color: #0066FF; text-decoration: none;">Veza.com</a> | <a href="mailto:support@veza.com" style="color: #0066FF; text-decoration: none;">Support</a>
                            </div>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>
```

</details>

***

## Related topics

* [Email Templates Overview](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/email-templates.md)
* [Placeholders Reference](/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/email-templates/placeholders-reference.md)
* [Notification Templates API](/4yItIzMvkpAvMVFAamTf/developers/api/notification-templates/email-templates-api.md)
* [Digest Notifications](/4yItIzMvkpAvMVFAamTf/features/access-reviews/configuration/digest-notifications.md)
* [Rules and Alerts](/4yItIzMvkpAvMVFAamTf/features/insights/rules-and-alerts.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.veza.com/4yItIzMvkpAvMVFAamTf/administration/administration/notifications/email-templates/customizing-templates.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
