Message templates

Messages templates can be defined to be used with Action Rules. Pilvi™ provides a default set of templates for you to get started with, but you can modify the templates to your liking or create new templates.


Message templates use the Mustache syntax

Variables are used by wrapping them in double-braces


List variables are indicated with square brackets [] at the end of variable name. For ex. a list variable of profile's properties is[]

You can loop through the list variable by using a Section. Section starts with a # and ends with a /.

    <li>{{label}}: {{value}}</li>

If a value isn't available for a certain variable, you can use inverted section to render a section instead.

In the example below, row 3 is rendered if the variable value contains a value. If not, then row 4 is rendered instead:

1: <ul>
2: {{}}
3:      {{#value}}<li>{{label}}: {{{value}}}</li>{{/value}}
4:      {{^value}}<li>{{label}}: Placeholder text</li>{{/value}}
5: {{/}}
6: </ul>

Note properties[].value needs to be wrapped in triple-braces so the HTML is properly rendered for all Property value types.

Variable availability varies between messsage template types. Available contexts define which variables are available.


Each template can be localized for available languages.

The locale in which the emails are sent, are chosen dynamically based on the

  • language that the customer is currently using on the Shop/Console/Manager.
  • or by a user specific language value, in cases where the email sending originates from a background process where it doesn't relate to any UI action.
  • fall back to Site default value DEFAULT_LOCALE_CODE (usually English)


Message Template Type Context
PROFILE User Profile
SERVICE User Profile Service
SERVICE_CANCELED User Profile Service
INVOICE_PAYMENT_FAILED Profile Invoice Payment
INVOICE User Profile Invoice Payment
INVOICE_CREATED Profile Invoice Payment
INVOICE_REMINDER Profile Invoice Payment
INVOICE_OVERDUE Profile Invoice Payment

System templates

System message templates are tied to critical processes of the Pilvi™ platform. Multiple versions of these templates cannot be created.

Message Template Type Context


All templates

Variable Name Description / Value source Preference: COMPANY_NAME Preference: COMPANY_EMAIL
company.address Preference: COMPANY_ADDRESS
company.zipcode Preference: COMPANY_ZIP_CODE Preference: COMPANY_CITY Preference: COMPANY_COUNTRY Preference: COMPANY_PHONE Preference: COMPANY_SITE_URL
company.logo.url Preference: COMPANY_LOGO_URL Preference: COMPANY_VAT_ID
message.title Title/Subject of the message template Site name. My Shop
site.console.url Site Console Root URL. ex.
site.console.profile.url Site Console Profile Page URL. ex.
site.console.invoices.url Site Console Invoices Page URL. ex. Site Console Services Page URL. ex.
site.manager.url Site Manager URL. ex.
site.domain Site's domain ex. Site's shop url ex.
year Current year

Template specific

Message Template Type Variable Name Description / Value source
SERVICES_EXPIRING numberofdaysbeforeexpire Days before Service Expiration Date (prev. numberofdaysbeforeexpire)
SERVICES_EXPIRING expiringservices List of expiring services. Contains same variables as Service context
INVOICE_REMINDER numberofdaysbeforeduedate Days before Invoice Due Date
INVOICE_OVERDUE numberofdaysafterduedate Days after Invoice Due Date
SERVICE numberofdayssinceservicecreated Days after Service has been created
SERVICE createdservices List of created services. Exists if numberofdayssinceservicecreated defined. Contains same variables as Service context
SERVICE numberofdayfromservicetrialstart Days after Service Trial period has been started.
SERVICE numberofdaystillservicetrialend Days till Service Trial period end.
SERVICE trialservices List of trial services. Exists if numberofdayfromservicetrialstart or numberofdaystillservicetrialend defined. Contains same variables as Service context
SERVICE / ORDER productno From PRODUCT_NUMBER condition

User context

Variable Name Description / Value source User Id User Email User Full Name
user.firstname User Firstname
user.lastname User Lastname

Profile context

Variable Name Description / Value source Profile Id Profile No Profile Name
profile.balance Profile Balance
profile.debt Profile Debt Profile Delivery Address Street Profile Delivery City Profile Delivery Zip Code Profile Delivery State Profile Delivery Country
profile.address.invoice.street Profile Invoice Address Street Profile Invoice City
profile.address.invoice.zipcode Profile Invoice Zip Code
profile.address.invoice.state Profile Invoice State Profile Invoice Country List of active Services on the Profile. Contains same variables as Service context
profile.vatnumber Profile VAT Number
profile.einvoiceovt Profile Electronic Invoice address (OVT)[].name Profile Property Name[].label Profile Property Label[].value Profile Property Value

Service context

Variable Name Description / Value source Service Id Service No Service Name
service.url Service Page URL
service.expiredate Service Expiration Date[].name Service Property Name[].label Service Property Label[].value Service Property Value
service.product The Product of the Service. Contains same variables as Product context

Order context

Variable Name Description / Value source Order ID Order Number
order.created Order creation time, localized
order.subtotal Order Subtotal, the price of the products ordered
order.balanceconsumed The amount of account balance consumed Order Total. The total price of the order after reductions such as discounts, account balance use
order.totalwithvat Order Total With VAT
order.vat.rate Order VAT Rate
order.vat.amount Order VAT Amount
order.reference Customer reference
order.additionalinfo Order additional info
order.products List of Products in Order. Contains same variables as Product context
order.invoice Invoice from Order. Contains same variables as Invoice context

Contract context

Variable Name Description / Value source Contract ID Contract Number
contract.startdate Contract start date
contract.invoicedtill Contract invoiced till date
contract.paidtill Contract paid till date
contract.reference Contract customer referenced
contract.created Contract creation time, localized

Product context

Variable Name Description / Value source Format Product Id number Product Number number Product Name string
product.plan Product Plan string
product.image.url Product Image URL string Product Group Name string[].name Product Property Name string[].label Product Property Label string[].value Product Property Value string
product.billingperiod Product Billing Period 1 month
product.billingprice Product Billing Price (price * billingperiod) 0.00
product.billingpricewithvat Product Billing VAT Price (price * billingperiod) 0.00
product.trialperiod Product Trial Period 1 month
product.price Product Price (price in product price interval) 0.00
product.priceperiod Product Price Period 1 month
product.pricewithvat Product VAT Price 0.00

Invoice context

Variable Name Description / Value source Format Invoice Id number Invoice Number number
invoice.issuedate Invoice Issue Date date, localized
invoice.duedate Invoice Due Date date, localized
invoice.sum Invoice Sum In Base Currency 0.00
invoice.sumvat Invoice Sum With VAT In Currency 0.00
invoice.sumopen Invoice Sum Open 0.00
invoice.sumopenvat Invoice Sum Open With VAT In Base Currency 0.00
invoice.referenceno Invoice Reference Number string
invoice.customerreference Invoice Customer Reference Number string
invoice.items[].id InvoiceItem Id number
invoice.items[].name Product name from invoiced service created string
invoice.items[].description InvoiceItem Description string
invoice.items[] InvoiceItem Service Id number
invoice.items[].multiplier InvoiceItem Billing Interval Multiplier number
invoice.items[].price InvoiceItem Price number
invoice.items[].sum InvoiceItem Sum number
invoice.items[].sumvat InvoiceItem Sum VAT number
invoice.items[].unit InvoiceItem Billing Interval Unit string
invoice.items[].recurring InvoiceItem Recurring Service boolean
invoice.items[].vatrate InvoiceItem VAT Rate number
invoice.items[].vatamount InvoiceItem VAT Amount number
invoice.items[].billingperiodstart Billing Period Start Date date
invoice.items[].billingperiodend Billing Period End Date date
invoice.address.seller.street Invoice Seller Address Street string Invoice Seller City string
invoice.address.seller.zipcode Invoice Seller Zip Code string
invoice.address.seller.state Invoice Seller State Name string Invoice Seller Country Name string
invoice.address.invoice.street Invoice Address Street string Invoice Address City string
invoice.address.invoice.zipcode Invoice Address Zip Code string
invoice.address.invoice.state Invoice Address State Name string Invoice Seller Country Name string Invoice Delivery Address Street string Invoice Delivery City string Invoice Delivery Zip Code string Invoice Delivery State Name string Invoice Delivery Country Name string
invoice.contract If invoice is created from Contract. Contains same variables as Contract context
invoice.payments List of Invoice Payments. Contains same variables as Payment context list
invoice.url Url to invoice in console url

Payment context

Variable Name Description / Value source
payment.sum Sum of Payment Payment processor ID
payment.processor.code Payment processor code Payment processor name
payment.created Payment creation time, localized
payment.message Payment message, if exists. Can contain additional details of the payment for ex. when payment needs customer authentication or payment has failed