Sending a Transactional E-mail

Transactional campaigns are specific scenarized campaigns, because they allow you to send a customized message to a profile, following an action performed by him and whose nature is such that this message is expected by this profile.

It is therefore truly an interaction started by the profile:

  • By a contract or a transaction made between this profile and your company.

  • By a request specifically made by this profile.

Because of that, this message is not considered as a marketing message and no filter is applied on transactional campaigns (sending optimizer, commercial pressure, marketing consent,…).
The concept of subscription cannot be applied to transactional e-mails.

  • It does not require consent nor a specific subscription.

  • It cannot generate a general consent or the opt-in to a subscription.

It is therefore truly a unique and specific communication.
For example: order confirmation, brochure request, password recovery,…

Creating a transactional campaign

Creating a transactional e-mail is done in the same way as the creation of mass e-mails and regular scenarized e-mails, via the "Manage e-mail campaigns" application (Catalog > E-mails > Manage e-mail campaigns) .

Click on the "+ Create a new campaign" button. Next, you will have to choose the type of campaign that you want to create.

Choose the third tab: Transactional campaign.

images/download/attachments/624689736/image2019-9-3_11-47-41.png
You can either create your campaign via a sending template or parameter it from A to Z.

As a whole, the creation a transactional campaign follows the general steps for the new e-mail engine, just as it was described in the previous chapter.

Some significant differences should however be noted.

Sending domain

To send a transactional campaign, it is necessary to use a sending domain specifically identified as transactional sending domain.

To activate a transactional sending domain, we invite you to contact your account manager/ Customer Success Manager.

Afterwards, you will have to specify this sending domain in the advanced parameters of General Data (step 1), in the "Sender e-mail address" section.

You will be able to select the transactional sending domain among the existing sending domains of your licence.
images/download/attachments/624689736/worddavc4d0713087ae91f5438225d472b2c637.png

Absence of targeting module

A transactional e-mail is not a marketing e-mail. It is the answer to a specific action of a profile. Consequently, it makes no sense to use the targeting module: every profile who performed the action will be targeted, without any filter. On the contrary, profiles who did not perform this action cannot be contacted.

There are therefore only four steps to the creation of a transactional campaign. You will directly go from defining the general data to creating the message.

Activating the sending

Once your campaign is ready, a summary of its parameters will be displayed.
Next, you will have to activate the sending. Because of their nature, transactional e-mails are therefore not one-off e-mails but rather continuous sendings which will be automatically sent whenever the trigger action is performed by a profile.
To do so, click on the green button "Activate sending".
images/download/attachments/624689736/worddavb544241a183a8ca5ce33eaa0090c6ad1.png

Tip

Clicking on the "Validate" button will only save the campaign but will not activate the sending. It should therefore only be used if you still want to modify the campaign later.

Trigger

Sending transactional campaigns is possible via the "Scenarios" module of ACTITO or by API call.

Loop personalizations

A specificity of transactional e-mails is that they enable you to use loop personalizations when you use sources in which several lines of data are associated, such as typically Custom Tables.
Instead of replacing a personalization variable by a single value, it is therefore possible to display:

  • A set of related values (for example, the article name and the corresponding amount).

  • Several of these sets one after the others (for example, the last 3 purchases, each of those being characterized by the article name and the amount).

Format of the e-mail

The use of loops must be implemented via HTML code. If you want to use this method, keep this constraint in mind when you create your message: the HTML mode is mandatory.

Set up

Adding a loop personalization to the content of your e-mail is done by inserting HTML code used for this purpose.

You will need to use the parameter "data-actito-each" and to define it as "loop name": ${loop name in plural}: data-actito-each ="example:${examples}"

Each element of the loop needs to follow the format: ${loop name.element name}: ${example.element}

Let's take a practical example:

We want to display a loop containing the last purchases made by contacted profiles and, for each one, to display the article name and its price.
You would need to insert the following piece of code:

data-actito-each
<div data-actito-each="purchase:${purchases}">
<span> Article: ${purchase.article} </span>
<span> Price: ${purchase.price} </span>
</div>

Personalization parameters

After inserting the code in the HTML, you have to parameter all the variables used in the loop personalization.

To do so, go to the personalization management modal window.

images/download/attachments/624689736/image2019-9-3_12-4-49.png

To reach the loops, you first of all need to activate the "Expert mode" at the top right of the screen. A new section called "Loop personalization" will appear.

images/download/attachments/624689736/worddavc9f99d3d8e029915bdfc9e28405a34ca.png
The value for each element of the loop can be provided by two types of sources:

  • From tables of the Data Model (Custom tables): you will need to add the data source beforehand.

  • Via API : please see the end of this chapter for additional information on how to use loops via API.

If the "Loop personalizations" section appears in the interface but does not display anything when you expand it by clicking on the small arrow, it means that the system acknowledged your attempt to set up a loop, but your html is incorrect. Check your code, especially the name of the loop and of the variables.

Preliminary step: Data sources

Before defining the values of the loop personalizations, it is necessary to add the data source. Typically, loops will refer to Custom Tables.

In the "Data Source" section, select the type of source and the name of the table you want to use.

Value definition

After selecting the source, you can define the values taken by the variables on the loop, in the "Loop personalizations" section.

Select the data source chosen during the preliminary step and assign it to the name of the loop. Each loop can only use one data source.

Next, link the various elements of the loop to the fields of the source table.

Defining the number of displayed elements

In addition to letting you display a set of values, loops also enable you to display several of these sets one after the others.

You need to specify the number of elements that you want to display. Without additional parameters, the loop will call every entry of the data source.

To do so, you need to go to the Data Source parameters, by clicking on the cog icon to the right of the data source line.

images/download/attachments/624689736/worddav1c264a771e885a2438f9b9b8ba15b241.png
You will be able to display:

  • The maximum number of displayed elements

  • What will be the sorting order of the elements and on the basis of which attribute of the source table.
    images/download/attachments/624689736/worddav1395899e409a3fd09ed01b935b8433ad.png

It is also possible to add a filter to the source. In doing so, the only elements of the source taken into account are those which match the criteria you defined based on attributes of the table and aggregates calculated on them.

Tip

You can also choose the data Provided by the scenario: this option should be used for your scenarized sendings when the start block of the scenario is related to the value of the personalization (For example, if the scenario is triggered by a ticket creation). This will ensure that the information which triggered the scenario and the information used in the personalization are the same.
This option is only available for scenarized sendings (including transactional).

Next, save your parameters in the top right corner.
A green 'V' on the cog icon will confirm that the source has been parametered.

images/download/attachments/624689736/worddav2ee841465d6b958983bbffad1669b44b.png

Constraints

Loops cannot be used with multi-values attributes.

It is not possible to define default values in loops.

Use of APIs

In addition to Custom Tables, data sources can be provided by API and therefore trigger the transactional e-mail sending by means of a system external to ACTITO.

To use APIs as data sources, you need to assign the option "Provided by API" to your loop personalization in the personalization management modal window.

images/download/attachments/624689736/worddav495aa1b49ef4c76e6af194dbceb1f3ae.png
During the last step, make sure to click on "Activate sending", otherwise it will not be possible to trigger it via API.

Triggering a transactional e-mail via API

When a profile meets the conditions related to the purpose of your transactional e-mail, it is possible to trigger it via the operation POST/entity/{e}/mail/{m}/profile{p}
You will need to provide the following parameters:

  • The entity on which the campaign is stored

  • The id of the campaign (auto-generated Id or technical name)

  • The id of the targeted profile (profileId ou pair "keyAttribute=value")

  • Variables:

This call allows you to submit the variables related to the personalization loops of your transactional e-mail.
The "variables" parameter must be made of:

  • "key": You always need to specify "externalData" to trigger a loop via API

  • "structuredValue": This is the name of the personalization, defined as an array containing the elements of the loop as pairs of "elementName": "value". The use of the "structuredValue" parameter is mandatory for using a loop. However, the "values" parameter should not be used.

Example of JSON
[{
"key": "externalData",
"structuredValue": {
"purchases": [{
"article": "Screwdriver",
"price": "25"
},
{
"article": "Hammer",
"price": "32"
}
]
}
}]