Сегодня поговорим о самых популярных среди владельцев ИМ триггерах — транзакционных.

Что такое транзакционный триггер?

Многие из пользователей retailCRM знакомы с этим понятием. Но если Вы слышите такую формулировку впервые, то расскажу специально для Вас :)

Если Вы знаете, в CRM-системе retailCRM есть такой инструмент автоматизации, как триггер. По сути, это небольшой кусок кода внутри системы, позволяющий, например, задать автоматическую постановку задачи на менеджера по какому-нибудь событию (к примеру, товар поступает в наличие — перед глазами менеджера сразу же всплывает задача перезвонить клиенту, который интересовался этим товаром). Или отправить письмо (SMS) клиенту о том, что его заказ был доставлен. При этом триггер самостоятельно будет реагировать на любое событие в системе (смена статуса, изменение информации о заказе, клиент зашёл на сайт и т.д.) и активировать настроенное Вами действие по этому событию.

Триггеры, которые реагируют на смену статуса заказа и уведомляют об этом Вашего клиента, называются «транзакционные».

Ниже приведу примеры самых популярных транзакционных триггеров, которые настраивают пользователи retailCRM. Можете брать их на вооружение

Уведомление о том, что заказ принят.

Кроме странички на сайте «Спасибо за заказ», полезно отправлять клиенту письмо о том, что его заказ принят. Заодно можно предложить сопутку или релевантные товары.

Как настроить?

Заходите в триггеры, и прописываете код, настраиваете действие и шаблон письма. Всё просто :)

Пример триггера:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getOldValue('status') == null and
changeSet.getNewValue('status').getGroupCode() == 'new' and 
(not (order.getCustomerComment() matches "/(C11)|(drop1)|(MPB)|(PN)|(OPN)/") or
order.getCustomerComment() == null)

В условии пишем:

(date('now') < date("today [время закрытия Вашего магазина]") and date('now') >
date("today [время, после которого можно принимать заказы]")) and
order.getOrderMethod() != null and order.getOrderMethod().getCode() in ["способ оформления заказа"]

Пример шаблона письма к нему:

    Здравствуйте, !
Ваш заказ № принят и поступил в обработку. 
Товар: 
{% for op in order.availableOrderProducts %}
 — шт.
{% endfor %}
Наш менеджер свяжется с Вами в ближайшее время для уточнения деталей.
Если у Вас появились дополнительные комментарии к заказу или Вы не указали какие-то данные, пришлите их ответом на данное сообщение. Просим Вас не создавать отдельное письмо — оно будет считаться новым обращением и попадет в конец очереди.
</p>
{% if order.site.code == 'MPB' %}
<p>
—
С уважением,
</p>
{% endif %}

Пример шаблона SMS:

Уважаемый(ая) , Ваш заказ №  принят. Наши менеджеры свяжутся с Вами в течение некоторого времени.
Сайт — . [— здесь указывается ссылка на сайт с которого был сделан заказ.]

Новый заказ в нерабочее время:

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getOldValue('status') == null and
changeSet.getNewValue('status').getGroupCode() == 'new' and 
(not (order.getCustomerComment() matches «/(C11)|(drop1)|(MPB)|(PN)|(OPN)/») or
order.getCustomerComment() == null)

В условии:

(date('now') <= date('today [время, после которого можно принимать заказы]') or
date('now') >= date('today [время закрытия Вашего магазина]')) and
order.getOrderMethod() != null and order.getOrderMethod().getCode() in ["способ оформления заказа"]

Шаблоны писем и SMS

Письмо:

    Здравствуйте, !
Ваш заказ № принят и поступил в обработку.
Товар: 
{% for op in order.availableOrderProducts %}
 — шт.
{% endfor %}
К сожалению, наш рабочий день уже закончился.
Наш менеджер обязательно свяжется с Вами завтра!
Мы работаем с _ по _ по московскому времени.
Если у Вас появились дополнительные комментарии к заказу или Вы не указали какие-то данные, пришлите их ответом на данное сообщение. Просим Вас не создавать отдельное письмо — оно будет считаться новым обращением и попадет в конец очереди.
</p>
{% if order.site.code == 'MPB' %}
<p>
—
С уважением,
</p>
{% endif %}

SMS:

Уважаемый(ая) , Ваш заказ №  принят. К сожалению, рабочий день уже закончился, мы обязательно свяжемся с Вами завтра!
Сайт — . [здесь указывается ссылка на сайт с которого был сделан заказ].

Согласовано с клиентом

Триггер:

В фильтре:

changeSet.hasChangedField('status') and changeSet.getNewValue('status').getCode() == 
'send-to-assembling'

Письма и SMS:

Письмо:

    Уважаемый(ая) ,
Ваш заказ № подтверждён. Заявка поступила в обработку на склад.
Товар: 
{% for op in order.availableOrderProducts %}
 — шт.
{% endfor %}
Товар будет отправлен в ближайшее время.
Скоро мы вышлем Вам трек-номер для отслеживания посылки.
Данное письмо сформировано автоматически и не требует ответа.
</p>
{% if order.site.code == 'MPB' %}
—
С уважением,
{% endif %}

SMS:

Уважаемый(ая) , Ваш заказ №  подтверждён. Заявка поступила в обработку на склад.Скоро мы вышлем Вам трек-номер для отслеживания посылки.
Сайт — .[здесь указывается ссылка на сайт с которого был сделан заказ].

Оплата поступила

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getNewValue('status').getCode() ==
'prepayed'

Письма и SMS:

Шаблон письма:

    Уважаемый(ая) ,
Ваш заказ № успешно оплачен.
Заявка поступила в обработку на склад.
</p>
{% if order.site.code == 'MPB' %}
<p>
—
С уважением,
подпись
</p>
{% endif %}

Шаблон SMS:

Уважаемый(ая) , Ваш заказ №  успешно оплачен. Заявка поступила в обработку на склад.
Сайт — .[здесь указывается ссылка на сайт с которого был сделан заказ].

Передан в доставку

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getNewValue('status') and
changeSet.getNewValue('status').getCode() == 'send-to-delivery'

Шаблон письма и SMS:

Письмо:

    Уважаемый(ая) ,
Ваш заказ №  отправлен.
Трек номер .
Отследить заказ вы можете на сайте 
{% if order.deliveryType != null and order.deliveryType.code == 'russian-post' %}
    <a href="<a href=" https:="" <a="">www.pochta.ru</a>="" tracking#"=""><a href="https://www.pochta.ru/tracking#">https://www.pochta.ru/tracking#</a>">Почта России
    {% elseif order.deliveryType != null and order.deliveryType.code in ['sdek-to-door', 'sdek-to-point'] %}
    <a href="<a href=" <a=""></a><a href="<a href=" <a="" http:="" www.edostavka.ru="" track.htm"="">http://www.edostavka.ru/track.htm</a>">http://www.edostavka.ru/track.htm">http://www.edostavka.ru/track.htm">http://www.edostavka.ru/track.htm"><a href="http://www.edostavka.ru/track.htm">http://www.edostavka.ru/track.htm</a>">СДЭК
    {% elseif order.deliveryType != null and order.deliveryType.code == 'international' %}
    <a href="http://www.edostavka.ru/track.htm">Международная доставка</a>
    {% endif %}
—
С уважением,
подпись
{% endif %}

SMS:

Уважаемый(ая) , Ваш заказ отправлен  (Название логистической компании, например EMS, Почта России,CDEK, или курьер)!
Трек-номер отправления .
Мы надеемся, что вы останетесь довольны!
С уважением,

Заказ передан курьеру

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getNewValue('status').getCode() ==
'[статус, при котором заказ передаётся курьеру]'

Шаблон письма и SMS:

Письмо:

    Здравствуйте, !
Ваш заказ № передан курьеру. 
Товар: 
{% for op in order.availableOrderProducts %}
 — шт.
{% endfor %}
Курьер свяжется с Вами в ближайшее время для уточнения деталей.
</p>
{% else %}
<p>
—
С уважением,
подпись
</p>
{% endif %}

SMS:

Уважаемый(ая) , Ваш заказ отправлен  
Способ доставки: курьером.
: Заказ  доставит Илья.
Дата доставки: {{ order.deliveryDate|date('d.m.Y H:i:s') }}.
Сумма: .
Телефон курьера:[здесь телефон курьера]

Посылка прибыла в пункт выдачи

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getNewValue('status').getCode() ==
'[статус заказа при прибытии в ПВЗ]'

Письма и SMS:

Письмо:

    Уважаемый(ая) ,
Ваш заказ № на сумму  доставлен.
Посылка ожидает в почтовом отделении по Вашему адресу.
</p>
—
С уважением,
подпись
{% endif %}

SMS:

, Ваша посылка прибыла! Спешите забрать! Номер посылки  Вы можете забрать посылку с паспортом на почте не дожидаясь извещения. Спасибо за заказ!

Заказ ожидает в пункте самовывоза

Триггер:

В фильтре пишем:

changeSet.hasChangedField('status') and changeSet.getNewValue('status').getCode() ==
'[статус заказа при прибытии в ПВЗ]'

Письма и SMS:

Письмо:

    Уважаемый(ая) ,
Ваш заказ № на сумму  доставлен и ожидает в пункте самовывоза по адресу {{ order.getIntegrationDeliveryData().getPickuppointAddress() }}.
</p>
—
С уважением,
подпись
{% endif %}

SMS:

Здравствуйте :) Пожалуйста, заберите Заказ от  в Вашем почтовом отделении ([postoff]). Номер посылки: . Сумма:  руб.

Я привёл примеры самых популярных транзакционных триггеров. Надеюсь, статья оказалась для Вас полезной :)

Возникнут вопросы — напишите мне hello@retailcrmguru.ru

Евгений Коваленко
Создатель RetailCRMGuru