Notifications
Customizing email notifications and Webhook configuration for Lifecycle Management events and Access Requests.
Email Templates Overview
Administrators can customize email notifications sent during Lifecycle Management and Access Request workflows. These emails can include instructions, unique branding, and placeholders for metadata specific to the event (such as entity names, action types, or request details). Each notification type (usage) can have its own customized template.
Notification templates support HTML and CSS. They can include links to external images or you can upload small files to Veza. This document includes steps to configure templates in Veza using the notifications API, and a reference for event types, default templates, and supported placeholders.
Template Management: Currently, notification templates can only be managed via the Notification Templates API. Template management through the Veza UI is not yet available.
Access Reviews Notification Templates: For access review workflow notifications, see Access Reviews Notification Templates.
Managing notification templates
Custom Email Templates
In addition to event-specific templates, you can create custom email templates that are not tied to specific lifecycle events. These reusable templates allow you to define notification content once and use it across Send Notification actions and action notification settings. Custom email templates are:
Reusable: Single template for multiple workflows and actions
Event-independent: Not associated with a specific lifecycle event type
Flexible: Can be used in both Send Notification actions and action notification settings (
on_success/on_failure)Standard placeholder support: Supports all the same placeholders as event-based templates
To create a custom email template:
Navigate to Lifecycle Management > Settings > Notifications
Click Create Template
Select For Custom Email (as opposed to "For Event")
Define your template name, subject, and body using HTML and placeholders
Save the template
To use a custom template, select it when configuring the Send Notification action, or in Action Notification Settings:
Send Notification action: Choose from the "Select Email Template" dropdown when configuring the action
Action Notification Settings: Select the template for
on_successoron_failureemail notifications on any action
When you select "Default template" in these dropdowns, the system uses the event-based template appropriate for the event. When you select a custom template, that template is used regardless of the specific event being processed.
Custom templates support all standard placeholders documented in the Placeholders section. The available values depend on the context in which the template is used (e.g., action notifications have action-related placeholders, event notifications have event-related placeholders).
Default Templates
The system provides built-in templates for all Lifecycle Management and Access Request events. These templates use placeholders that are automatically replaced with actual values when notifications are sent.
Generic Failure Template
When specific event templates aren't available or when events fail, the system uses a generic failure template:
Subject: Lifecycle job {{EVENT_TYPE}} has failed
Body:
See Default Template Content for all default messages.
Lifecycle Management Events
Each template you create is associated with a specific notification event (referred to as usage in the API). The following event types are available for Lifecycle Management workflows, organized by functional area:
Identity Management Events
Create Identity
LIFECYCLE_MANAGEMENT_CREATE_IDENTITY
Sent when a new identity/account is created
Create Identity Failed
LIFECYCLE_MANAGEMENT_CREATE_IDENTITY_FAILED
Sent when identity creation fails
Sync Identity
LIFECYCLE_MANAGEMENT_SYNC_IDENTITY
Sent when an identity is synchronized
Sync Identity Failed
LIFECYCLE_MANAGEMENT_SYNC_IDENTITY_FAILED
Sent when identity sync fails
Delete Identity
LIFECYCLE_MANAGEMENT_DELETE_IDENTITY
Sent when an identity is deleted
Delete Identity Failed
LIFECYCLE_MANAGEMENT_DELETE_IDENTITY_FAILED
Sent when identity deletion fails
Disable Identity
LIFECYCLE_MANAGEMENT_DISABLE_IDENTITY
Sent when an identity is disabled
Disable Identity Failed
LIFECYCLE_MANAGEMENT_DISABLE_IDENTITY_FAILED
Sent when identity disabling fails
Create Guest Account
LIFECYCLE_MANAGEMENT_CREATE_GUEST_ACCOUNT
Sent when a guest account is created
Create Guest Account Failed
LIFECYCLE_MANAGEMENT_CREATE_GUEST_ACCOUNT_FAILED
Sent when guest account creation fails
Relationship Management Events
Add Relationship
LIFECYCLE_MANAGEMENT_ADD_RELATIONSHIP
Sent when a relationship is added
Add Relationship Failed
LIFECYCLE_MANAGEMENT_ADD_RELATIONSHIP_FAILED
Sent when adding relationship fails
Remove Relationship
LIFECYCLE_MANAGEMENT_REMOVE_RELATIONSHIP
Sent when a relationship is removed
Remove Relationship Failed
LIFECYCLE_MANAGEMENT_REMOVE_RELATIONSHIP_FAILED
Sent when removing relationship fails
Email Management Events
Create Email
LIFECYCLE_MANAGEMENT_CREATE_EMAIL
Sent when an email is created
Create Email Failed
LIFECYCLE_MANAGEMENT_CREATE_EMAIL_FAILED
Sent when email creation fails
Write Back Email
LIFECYCLE_MANAGEMENT_WRITE_BACK_EMAIL
Sent when email is synced back
Write Back Email Failed
LIFECYCLE_MANAGEMENT_WRITE_BACK_EMAIL_FAILED
Sent when email sync back fails
Password Management Events
Change Password
LIFECYCLE_MANAGEMENT_CHANGE_PASSWORD
Sent when a password is changed
Change Password Failed
LIFECYCLE_MANAGEMENT_CHANGE_PASSWORD_FAILED
Sent when password change fails
Reset Password
LIFECYCLE_MANAGEMENT_RESET_PASSWORD
Sent when a password is reset
Reset Password Failed
LIFECYCLE_MANAGEMENT_RESET_PASSWORD_FAILED
Sent when password reset fails
Entitlement Management Events
Create Entitlement
LIFECYCLE_MANAGEMENT_CREATE_ENTITLEMENT
Sent when an entitlement is created
Create Entitlement Failed
LIFECYCLE_MANAGEMENT_CREATE_ENTITLEMENT_FAILED
Sent when entitlement creation fails
Rename Entitlement
LIFECYCLE_MANAGEMENT_RENAME_ENTITLEMENT
Sent when an entitlement is renamed
Rename Entitlement Failed
LIFECYCLE_MANAGEMENT_RENAME_ENTITLEMENT_FAILED
Sent when entitlement renaming fails
Sync Entitlement
LIFECYCLE_MANAGEMENT_SYNC_ENTITLEMENT
Sent when an entitlement is synced
Sync Entitlement Failed
LIFECYCLE_MANAGEMENT_SYNC_ENTITLEMENT_FAILED
Sent when entitlement sync fails
Actions and Workflows Events
Custom Action
LIFECYCLE_MANAGEMENT_CUSTOM_ACTION
Sent when a custom action is performed
Custom Action Failed
LIFECYCLE_MANAGEMENT_CUSTOM_ACTION_FAILED
Sent when custom action fails
Action Succeed
LIFECYCLE_MANAGEMENT_ACTION_SUCCEED
Sent when an action succeeds
Action Failed
LIFECYCLE_MANAGEMENT_ACTION_FAILED
Sent when an action fails
Workflow Task Failed
LIFECYCLE_MANAGEMENT_WORKFLOW_TASK_FAILED
Sent when a workflow task fails
Extraction Event Failed
LIFECYCLE_MANAGEMENT_EXTRACTION_EVENT_FAILED
Sent when extraction processing fails
Access Reviews Events
Create Access Review Queued
LIFECYCLE_MANAGEMENT_CREATE_ACCESS_REVIEW_QUEUED
Sent when access review is queued
Create Access Review
LIFECYCLE_MANAGEMENT_CREATE_ACCESS_REVIEW
Sent when access review is created
Safety Events
Safety Limit Reached
LIFECYCLE_MANAGEMENT_SAFETY_LIMIT_REACHED
Sent when safety limits are reached
Access Request Events
Access Request Created
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_CREATED
Sent when an Access Request is created
Access Request Action Run
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_ACTION_RUN
Sent when Access Request actions start running
Access Request State Changed
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_STATE_CHANGED
Sent when Access Request state changes
Access Request Approver Assigned
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_APPROVER_ASSIGNED
Sent when new approvers are assigned
Access Request Succeed
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_SUCCEED
Sent when Access Request succeeds
Access Request Failed
LIFECYCLE_MANAGEMENT_ACCESS_REQUEST_FAILED
Sent when Access Request fails
Default Template Content
Veza provides built-in email templates for all event types, organized by functional area below. These templates include standard placeholders and can be customized or replaced with your own templates.
Identity Management Templates
CREATE_IDENTITY
Subject:
New Hire Notification: {{ENTITY_TYPE}} account createdBody:
CREATE_GUEST_ACCOUNT
Subject:
New {{ENTITY_TYPE}} Guest Account Created: {{ENTITY_NAME}}Body:
SYNC_IDENTITY
Subject:
Sync Identity Notification: {{ENTITY_TYPE}} account syncedBody:
DELETE_IDENTITY
Subject:
Identity Deleted Notification: {{ENTITY_TYPE}} has an account deletedBody:
DISABLE_IDENTITY
Subject:
Identity Disabled Notification: {{ENTITY_TYPE}} has an account disabledBody:
Relationship Management Templates
ADD_RELATIONSHIP
Subject:
New Relationship Added Notification: {{ENTITY_TYPE}} has an account with new relationship to a {{RELATIONSHIP_ENTITY_TYPE}}Body:
REMOVE_RELATIONSHIP
Subject:
Relationship Removed Notification: {{ENTITY_TYPE}} has an account whose relationship was remove from a {{RELATIONSHIP_ENTITY_TYPE}}Body:
Email Management Templates
CREATE_EMAIL
Subject:
New Email Notification: {{ENTITY_TYPE}} has an account with new emailBody:
WRITE_BACK_EMAIL
Subject:
New Write Back Email Notification: {{ENTITY_TYPE}} has had an email sync to itBody:
Password Management Templates
CHANGE_PASSWORD
Subject:
Password Change Notification: {{ENTITY_TYPE}} has an account with a new passwordBody:
RESET_PASSWORD
Subject:
Reset Password Notification: {{ENTITY_TYPE}} has had their password resetBody:
Entitlement Management Templates
CREATE_ENTITLEMENT
Subject:
Create entitlement notification: an entry of {{ENTITY_TYPE}} is createdBody:
RENAME_ENTITLEMENT
Subject:
Rename entitlement notification: an entry of {{ENTITY_TYPE}} is renamedBody:
SYNC_ENTITLEMENT
Subject:
Sync entitlement notification: an entry of {{ENTITY_TYPE}} is renamedBody:
Access Request Templates
ACCESS_REQUEST_COMPLETE
Subject:
Access Request {{ACCESS_REQUEST_TYPE}} for {{ACCESS_REQUEST_ENTITY_NAME}} has {{SUCCEED_OR_FAILED}}Body:
ACCESS_REQUEST_CREATED
Subject:
{{ACCESS_REQUEST_SOURCE_TYPE}} for {{ACCESS_REQUEST_ENTITY_NAME}} is {{ACCESS_REQUEST_STATE}}Body:
ACCESS_REQUEST_FAILED
Subject:
{{ACCESS_REQUEST_SOURCE_TYPE}} for {{ACCESS_REQUEST_ENTITY_NAME}} is failedBody:
ACCESS_REQUEST_STATE_CHANGED
Subject:
{{ACCESS_REQUEST_SOURCE_TYPE}} for {{ACCESS_REQUEST_ENTITY_NAME}} is {{ACCESS_REQUEST_STATE}}Body:
ACCESS_REQUEST_APPROVER_ASSIGNED
Subject:
{{ACCESS_REQUEST_SOURCE_TYPE}} for {{ACCESS_REQUEST_ENTITY_NAME}} in {{ACCESS_REQUEST_STATE}} as new assigned approversBody:
Error and Failure Templates
ACTION_FAILED
Subject:
Action Failed: {{ACTION_NAME}} for identity {{IDENTITY_NAME}}Body:
WORKFLOW_TASK_FAILED
Subject:
Workflow Failed: {{WORKFLOW_NAME}} for identity {{IDENTITY_NAME}}Body:
EXTRACTION_EVENT_FAILED
Subject:
Lifecycle Management extraction processing failed for {{DATASOURCE_ID}}Body:
Access Review Templates
CREATE_ACCESS_REVIEW_QUEUED
Subject:
Create Access Review Queued Notification: for identity {{IDENTITY_NAME}}Body:
CREATE_ACCESS_REVIEW
Subject:
Create Access Review Notification: for identity {{IDENTITY_NAME}}Body:
Safety and Custom Action Templates
SAFETY_LIMIT_REACHED
Subject:
Safety Limit Reached Notification: Policy {{POLICY_NAME}} has stopped processing identity changesBody:
CUSTOM_ACTION
Subject:
New Custom Action Notification: {{ENTITY_TYPE}} has performed a custom actionBody:
Image Attachments
From the Veza UI, you can add images directly through the "Add images" option. These will be automatically encoded and included in your template.
Image Requirements: For API-based template management, 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 entity names, action types, timestamps, and other event metadata. Placeholders are automatically replaced with actual values when notifications are sent.
Placeholder Case Sensitivity: Placeholders are case-sensitive and must match the exact casing shown in the documentation. For example, {{ENTITY_TYPE}} will work, but {{entity_type}} or {{EntityType}} will not be replaced unless those exact attribute names exist in your data.
How placeholders work
Veza notification templates support two types of placeholders:
1. Static Placeholders (Predefined)
These are uppercase constants documented in the tables below (e.g., {{ENTITY_TYPE}}, {{ENTITY_NAME}}). They are replaced first during template processing and work with all notification templates.
Example:
2. Dynamic Attribute Placeholders
You can also reference any attribute from the entities being processed using two formats:
Untyped format:
{{attribute_name}}- References an attribute by name aloneTyped format:
{{EntityType.attribute_name}}- References an attribute from a specific entity type
The attribute name must exactly match the casing used by your integration. For example:
If your integration provides an attribute named
email, use{{email}}If it provides
Email, use{{Email}}If it provides
employee_id, use{{employee_id}}
Examples:
When to Use Typed Format: Use {{EntityType.attribute}} format when your workflow processes multiple entity types and you need to reference a specific entity's attributes. For example, if your workflow processes both OktaUser and ActiveDirectoryUser, use {{OktaUser.email}} to specifically reference the Okta user's email address.
Predefined placeholders
The following static placeholders are available in all notification templates:
Identity and Entity Information
Placeholder
Description
{{ENTITY_TYPE}}
The type of entity (e.g., "ActiveDirectoryUser", "OktaUser")
{{ENTITY_NAME}}
The name of the entity/identity
{{LOGIN_NAME}}
The login/username for the account
{{LOGIN_PASSWORD}}
The password (for password-related notifications)
{{EMAIL}}
Email address associated with the identity
Relationship Information
Placeholder
Description
{{RELATIONSHIP_ENTITY_TYPE}}
Type of the related entity
{{RELATIONSHIP_ENTITY_NAME}}
Name of the related entity
Action and Job Information
Placeholder
Description
{{ACTION_NAME}}
Name of the action being performed
{{ACTION_TYPE}}
Type of action
{{ACTION_JOB_ID}}
Unique identifier for the action job
{{SUCCEED_OR_FAILED}}
Status indicator ("succeeded" or "failed")
{{SENT_INVITE}}
Whether an invite was sent (for guest accounts)
Access Request Information
Placeholder
Description
{{ACCESS_REQUEST_TYPE}}
Type of Access Request
{{ACCESS_REQUEST_ENTITY_NAME}}
Name of the entity requesting access
{{ACCESS_REQUEST_ENTITY_TYPE}}
Type of the requesting entity
{{ACCESS_REQUEST_TARGET_TYPE}}
Type of the target resource
{{ACCESS_REQUEST_TARGET_NAME}}
Name of the target resource
{{ACCESS_REQUEST_URL}}
URL to view the Access Request details
{{ACCESS_REQUEST_STATE}}
Current state of the Access Request
{{ACCESS_REQUEST_SOURCE_TYPE}}
Source type of the Access Request
Event and Error Information
Placeholder
Description
{{EVENT_TYPE}}
Type of lifecycle event
{{JOB_ID}}
Job identifier
{{EVENT_ERROR_MESSAGE}}
Error message for failed events
{{EVENT_IDENTITY_ID}}
Identity ID associated with the event
{{EVENT_IDENTITY_NAME}}
Identity name associated with the event
Policy and Workflow Information
Placeholder
Description
{{POLICY_NAME}}
Name of the lifecycle policy
{{WORKFLOW_NAME}}
Name of the workflow
{{ACTION_ID}}
Action identifier
{{WORKFLOW_ID}}
Workflow identifier
{{DATASOURCE_ID}}
Datasource identifier
Troubleshooting placeholders
Placeholder Not Being Replaced?
If a placeholder appears in your notification email instead of being replaced with a value, check the following:
Verify exact casing: Placeholders are case-sensitive
โ Correct:
{{ENTITY_TYPE}}โ Wrong:
{{entity_type}},{{EntityType}},{{Entity_Type}}
Check placeholder format: Ensure proper syntax with double curly braces
โ Correct:
{{ENTITY_NAME}}โ Wrong:
{ENTITY_NAME},{{ENTITY_NAME},ENTITY_NAME
Verify attribute exists: For dynamic attributes, confirm the attribute is provided by your integration
Use the typed format to specify the entity type:
{{OktaUser.email}}Check your integration documentation for available attribute names and their casing
Check event context: Some placeholders are only available for specific events
For example,
{{LOGIN_PASSWORD}}is only available for password-related events{{ACCESS_REQUEST_URL}}is only available for Access Request events
Best Practices:
Start with predefined placeholders: Use the documented static placeholders (uppercase) whenever possible
Test templates: Send test notifications to verify placeholder replacement before deploying to production
Document custom attributes: Keep a reference of the attribute names and casing used by your integrations
Use typed format for clarity: When working with multiple entity types, use
{{EntityType.attribute}}to avoid ambiguity
Webhook Configuration Overview
Webhook notifications are triggered upon execution of actions during the LCM Policy workflow process. Webhooks inform stakeholders or integrate with external systems of events that are processed within the workflow. Webhook notifications can be optionally configured as their own discrete action in a workflow or as an option when another action is executed.
For example, a webhook is sent to the company's learning management system to initiate online onboarding training once each new hire's Active Directory account is provisioned, following a successful Sync Identity operation.
Create a Webhook
To create and manage a webhook, perform the following:
Go to Policies and select a policy.
Click Edit Policy.
Click Policy Settings.
Scroll down to Notifications and click Add Notification.
Choose the Webhook notification type.
Choose an event to trigger notifications:
Create Identity
Sync Identity
Add Relationship
Remove Relationship
Create Email
Change Password
Delete Identity
Disable Identity
Manage Relationships
Write Back Email
Access Request Complete
Custom Action
Action Failed
Workflow Task Failed
Extraction Event Failed
Create Entitlement
Create Guest Account
Rename Entitlement
Create Access Review
Reset Password
Create Access Review Queued
Safety Limit Reached
Sync Entitlement
Choose the status to trigger notifications (when an event is Successful, or On Failure).
Select an Existing Veza Action.
A Veza Action is an integration with functionality for sending data to external systems, enabling downstream processes around Veza alerts, and access to reviewer actions. Use a Veza Action to configure generic webhooks or enable email notifications.
See Veza Actions Webhooks on how to create and deploy a webhook.
To customize the Webhook setting, perform the following:
In the Webhook URL field, enter the endpoint configured to receive the webhook payload.
In the Webhook Auth Header field, enter the Auth Header if the webhook listener requires authentication.
When configured, webhook requests include an Authorization header containing the credentials specified in the Webhook Auth Header field. This allows the receiving endpoint to authenticate the request using Bearer tokens, API keys, or other authentication schemes.
Click Save.
Last updated
Was this helpful?
