Shop-Script умеет автоматически отправлять email- и SMS-уведомления покупателям через некоторое время после изменения статуса заказа. Такие отложенные по времени сообщения называются триггерными рассылками.
Триггерные рассылки удобно отправлять покупателям, например, для того чтобы сделать им дополнительное предложение или напомнить о необходимости оставить отзыв о купленном товаре.

Как настроить отправку триггерных рассылок
- Для создания новой рассылки перейдите в раздел бекенда Shop-Script «Маркетинг → Настройки → Триггерные рассылки» и щелкните «Новое сообщение».
- Укажите название сообщения — оно не будет показано получателям, но будет отображаться в бекенде для вашего удобства.
- Выберите транспорт, т. е. способ отправки уведомления: email или SMS.
Для отправки SMS-уведомлений установите в «Инсталлере» плагин интеграции с SMS-провайдером и настройте подключение к провайдеру в разделе «Настройки» (секция «SMS») в бекенде Shop-Script.
- Укажите правила отправки сообщения:
- через сколько часов после перехода заказа в указанный статус нужно отправлять сообщение
- нужно ли отправлять уведомление для повторных заказов покупателя
- Выберите источник заказа, для которого должна срабатывать рассылка.
- Выберите отправителя уведомления.
- Введите тему сообщения, если выбран email-транспорт.
- В поле «Текст сообщения» подставится стандартный шаблон, в котором при отправке каждого сообщения вместо переменных будут подставлены актуальные значения. Например, переменная {$order.id_str} будет заменена на номер того заказа, о котором отправлено уведомление. Для просмотра полного списка доступных переменных используйте ссылку «Шпаргалка» в нижней части страницы.
- Настройте задачу cron для автоматической отправки триггерных рассылок. Это необходимо для того, чтобы отправка могла выполняться без вашего участия. Щелкните по ссылке «Как настроить» в боковой панели, скопируйте текст команды из всплывающей области и укажите эту команду при создании задачи cron в контрольной панели вашего хостинга.
50 комментариев
Добрый день,
Не получается включить cron на хостинге nic.ru
http://hosting.nic.ru/support/cron.shtml#n2
Все настроено.
Вот что выдается в результате на почту админу:
Cron: 0 1 * * * www-data /usr/bin/php -q /home/*******/*****.ru/docs/cli.php shop OrderreminderSendnotif
/bin/bash: 0: command not found
Та же проблема.
Служба поддержки хостинга говорит что Для запуска php-скрипта можно воспользоваться следующей командой:
cd /home/*******/*****.ru/docs/ && /opt/php/bin/php -c /home/*******/etc/php.ini /home/*******/*****.ru/docs/cli.php
И более ничего не должно быть в этой строке, т. к. команда такого типа:
cd /home/*******/*****.ru/docs/ && /opt/php/bin/php -c /home/*******/etc/php.ini /home/*******/*****.ru/docs/cli.php shop followup
или
/opt/php/bin/php -c /home/mosbaby/etc/php.ini /home/mosbaby/mosbaby.ru/docs/cli.php shop followup
ни к чему не приводит
Или предлагают вариант адрес скрипта с параметрами.
/usr/local/bin/wget -O - -q "http://nic.ru/cron.php?var1=xxx&var2=yyy"
Но где взять эти параметры? Помогите!
Похоже, что это ограничение используемого вами хостинга. Если вам не удастся добиться от администрации хостинга обеспечения поддержки параметров при вызове PHP-скрипта в консольном режиме, видимо, остаётся только сменить хостинг.
Попросите администрацию хостинга пояснить, чем вызвано введение такого ограничения.
Вот так вроде должно работать
sh - c "/opt/php/bin/php -c $HOME/etc/php.ini $HOME/домен/docs/cli.php shop followup"
Помогите, пожалуйста, найти решение.
Отложенные сообщения, формирует разные ссылки при ТЕСТОВОМ сообщении и НАСТОЯЩЕМ (по крону, через 14 дней).
При отправке тестового сообщения всё нормально, формирует ссылку вида: https://site.com/tovar/
При отправке реального отложенного сообщения через 14 дней клиенту формирует ссылку: https://site.comhttp//site.com/tovar/
(Вставляет посередине лишнее "http//site.com" причем без двоеточия.)
При этом в письме есть еще ссылки на главную и в личный кабинет. Они "нормальные".
В шаблоне сообщения указано так, как советовал Михаил на форуме https://support.webasyst.ru/936/otlozhennye-soobsh...
CRON настроем так:
@daily
php /var/www/user/data/www/site.com/cli.php shop followupЕсли тестовое сообщение с правильными ссылками, значит проблема в CRON? А может в комбинации смарти+крон?
Как временное решение проблемы можно предложить что-то вроде:
Так вы выкинете лишнюю часть. А вот почему она там появляется сходу не выяснить, система построение роутинга достаточно сложная, и действительно результат может разниться при работе из cli, зависит от окружения вебсервера.
Ничего не меняет. Все равно https://site.comhttp//site.com/tovar/
Протестировал в облаке вебасист - та же история. Добавляет http//site.com
Значит так у всех. Неужели никто не заметил, или другой шаблон для сообщений используете?
УРАА!!! Так работает. В тестовом сообщении ссылки кривенькие, а для крона - то что надо.
Спасибо!
Да. Только странно все это. Делаю так:
Ему не важно - пишешь ты http:// или https://
Ссылки кликабельные но http:// в любом из двух случаев. Не критично, конечно, но мутно.
Работает, но если две витрины, то подставляет домен одной и той же витрины, вне зависимости, с какой витрины был оформлен заказ. В моем случае, к сожалению, совсем не ту витрину ставит.
Проблеме уже больше года. Неужели так и не найдено нормальное решение?
В исходном сообщении указано, что:
По факту, отложенное сообщение отправляется только после действия "Оплачен". Есть ли опция по выбору статуса заказа, после которого отправляется отложенное сообщение?
Спасибо. В новом апдейте 7.2.0.102 теперь можно выбрать любой статус заказа для триггерной рассылки.
Подскажите, у нас есть свойство товара — срок годности. Хотим отправлять триггерные рассылки пользователю по истечении данного срока. Как мы поняли сейчас предусмотрено автоматическое отправление писем с привязкой к заказу (к одному из выбранных статусов), а нужно привязать к товару. Есть ли подобные плагины или может что-то планируется?
Пока таких планов нет. Но вы можете повлиять на их появление, добавив пожелание в хабе поддержки: https://support.webasyst.ru/ideas/. Списком идей в этом разделе пользуются разработчики Webasyst и другие разработчики плагинов (в списке плагинов есть функция поиска).
В триггерной рассылке не работает код для отправки накопленных бонусных баллов.
Баланс вашего бонусного счета: <strong>{number_format(round($customer.affiliate_bonus, 2), 2)}</strong>
Выводится 0. Видимо пользователь не подтягивается. Можно ли это исправить?
Если у вас есть доступ к исходному коду, попробуйте в файле wa-apps/shop/lib/actions/settings/followups/shopSettingsFollowupsTest.controller.php после
добавить
И в файле wa-apps/shop/lib/cli/shopFollowup.cli.php после строки
добавьте то же самое:
Это помогло. Спасибо, сенсей! А при обновлении системы эти добавки сотрутся?
Да. Это временное решение.
Добрый день. Подскажите пожалуйста, что нужно поправить в коде уведомлений чтобы отправлялось общее количество бонусных балов клиенту.
Заранее, большое спасибо!
В версии Shop-Script 8.15 для этого можно использовать переменную {$customer.affiliate_bonus}, описанную в шпаргалке. Возможно, в вашей версии эта переменная тоже доступна.
Михаил, Добрый день. Подскажите пожалуйста, что нужно поправить в коде уведомлений чтобы отправлялось общее количество бонусных балов клиенту.
Вы на форуме подсказали по поводу тригерных рассылок и это работает:
-Александр Элс 1 сентября 2017 06:51 #
-В триггерной рассылке не работает код для отправки накопленных бонусных баллов.
-Баланс вашего бонусного счета: <strong>{number_format(round($customer.affiliate_bonus, 2), 2)}</strong>
-Выводится 0. Видимо пользователь не подтягивается. Можно ли это исправить?-
--Михаил Ушенин Webasyst 1 сентября 2017 11:37 # Если у вас есть доступ к исходному коду, попробуйте в файле wa-apps/shop/lib/actions/settings/followups/shopSettingsFollowupsTest.controller.php после
try { $contact = $o['contact_id'] ? new shopCustomer($o['contact_id']) : wa()->getUser(); $contact->getName(); } catch (Exception $e) { $contact = new shopCustomer(wa()->getUser()->getId()); }
--добавить
$contact_data = $contact->getCustomerData(); foreach (ifempty($contact_data, array()) as $field_id => $value) { if ($field_id !== 'contact_id') { $contact[$field_id] = $value; } }
--И в файле wa-apps/shop/lib/cli/shopFollowup.cli.php после строки $contact = new shopCustomer($o['contact_id']); добавьте то же самое: $contact_data = $contact->getCustomerData(); foreach (ifempty($contact_data, array()) as $field_id => $value) { if ($field_id !== 'contact_id') { $contact[$field_id] = $value; } }
Я разобрался по аналогии с файлом wa-apps/shop/lib/actions/settings/notifications/shopSettingsNotificationsTest.controller.php
но не могу понять каков аналог файлу wa-apps/shop/lib/cli/shopFollowup.cli.php и что нужно дописать или переписать
Заранее, большое спасибо!
Версия Webasyst 1.14.9.567
Версия Shop-Script 6.3.0.44568
Ваш вопрос не имеет прямого отношения к теме статьи. Задайте его на форуме, пожалуйста: другие пользователи или наши сотрудники помогут вам. Или обратитесь за дополнительными доработками программного кода к партнёрам Webasyst.
Добрый день,
разъясните, пожалуйста логику работы триггерных рассылок:
1. как работает отправка при указании: "Отправлять через 336 часов после перевода заказа в статус Выполнен" ? Похоже, что у нас пошла рассылка всем клиентам, которые очень давно делали заказ, а не только 336 часов назад.
2. где можно увидеть кому и когда было отправлена триггерная рассылка (в бэкенде, в текстовом логе, в БД, ...)?
3. как плагин определяет что по заказу уже была рассылка?
1. Возможно, у вас в таблице shop_followup в поле last_cron_time не сохранилось время настройки триггерного сообщения. Если там хранится значение NULL, то рассылка отправится всем клиентам с подходящими заказами со времени создания магазина. Проверьте, пожалуйста.
Если там хранится NULL, удалите это триггерное сообщение из настроек магазина и создайте новое. После этого в поле last_cron_time должно сохраниться обновлённое время. Если так и произошло, то все следующие триггерные рассылки будут отправляться только нужным клиентам.
Почему могло раньше не сохраниться правильное значение времени , сказать не возьмусь — возможно, это ошибка в одном из обновлений магазина.
2. Факт отправки триггерной рассылки записывается в историю соответствующего заказа.
3. Это не плагин, а стандартный модуль магазина. Перед очередной отправкой он сверяется с информацией об истории отправки триггерных рассылок по данному заказу.
Спасибо
Добрый день. В триггерных рассылках я настроил, несколько заданий. Чтобы после того как был поставлен определенный статус высылалось соответствующее уведомление. Я выбрал во всех заданиях один и тот же статус клиента: Выполнен, но выбрал разные интервалы:
720 часов, 1440 часов, 2160 часов
Вопрос будет ли это работать следующим образом, что сначала после выбора статуса сервис высылает уведомление через 720 часов, потом 1440 часов ну и так далее?
Крон в облаке настроил. Речь про одного и того же клиента, но через разные интервалы времени
Да, именно так. Всё, что вы указали в настройках каждой триггерной рассылки, относится только к этой рассылке, и она будет отправляться независимо от других настроенных рассылок.
Добрый день, помогите составить строку правила для рассылки.
Нужно чтоб письма отправлялись только определенной категории покупателей, т.е. есть скажем розничные покупатели и есть оптовики.
Нужно чтоб была фильтрация и письма для розничных покупателей не отправлялись оптовикам.
Уточните, о какой строке правила вы пишете. В стандартных настройках триггерных рассылок нет никакой строки с правилом. Возможно, вы используете плагин для заполнения строки с правилом. В этом случае отправьте свой вопрос разработчику плагина.
Добрый день, Михаил.
Я имею ввиду при создании нового сообщения триггерной рассылки в поле "Текст сообщения HTML + Smarty" как правильно написать строку в который бы была проверка категории покупателей.
Т.е. есть благодарственное письмо для ризничего покупателя которое отправляется после заказа. Нужно чтоб такое письмо отправлялось только покупателям категории магазин. Также есть категория покупателей "ОПТ" и когда они делают заказ нужно чтоб им не отправлялось триггерное письмо.
В шаблоне текста уведомления вы можете только изменить текст. Настроить факт отправки получателям в зависимости от разных условий вряд дли получится.
Чтобы поискать нестандартное решение для вашей проблемы, задайте вопрос в общем хабе поддержки, пожалуйста.
Коллеги, какую все таки команду в cron надо добавлять?)))
замечательно, что инструкция есть, но как бы здорово было ее обновлять
более того, в самом магазине, если одно задание уже настроено, посмотреть настройки и команду для нового задания не возможно
а в момент смены хостинга, старая команда в кроне работать перестает, а в новом она не работает) даже со сменой путей
было вот
cd $HOME/****.ru/docs/ && /opt/php/bin/php -c $HOME/etc/php.ini $HOME/*****/docs/cli.php shop followup
что то подсказывает, что не совсем так как выше на картинке в инструкции
и глупый вопрос, путь до интерпретатора команд куда подставлять?
Формат такой:
Пути узнавайте в службе поддержки хостинга или у системного администратора вашего сервера.
Было бы хорошо добавить отчет сколько писем кому отправлено, я вот подключил все работает, я так понимаю письма отправляются 1 раз 1 клиенту, или каждый раз как настроен крон?
В условия триггерных рассылок нужно добавить что-то типа набора условий, сохранённых в поиске магазин-покупатели. Тогда можно было бы отфильтровать по среднему чеку, категориям, по комбинации условий. О текущей реализации могу сказать, что без нее было бы хуже, чем с ней. Но гибкости не хватает совсем.
Когда делаете инструмент для почтового маркетолога, наймите соответствующего специалиста для консультаций =)
Можно ли в триггерной рассылке указать сколько бонусных баллов зачислено за покупку?
В поле "Правила отправки" можно указать 8 760 часов, придёт ли письмо/sms?
Допускается указать максимум 1 193 046 часов.
Письмо/SMS отправится, если будет настроено задание для планировщика cron и сервер хостинга его выполнит и если не возникнет ошибок при отправке. Ошибки возможны, например, если закончатся деньги на счёте отправителя SMS или если почтовый сервер отправителя заблокирует отправку письма из-за неправильный настроек отправки email.
Не увидел такой возможности. Можно попробовать это сделать средствами плагина: добавить в шаблон триггерной рассылки вызов плагина, который вернёт количество баллов, начисленное клиенту за его последнюю покупку.
Неплохо было бы иметь возможность отправить емейл на другой адрес. Например пнуть менеджера позвонить клиенту если он не оплачивает заказ
Можете настроить через плагин https://www.webasyst.ru/store/...
Пожелания по доработке программных продуктов публикуйте, пожалуйста, в специальном разделе форума поддержки. Так их удобнее регистрировать и обсуждать, если потребуется. Или голосуйте за уже опубликованные предложения других пользователей.
Здравствуйте. Есть у нас отложенное сообщение с просьбой оставить отзыв о товаре. Перестала работать ссылка на страницу отзывов.
При переходе по ссылке в письме вылазит такое сообщение:
Страница, на которой вы находились, пытается перенаправить вас на недействительный URL (http:///panasonic-rf-3500e9/reviews/).
Как это можно поправить?
Здравствуйте! Подскажите пожалуйста, какое значение использовать чтобы выводить в тексте сообщения только имя покупателя (без фамилии). При использовании шпаргалки {$customer.name|escape} выводится полное ФИО.
Попробуйте {$customer.firstname|escape}
Подскажите, пожалуйста, почему дублируются все триггерные рассылки? В один момент приходит сразу два одинаковых письма. Не знаю в какую сторону копать.
Возможно, у вас настроено несколько одинаковых рассылок в разделе «Маркетинг». Если это не так, напишите нам в службу поддержки — изучим ситуацию подробнее.