Транзакционные письма

Транзакционные письма это мощный инструмент для отправки писем с кастомной логикой. В письмо можно передавать переменные и зашивать различную логику. Такие письма бывают 2 типов: сервисные и маркетинговые. Сервисный тип письма игнорирует статус подписки пользователя, и традиционно используется для отправки служебных писем:

  • восстановление пароля
  • подтверждение подписки (double opt-in (DOI))
  • подтверждение регистрации
  • процессы, связанные с оплатой (счёт на оплату, чек, возврат денег на счёт, проблемы с оплатой и др.)

🚧

Один пользователь может получить не более 5 сервисных писем за 1 час

Маркетинговый тип письма используется для маркетинговых рассылок, например:

  • рассылки купонов
  • уникальные скидки и товарные предложения для постоянных клиентов

🚧

Пользователь может отписаться от маркетинговых кампаний и больше не сможет получать письма, пока не подпишется снова

отписка распространяется на триггерные рассылки

Использование переменных в верстке письма

Тело запроса – JSON объект с данными, которые должны использоваться в письме. Пример для письма о подтверждении заказа:

{  
    "TransactionId": "123",  
    "Products": [{  
        "Id": 123,  
        "Name": "Sample Product Name",  
        "Url": "http://example.com/product1",  
        "PictureUrl": "http://example.com/product1image.png",  
        "Price": 13130,  
        "OldPrice": 14500  
    }, {  
        "Id": 321,  
        "Name": "Another product name",  
        "Url": "http://example.com/product2",  
        "PictureUrl": "http://example.com/product2image.gif",  
        "Price": 16120,  
        "OldPrice":""  
    }]  
}

Доступ к переменным из тела запроса осуществляется при помощи обращения к объекту CampaignProcess.Data. Пример верстки письма:

{% if CampaignProcess.Data %}
		
	<h2>Состав заказа:</h2>

	{% for product in CampaignProcess.Data.Products %}
		<p>{{product.Name}}</p>
	{% endfor %}

	{% assign productIds = CampaignProcess.Data.Products | map : "Id" | join : ","%}
	{% assign reco = Products.Related.productIds %}
	{% assign recoSize = Products.Related.productIds | size %}
	{% if recoSize > 0 %}
	
        <h2>Рекоммендации к заказу:</h2>

        {% for product in reco %}
            <p>{{product.Name}}</p>
        {% endfor %}

	{%endif%}

{% else %}
	{{ Message | cancel : "No data" }}
{%endif%}

<a target="_blank" href="{{Message.CancelThisSubscriptionUrl}}">Отписаться</a>

Для расширения функционала шаблонизации, в письмах Retail Rocket используется язык Liquid. Liquid позволяет внедрять в шаблон дополнительные данные о подписчиках и товарах, формулировать условия «если», обращаться к циклам и применять стандартные фильтры.

Справочная информация: