Skip to content

Element Variables

Global Variables

In addition to the variables listed below, Event and People Variables are also available.

When a notification is triggered by an element event, the element (and variants) will be available in the message template.

These apply to all element-based events (Entries, Assets, Users, etc), including third-party element types:

VariableDescription
objectThe element or object which triggered the notification.
elementThe element which triggered the notification.
entry (or another type)Alias of element. (see below).
originalThe pre-saved copy of the element. (see below).

Alias of element

The element variable will be automatically aliased based on its element type:

VariableElement Type
entryEntry
assetAsset
userUser
matrixBlockMatrix Block
etcetc

Supports plugins and modules

This pattern also works for third-party elements introduced by plugins or modules.

Fetching the original element

If the notification was triggered by an "on save" event, the original element will also be fetched prior to saving.

This can be very useful when comparing the original (pre-save) values to the element (post-save) values.

Optionally Skip Messages

One major reason to compare original with element is to optionally skip messages based on your own custom Twig logic.

Examples

Welcome and onboard a new user

twig
Hi {{ user.firstName }},

Welcome aboard! Your account is ready to use.

- Username: {{ user.username }}
- Email: {{ user.email }}

{% if user.groups|length %}
Access granted: {{ user.groups|map(g => g.name)|join(', ') }}.
{% endif %}

{% if currentUser %}
This account was set up for you by {{ currentUser.fullName }}.
{% endif %}

Alert an editor when their content changes

twig
{% if entry.title == original.title and entry.postDate == original.postDate %}
    {% skipMessage "Nothing noteworthy changed." %}
{% endif %}

Hi {{ recipient.name }},

{{ currentUser.fullName }} just updated "{{ original.title }}".

{% if entry.title != original.title %}
The title is now "{{ entry.title }}".
{% endif %}

Review the latest version: {{ entry.cpEditUrl }}

Audit asset renames and replacements

twig
{% if asset.filename == original.filename and asset.dateModified == original.dateModified %}
    {% skipMessage "No file or name change to report." %}
{% endif %}

Hi {{ recipient.name }},

{{ currentUser.fullName }} just modified an asset.

{% if asset.filename != original.filename %}
- Renamed from "{{ original.filename }}" to "{{ asset.filename }}"
{% endif %}
{% if asset.dateModified != original.dateModified %}
- The underlying file was replaced
{% endif %}

View the asset: {{ asset.cpEditUrl }}