Sending provisioning emails to VMR and device owners
When bulk-provisioning VMRs and device aliases from Active Directory via LDAP, an email can be sent out to the VMR owner or device owner telling them the:
- VMR properties, such as its aliases and security PINs
- device alias properties, such as its associated username and password for registration purposes.
Email generation is specified on a per sync template basis. The content of the email is free-form and can be customized for each generated VMR or device alias by using variables — such as {{pin}} to include the Host PIN in VMR-related emails — that are substituted with the relevant value when each individual email is generated.
This topic covers:
- Guidelines and limitations
- Configuring an LDAP sync template to generate emails
- Constructing the VMR provisioning email
- Example VMR email templates
- Constructing the device alias provisioning email
- Example device email templates
- Sending reminder emails
Guidelines and limitations
When constructing your email template:
- Ensure that the subject line of the generated email is a single line.
- You can use HTML markup (UTF-8 characters only).
If Pexip Infinity experiences connectivity issues with the SMTP server, it will retry sending each individual email up to 3 times before moving onto the next email, and it will attempt to re-establish dropped SMTP server connections up to 100 times per bulk-send operation.
Note that an email is triggered when a synchronization process results in changes to the VMR's or device alias's properties, regardless of whether that property is available as an email variable, and whether that variable is actually used in an email template. Changes to the email template do not trigger the sending of an email.
If you want to update all VMRs, for example with a new layout, but do not want to trigger emails, then disable the Send emails option for the sync template, make the change to the template, synchronize, and when completed, turn Send emails back on again.
Configuring an LDAP sync template to generate emails
When configuring a sync template (
) you can specify the following email-related options:Option | Description |
---|---|
Email options | |
Send emails |
When selected, the system generates and sends an email to the:
Separate emails are sent for VMR provisioning and for device provisioning when both Sync VMRs and Sync devices are enabled. Note that you can also manually send reminder emails. |
VMR / device owner's email address |
The email address of the owner of this VMR or device alias. The generated email(s) will be sent to this address. This field is also used as the email address of the user records that are created when Sync users is enabled. When using the VMR self-service portal, it determines which VMRs can be viewed and edited (the LDAP mail attribute of the user logged into the VMR portal must match the VMR owner's email address). Example: {{mail}} |
Allow email address to be manually overridden | Allows the auto-generated email address to be manually overridden for each VMR or device alias. |
SMTP server | Select the SMTP server to use for sending provisioning emails (see Configuring SMTP servers). |
VMR email options | |
VMR email subject | A template for the subject line of the email to be sent when a VMR is created or updated. |
VMR email template |
A template for the body of the email to be sent when a VMR is created or updated. See Constructing the VMR provisioning email below for more information on how complete this field. |
Device email options | |
Device email subject | A template for the subject line of the email to be sent when a device alias is created or updated. |
Device email template |
A template for the body of the email to be sent when a device alias is created or updated. See Constructing the device alias provisioning email below for more information on how complete this field. |
Constructing the VMR provisioning email
The VMR email subject template and VMR email body template fields contain the pattern for the email to be sent to the VMR owner when that VMR is first created (provisioned) or is updated.
The templates will typically contain a mixture of literal text and variables, and it can also contain control structures that allow you to vary the content of the email based upon certain conditions.
Supported variables
The VMR email subject template and VMR email body template fields support a different set of variables from the other synchronization template pattern fields (because it is based on the generated VMR properties, rather than the source data used to build those properties).
The following variables are available:
Variable name | Description |
---|---|
primary_owner_email_address | The email address of the owner of the VMR. |
description | The description of the VMR. |
aliases |
A list of tuples containing the VMR alias and its corresponding description e.g. [("alice", "The short alias"), ("meet.alice@example.com", "The alphanumeric URI alias"), ("123456", "The numeric alias")] Thus, in your email template, aliases[0][0] will extract the first alias in the aliases list, aliases[0][1] extracts the description of the first alias in the list, and aliases[1][0] extracts the next alias in the list, and so on. Note that:
Extracting a specific alias There are several ways in which you can extract a specific alias from the aliases variable. Let's assume that aliases contains the following (in any order): [("alice", "The short alias"), ("meet.alice@example.com", "The alphanumeric URI alias"), ("123456", "The numeric alias")] To extract an alias with a particular description, you can use this jinja code and text in your VMR email template: {% macro _aliases_with_description(description) -%} and this will result in an email containing: The telephone number is 123456 Alternatively, if you want to look at a start and end pattern of the alias itself to see if it is the alias you want to use, you can use this jinja code and text in your VMR email template: {% macro _aliases_with_start_and_end(aliasstart, aliasend) -%} which in this example only lists those aliases that start with meet. and end with @example.com i.e. it will result in an email containing: The URI is meet.alice@example.com Alternatively, you can use the system-generated uri_alias and numeric_alias variables as described below. |
allow_guests |
Whether to distinguish between Host and Guest participants:
|
pin | The Host PIN. |
guest_pin | The Guest PIN. |
max_callrate_in | The maximum inbound call bandwidth (kbps). |
max_callrate_out | The maximum outbound call bandwidth (kbps). |
participant_limit | The maximum number of participants allowed to join this VMR. |
tag | The VMR's service tag. |
Additional generated variables | |
action |
Possible values are:
|
uri_alias |
Set to any one of the configured URI aliases of a VMR. For example, meet.alice@example.com is a possible URI alias, as is 123456@example.com. Thus if a VMR has both of those aliases then either might appear in the uri_alias variable. (Note that 123456 is not a URI alias.) If your VMRs have several URI-style aliases, you may want to programmatically select the alias that meets your required pattern from the aliases variable as described above. It is blank if there is no URI-style alias. |
numeric_alias | Set to any one of the VMR's all-numeric aliases i.e. an alias consisting entirely of digits 0-9. It is blank if there is no numeric alias. |
For more information about how participants join conferences, see Creating preconfigured links to conferences via Connect app.
Example VMR email templates
Here are some example email body templates that you can use as the basis for your own emails.
For more details on constructing the URLs used for joining from a web browser, see Creating preconfigured links to launch conferences via Connect apps.

This is a basic email template that can be used to show joining instructions for VMRs that do not have a PIN, and where the default branding path is used.
It makes use of the {{numeric_alias}} and {{uri_alias}} variables which, when the email is generated, will be substituted with the appropriate alias values for that specific VMR.
You can remove the instructions for any of the joining methods that are not appropriate for your deployment, such as the instructions for joining via a Connect app or via telephone. If you use this example, remember to replace node.example.com with the address of your Conferencing Node, and to use your own direct dial telephone number instead of +1 555 0123.
Here are the details of your Pexip Virtual Meeting Room (VMR). You can copy and paste these instructions when inviting people to join your meetings.
From a web browser, go to: https://node.example.com/webapp/#/?conference={{numeric_alias}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}
To join from an Infinity Connect client, click pexip://{{uri_alias}} (you can download it from https://www.pexip.com/apps or from the app store for your iOS/Android device)
To join from a telephone, dial +1 555 0123 then, when prompted, enter the conference number {{numeric_alias}} followed by "#"
Instructions for using your VMR can be found at https://docs.pexip.com/admin/connect_quick.htm
You can check your connection and the quality of your video and audio - from a web browser, go to: https://node.example.com/webapp/conference/test_call

This is an enhancement to the basic email template that uses an if... else... control structure to generate two versions of content based upon whether the VMR has a Host PIN or not.
The content following {% if pin %} is used if the VMR has a Host PIN, otherwise (there is no Host PIN) the content between {% else %} {# if pin #} and {% endif %} {# if pin #} is used instead. Note that the version of the instructions for PIN-protected VMRs makes use of the {{pin}} variable.
Here are the details of your Pexip Virtual Meeting Room (VMR). You can copy and paste the "How to join" section when inviting people to join your meetings.
{% if pin %}
Your VMR is PIN-protected. How to join:
From a web browser, go to: https://node.example.com/webapp/#/?conference={{numeric_alias}}&pin={{pin}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}: then enter the PIN: {{pin}}
To join from an Infinity Connect client, click pexip://{{uri_alias}}?pin={{pin}} (you can download it from https://www.pexip.com/apps or from the app store for your iOS/Android device)
To join from a telephone, dial +1 555 0123 then, when prompted, enter the conference number {{numeric_alias}} followed by "#". When prompted, enter the PIN: {{pin}}
{% else %} {# if pin #}
Your VMR is not protected by a PIN. This means that anyone can use the room at any time. How to join:
From a web browser, go to: https://node.example.com/webapp/#/?conference={{numeric_alias}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}
To join from an Infinity Connect client, click pexip://{{uri_alias}} (you can download it from https://www.pexip.com/apps or from the app store for your iOS/Android device)
To join from a telephone, dial +1 555 0123 then, when prompted, enter the conference number {{numeric_alias}} followed by "#"
{% endif %} {# if pin #}
Instructions for using your VMR can be found at https://docs.pexip.com/admin/connect_quick.htm
You can check your connection and the quality of your video and audio - from a web browser, go to: https://node.example.com/webapp/conference/test_call

This template adds to the previous example by using nested if... else... control structures in the email to only send specific parts of the email based on certain conditions, such as whether the VMR has been created or updated, or whether it contains Host and Guest PINs.
It also demonstrates how you can define variables to contain items of text that you want to use many times within the email and then shows how to use those variables within the template.
{%set pstn_access_number = "+1 555 0123" %}
{%set node_address = "node.example.com" %}
{%set app_download_location = "(you can download it from https://www.pexip.com/apps or from the app store for your iOS/Android device)" %}
{%if action=="created" %}Welcome - your new Pexip Virtual Meeting Room (VMR) has been created.{% else %}Service update: Your Pexip Virtual Meeting Room (VMR) has been updated with new settings. {%endif%}
Here are the details of your VMR. You can copy and paste the "How to join" section when inviting people to join your meetings.
{%if allow_guests %}
How to join if you are a host:
From a web browser, go to: https://{{node_address}}/webapp/#/?conference={{numeric_alias}}&pin={{pin}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}: then enter the PIN: {{pin}}
To join from an Infinity Connect client, click pexip://{{uri_alias}}?pin={{pin}}
To join from a telephone, dial {{pstn_access_number}} then, when prompted, enter the conference number {{numeric_alias}} followed by "#". When asked enter the host PIN: {{pin}}
How to join if you are a guest:
{%if guest_pin %}
From a web browser, go to: https://{{node_address}}/webapp/#/?conference={{numeric_alias}}&pin={{guest_pin}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}: then enter the guest PIN: {{guest_pin}}
To join from an Infinity Connect client, click pexip://{{uri_alias}}?pin={{guest_pin}} {{app_download_location}}
To join from a telephone, dial {{pstn_access_number}} then, when prompted, enter the conference number {{numeric_alias}} followed by "#". When prompted, enter the guest PIN: {{guest_pin}}
{% else %} {# if guest_pin #}
From a web browser, go to: https://{{node_address}}/webapp/#/?conference={{numeric_alias}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}
To join from an Infinity Connect client, click pexip://{{uri_alias}} {{app_download_location}}
To join from a telephone, dial {{pstn_access_number}} then, when prompted, enter the conference number {{numeric_alias}} followed by "#" {% endif %} {# if guest_pin #}
If you arrive before the meeting host, you will be placed in a virtual waiting room. You will be automatically admitted to the meeting when the host arrives.
{% else %} {# if allow_guests #}
{% if pin %}
Your VMR is PIN-protected. How to join:
From a web browser, go to: https://{{node_address}}/webapp/#/?conference={{numeric_alias}}&pin={{pin}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}: then enter the PIN: {{pin}}
To join from an Infinity Connect client, click pexip://{{uri_alias}}?pin={{pin}} {{app_download_location}}
To join from a telephone, dial {{pstn_access_number}} then, when prompted, enter the conference number {{numeric_alias}} followed by "#". When prompted, enter the PIN: {{pin}}
{% else %} {# if pin #}
Your VMR is not protected by a PIN. This means that anyone can use the room at any time. How to join:
From a web browser, go to: https://{{node_address}}/webapp/#/?conference={{numeric_alias}} then enter your Name and select "OK"
From a video conferencing endpoint dial {{uri_alias}}
To join from an Infinity Connect client, click pexip://{{uri_alias}} {{app_download_location}}
To join from a telephone, dial {{pstn_access_number}} then, when prompted, enter the conference number {{numeric_alias}} followed by "#"
{% endif %} {# if pin #}
{% endif %} {# if allow_guests #}
Instructions for using your VMR can be found at https://docs.pexip.com/admin/connect_quick.htm
You can check your connection and the quality of your video and audio - from a web browser, go to: https://{{node_address}}/webapp/conference/test_call
The template above follows this basic structure:
<local variable definitions> if allow_guests (VMR distinguishes between Hosts and Guests) <host joining instructions> if guest_pin <Guest joining instructions when there is a Guest PIN> else <Guest joining instructions when there is no Guest PIN> endif else if pin (VMR has a Host PIN) <joining instructions when there is a Host PIN> else <joining instructions when there is no PIN> endif endif
Three local variables, pstn_access_number, node_address and app_download_location, are defined at the top of the template. These three lines containing the variable definitions do not appear in the generated email. The variables themselves are used at various points in the template, for example the node_address variable is used as part of the URL path for connecting via a web browser. This makes it easier to update the template if the address of the Conferencing Node changes.
These variable definitions are followed by an if... else... condition that uses the action variable to determine whether to generate a "new VMR" message or an "updated VMR" message.
The text included in the main body of the email is then generated according to a set of conditions that enable the relevant text to be included (such as whether to include PIN-related information or not). It starts with an outer condition of if allow_guests which tests whether the VMR distinguishes between Hosts and Guests, or whether the VMR has either no PIN or a Hosts-only PIN. Then within the distinguishing between Hosts and Guests section there is a nested condition that tests whether there is a Guest PIN or not. Otherwise, if the VMR does not distinguish between Hosts and Guests, there is a nested condition that tests whether the VMR has a Host PIN or no PIN at all.
Note that you can nest local variables. For example, you could define join_webapp as: {%set join_webapp = "go to https://" + node_address + "/" %} which in this case would resolve to "go to https://node.example.com/".
Constructing the device alias provisioning email
The Device email subject template and Device email body template fields contains the pattern for the email to be sent to the device owner when that device alias is first created (provisioned) or is updated.
The templates will typically contain a mixture of literal text and variables, and it can also contain control structures that allow you to vary the content of the email based upon certain conditions.
Supported variables
The Device email subject template and Device email body template fields support a different set of variables from the other synchronization template pattern fields (because it is based on the generated device properties, rather than the source data used to build those properties).
The following variable are available:
Example device email templates
Here is an example email body template that you can use as the basis for your own emails. It is shown in plain text and in HTML format.

This is a basic email template that can be used to provide the information required for registering a device.
It supplies the credentials (device_username and device_password) that must be used when registering the device_alias to Pexip Infinity.
If you use this example, remember to replace confnode.example.com with the address of your Conferencing Node.
Hi {{primary_owner_email_address}},
{%if action=="created" %}Your Infinity Connect client account has just been created.{% else %}Service update: your Infinity Connect client account has been updated with new settings. {%endif%}
This email contains the settings to use when registering your Infinity Connect client (or your traditional hardware based video endpoint).
Alias: {{device_alias}}
Server address: confnode.example.com
User name: {{device_username}}
Password: {{device_password}}
When your device is registered, other users will be able to call you using your personal video alias: {{device_alias}}
Instructions for registering your device can be found at https://docs.pexip.com/clients/registering.htm

This is a repeat of the basic email template above, but illustrates how HTML formatting may be applied.
<html>
<p>Hi {{primary_owner_email_address}},</p>
<p>{%if action=="created" %}Your Infinity Connect client account has just been created.{% else %}Service update: your Infinity Connect client account has been updated with new settings. {%endif%}</p>
<p>This email contains the settings to use for your Pexip Infinity Connect client (or your traditional hardware based video endpoint).</p>
<p>To configure your Pexip infinity client (or hardware device) you will need to enter the following settings:</p>
<p>Alias: <b>{{device_alias}}</b></p>
<p>Server address: <b>confnode.example.com</b></p>
<p>User name: <b>{{device_username}}</b></p>
<p>Password: <b>{{device_password}}</b></p>
<p>When your device is registered, other users will be able to call you using your personal video alias: {{device_alias}}</p>
<p>Instructions for registering your device can be found on the <a href="https://docs.pexip.com/clients/registering.htm" target="_blank">Pexip documentation website</a></p>
</html>

This is a more elaborate email template that shows how images and style formatting can be included.
<html>
<head>
<style>
.top-row {
padding: 4px 20px 30px 20px;
vertical-align: top;
}
.main-title {
font-size: 24px;
color: #4a4a4a;
}
.pexip-heading {
font-weight: bold;
color: #4a4a4a;
}
.left-column {
padding: 0px 20px 0px 20px;
text-align: right;
vertical-align: top;
}
.center-column {
width: 100%;
padding: 0px 20px 20px 0px;
}
.right-column {
padding: 20px;
}
p, ul {
margin-top: 16px;
margin-bottom: 16px;
}
</style>
</head>
<body>
<table style="width: 100%; border-collapse: collapse; border: 1px solid #e9e9e9; font-family: Calibri, sans-serif, serif;">
<tbody>
<tr>
<td colspan="2" class="top-row">
<p>
<span class="main-title">
Downloading and registering your client
</span>
</p>
<p>
If you don't already have a video endpoint you can use, in order to receive calls you need to download the client, and register it.
</p>
<p>
When your client is registered, other users will be able to call you directly or add you into their VMRs using your personal video alias <b>{{device_alias}}</b> (and you will be able to call them directly using their personal video aliases).
</p>
</td>
<td class="right-column" style="text-align: right; vertical-align: top;">
<img src="https://[your link]/Logo.png" width="112" height="30" alt="Pexip">
</td>
</tr>
<tr>
<td class="left-column">
<img src="https://[your link]/Download.png" width="46" height="46" alt="Download">
</td>
<td class="center-column">
<p>
<span class="pexip-heading">
Step 1: Download the client:
</span>
<ul>
<li>
The client can be downloaded <a href="https://www.pexip.com/download-infinity-connect">here </a>
</li>
<li>
You can install Pexip directly from the app store for your iOS/Android device
</li>
</ul>
</p>
</td>
<td class="right-column"/>
</tr>
<tr>
<td class="left-column">
<img src="https://[your link]/App-Provisioning.png" width="43" height="44" alt="App">
</td>
<td class="center-column">
<p>
<span class="pexip-heading">
Step 2: Configure and register your client automatically:
</span>
<p>
{%set provdata = "name=" + device_username|capitalize + "®istrationHost=example.com®istrationAlias=" + device_alias + "&adfsFederationServiceName=adfs.example.com&adfsResource=https://exampleappsso.local&adfsClientID=28c99cbf-a424-4265-ab39-e75185e7be47&adfsRedirectURI=https://[your link]/api/client/v2/oauth2_redirect" %}
Simply open <a href="https://[your link]/api/client/v2/provision?{{pex_url_encode(('data', provdata|pex_base64))}}">this link</a> to configure your client automatically. (use your AD credentials when asked to sign in)
</p>
</p>
</td>
<td class="right-column"/>
</tr>
<tr>
<td class="left-column">
<img src="https://[your link]/Endpt-Provisioning.png" width="42" height="57" alt="Endpoint">
</td>
<td class="center-column">
<p>
<span class="pexip-heading">
If you already have an Endpoint:
</span>
<ul>
<li>Alias: <b>{{device_alias}}</b></li>
<li>Server address: <b>example.com</b></li>
<li>User name: <b>{{device_username}}</b></li>
<li>Password: <b>{{device_password}}</b></li>
</ul>
</p>
</td>
<td class="right-column"/>
</tr>
<tr>
<td class="left-column">
<img src="https://[your link]/Info-Provisioning.png" width="45" height="45" alt="Help">
</td>
<td class="center-column">
<p>
<span class="pexip-heading">
Help and troubleshooting:
</span>
<p>
Instructions for registering your device can be found on the <a href="https://docs.example.com/using_connect_desktop.htm#registering" target="_blank">documentation website</a>
<br>
The self service portal for employees can be found <a href="https://[your link]/portal/">here</a> (use your AD credentials)
</p>
</p>
</td>
<td class="right-column"/>
</tr>
</tbody>
</table>
</body>
</html>
This will create an email message that looks like this:
Remember to change the server and image file names and locations to match your own environment if you use this as a basis for your own template.
The images used in these examples are available in the
If you are provisioning Connect app users with their registration details, see Registering and provisioning the Connect desktop app for some more examples of provisioning email template content.
Sending reminder emails
You can manually send reminder emails for a specific VMR or device alias, or for all VMRs and devices associated with a specific sync template. Note that:
- No status information is shown on the page when sending email reminders (as the reminder process does not resync the content from the LDAP data source). However, all related activity is recorded in the administrator log as usual.
- You can only resend emails for VMRs or device aliases that have been created by an LDAP sync template.
Sending a reminder email to a VMR owner
To send a reminder email to the owner of a VMR:
- Go to .
- Select the Virtual Meeting Room(s) for which you want to send reminders (select the checkbox next to the VMR name).
- From the Action drop-down list, select Send reminder emails to VMR owners.
-
Select
.This will generate and send an email to the owner of each selected VMR.
To see or change the "owner" of a VMR, go into the VMR details page and show the Owner's email address field is at the bottom of that section.
. TheSending a reminder email to a device owner
To send a reminder email to the owner of a device alias:
- Go to .
- Select the device aliases for which you want to send reminders (select the checkbox next to the device alias name).
- From the Action drop-down list, select Send reminder emails to device owners.
-
Select
.This will generate and send an email to the owner of each selected device.
To see or change the "owner" of a device, go into the device alias details page and review the Owner's email address field.
Sending reminder emails for VMRs and devices associated with a sync template
This option is useful if you have initially configured your system not to send emails — for example while you are ensuring that the VMRs and devices are being created as expected — and then want to send emails to all of those generated VMRs and devices associated with that template (as the synchronization process only automatically generates emails for an existing VMR or device if its configuration changes in some way).
To send reminder emails for all VMRs and devices associated with a specific sync template:
- Go to .
- Select the sync template(s) for which you want to send reminders (select the checkbox next to the template name).
- From the Action drop-down list, select Send VMR and device reminder emails for selected LDAP sync templates.
-
Select
.This will generate and send an email to the owner of each VMR and device that is associated with that LDAP sync template.