Триггерные рассылки (отложенные сообщения)

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

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

Как настроить отправку триггерных рассылок

  1. Для создания новой рассылки перейдите в раздел бекенда Shop-Script «Маркетинг → Настройки → Триггерные рассылки» и щелкните «Новое сообщение».
  2. Укажите название сообщения — оно не будет показано получателям, но будет отображаться в бекенде для вашего удобства.
  3. Выберите транспорт, т. е. способ отправки уведомления: email или SMS.
    Для отправки SMS-уведомлений установите в «Инсталлере» плагин интеграции с SMS-провайдером и настройте подключение к провайдеру в разделе «Настройки» (секция «SMS») в бекенде Shop-Script.
  4. Укажите правила отправки сообщения:
    • через сколько часов после перехода заказа в указанный статус нужно отправлять сообщение
    • нужно ли отправлять уведомление для повторных заказов покупателя
  5. Выберите источник заказа, для которого должна срабатывать рассылка.
  6. Выберите отправителя уведомления.
  7. Введите тему сообщения, если выбран email-транспорт.
  8. В поле «Текст сообщения» подставится стандартный шаблон, в котором при отправке каждого сообщения вместо переменных будут подставлены актуальные значения. Например, переменная {$order.id_str} будет заменена на номер того заказа, о котором отправлено уведомление. Для просмотра полного списка доступных переменных используйте ссылку «Шпаргалка» в нижней части страницы.
  9. Настройте задачу cron для автоматической отправки триггерных рассылок. Это необходимо для того, чтобы отправка могла выполняться без вашего участия. Щелкните по ссылке «Как настроить» в боковой панели, скопируйте текст команды из всплывающей области и укажите эту команду при создании задачи cron в контрольной панели вашего хостинга.

50 комментариев

  • +1
    Нафаня Домовенок Нафаня Домовенок 10 января 2016 16:24 #

    Добрый день,

    Не получается включить cron на хостинге nic.ru

    • +1
      Нафаня Домовенок Нафаня Домовенок 15 января 2016 13:34 #

      Все настроено.

      Вот что выдается в результате на почту админу:

      Cron: 0 1 * * * www-data /usr/bin/php -q /home/*******/*****.ru/docs/cli.php shop OrderreminderSendnotif

      /bin/bash: 0: command not found

    • +1
      Юлия Юлия 17 января 2016 15:09 #

      Та же проблема.

      Служба поддержки хостинга говорит что Для запуска 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"

      Но где взять эти параметры? Помогите!

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 18 января 2016 01:24 #

        Похоже, что это ограничение используемого вами хостинга. Если вам не удастся добиться от администрации хостинга обеспечения поддержки параметров при вызове PHP-скрипта в консольном режиме, видимо, остаётся только сменить хостинг.

        Попросите администрацию хостинга пояснить, чем вызвано введение такого ограничения.

        • +1
          VladimirZ VladimirZ 30 мая 2016 23:37 #

          Вот так вроде должно работать

          sh - c "/opt/php/bin/php -c $HOME/etc/php.ini $HOME/домен/docs/cli.php shop followup"

        • +2
          Игорь Игорь 23 января 2016 07:24 #

          Помогите, пожалуйста, найти решение.

          Отложенные сообщения, формирует разные ссылки при ТЕСТОВОМ сообщении и НАСТОЯЩЕМ (по крону, через 14 дней).

          При отправке тестового сообщения всё нормально, формирует ссылку вида: https://site.com/tovar/

          При отправке реального отложенного сообщения через 14 дней клиенту формирует ссылку: https://site.comhttp//site.com/tovar/

          (Вставляет посередине лишнее "http//site.com" причем без двоеточия.)

          При этом в письме есть еще ссылки на главную и в личный кабинет. Они "нормальные".

          В шаблоне сообщения указано так, как советовал Михаил на форуме https://support.webasyst.ru/936/otlozhennye-soobsh...

          <ul>
          {foreach $order.items as $item}
          {$product = $wa->shop->product($item.product_id)}
          {$product_url = $wa->shop->productUrl($product)}
          <li><a href="https://site.com{$product_url}reviews/"  target="_blank">{$item.name|escape}</a></li>
          {/foreach}
          </ul>

          CRON настроем так:

          @daily

          php /var/www/user/data/www/site.com/cli.php shop followup


          Если тестовое сообщение с правильными ссылками, значит проблема в CRON? А может в комбинации смарти+крон?

          • +1
            Максим Максим Webasyst 23 января 2016 09:53 #

            Как временное решение проблемы можно предложить что-то вроде:

            {$product_url = $wa->shop->productUrl($product)|replace:'http//site.com':''}

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

            • +2
              Игорь Игорь 23 января 2016 12:48 #

              Ничего не меняет. Все равно https://site.comhttp//site.com/tovar/

            • +2
              Игорь Игорь 28 января 2016 07:19 #

              Протестировал в облаке вебасист - та же история. Добавляет http//site.com

              |replace:'http//site.com':'' - не помогает

              Значит так у всех. Неужели никто не заметил, или другой шаблон для сообщений используете?

            • +1
              Алексей Алексей Webasyst 28 января 2016 07:32 #
              Попробуйте
              <ul>
              {foreach $order.items as $item} {$product=$wa->shop->product($item.product_id)} <li><a href="{$wa->shop->productUrl($product)|replace:'http//':'http://'}reviews/" target="_blank">{$item.name|escape}</a></li>
              {/foreach}
              </ul>
              • +1
                Игорь Игорь 28 января 2016 10:09 #

                УРАА!!! Так работает. В тестовом сообщении ссылки кривенькие, а для крона - то что надо.

                Спасибо!

              • +1
                Игорь Игорь 28 января 2016 12:26 #

                Да. Только странно все это. Делаю так:

                |replace:'http//':'https://'}

                Ему не важно - пишешь ты http:// или https://

                Ссылки кликабельные но http:// в любом из двух случаев. Не критично, конечно, но мутно.

              • +3
                Гаврила Гаврила 18 марта 2017 00:28 #

                Работает, но если две витрины, то подставляет домен одной и той же витрины, вне зависимости, с какой витрины был оформлен заказ. В моем случае, к сожалению, совсем не ту витрину ставит.

                Проблеме уже больше года. Неужели так и не найдено нормальное решение?

              • +1
                Денис К. Денис К. 22 марта 2016 02:56 #

                В исходном сообщении указано, что:

                Оплаченным заказ становится, после того как с ними будет выполнено действие «Оплачен» или «Выполнен».

                По факту, отложенное сообщение отправляется только после действия "Оплачен". Есть ли опция по выбору статуса заказа, после которого отправляется отложенное сообщение?

                • +1
                  Денис К. Денис К. 9 февраля 2017 13:11 #

                  Спасибо. В новом апдейте 7.2.0.102 теперь можно выбрать любой статус заказа для триггерной рассылки.

                • +1
                  Марина Лернер Марина Лернер 14 марта 2017 20:25 #

                  Подскажите, у нас есть свойство товара — срок годности. Хотим отправлять триггерные рассылки пользователю по истечении данного срока. Как мы поняли сейчас предусмотрено автоматическое отправление писем с привязкой к заказу (к одному из выбранных статусов), а нужно привязать к товару. Есть ли подобные плагины или может что-то планируется?

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 15 марта 2017 09:37 #

                    Пока таких планов нет. Но вы можете повлиять на их появление, добавив пожелание в хабе поддержки: https://support.webasyst.ru/ideas/. Списком идей в этом разделе пользуются разработчики Webasyst и другие разработчики плагинов (в списке плагинов есть функция поиска).

                  • +1
                    Александр Элс Александр Элс 1 сентября 2017 06:51 #

                    В триггерной рассылке не работает код для отправки накопленных бонусных баллов.

                    Баланс вашего бонусного счета: <strong>{number_format(round($customer.affiliate_bonus, 2), 2)}</strong>

                    Выводится 0. Видимо пользователь не подтягивается. Можно ли это исправить?

                    • +1
                      Михаил Ушенин Михаил Ушенин 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;
                          }
                      }
                      • +1
                        Александр Элс Александр Элс 9 сентября 2017 12:57 #

                        Это помогло. Спасибо, сенсей! А при обновлении системы эти добавки сотрутся?

                      • +1
                        Serg Serg 13 декабря 2020 17:51 #

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

                        Заранее, большое спасибо!

                        Версия Webasyst 1.14.9.567
                        Версия Shop-Script 6.3.0.44568


                        • +1
                          Михаил Ушенин Михаил Ушенин Webasyst 14 декабря 2020 09:14 #

                          В версии Shop-Script 8.15 для этого можно использовать переменную {$customer.affiliate_bonus}, описанную в шпаргалке. Возможно, в вашей версии эта переменная тоже доступна.

                        • +1
                          Serg Serg 15 декабря 2020 02:16 #

                          Михаил, Добрый день. Подскажите пожалуйста, что нужно поправить в коде уведомлений чтобы отправлялось общее количество бонусных балов клиенту.
                          Вы на форуме подсказали по поводу тригерных рассылок и это работает:
                          -Александр Элс 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

                          • +1
                            Михаил Ушенин Михаил Ушенин Webasyst 15 декабря 2020 08:27 #

                            Ваш вопрос не имеет прямого отношения к теме статьи. Задайте его на форуме, пожалуйста: другие пользователи или наши сотрудники помогут вам. Или обратитесь за дополнительными доработками программного кода к партнёрам Webasyst.

                          • +1
                            Александр Парусов Александр Парусов 13 сентября 2017 10:38 #

                            Добрый день,

                            разъясните, пожалуйста логику работы триггерных рассылок:

                            1. как работает отправка при указании: "Отправлять через 336 часов после перевода заказа в статус Выполнен" ? Похоже, что у нас пошла рассылка всем клиентам, которые очень давно делали заказ, а не только 336 часов назад.

                            2. где можно увидеть кому и когда было отправлена триггерная рассылка (в бэкенде, в текстовом логе, в БД, ...)?

                            3. как плагин определяет что по заказу уже была рассылка?

                            • +2
                              Михаил Ушенин Михаил Ушенин Webasyst 13 сентября 2017 11:13 #

                              1. Возможно, у вас в таблице shop_followup в поле last_cron_time не сохранилось время настройки триггерного сообщения. Если там хранится значение NULL, то рассылка отправится всем клиентам с подходящими заказами со времени создания магазина. Проверьте, пожалуйста.

                              Если там хранится NULL, удалите это триггерное сообщение из настроек магазина и создайте новое. После этого в поле last_cron_time должно сохраниться обновлённое время. Если так и произошло, то все следующие триггерные рассылки будут отправляться только нужным клиентам.

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

                              2. Факт отправки триггерной рассылки записывается в историю соответствующего заказа.

                              3. Это не плагин, а стандартный модуль магазина. Перед очередной отправкой он сверяется с информацией об истории отправки триггерных рассылок по данному заказу.

                            • +1
                              Александр Парусов Александр Парусов 13 сентября 2017 11:24 #

                              Спасибо

                            • +1
                              Петр Петр 3 ноября 2017 17:52 #

                              Добрый день. В триггерных рассылках я настроил, несколько заданий. Чтобы после того как был поставлен определенный статус высылалось соответствующее уведомление. Я выбрал во всех заданиях один и тот же статус клиента: Выполнен, но выбрал разные интервалы:

                              720 часов, 1440 часов, 2160 часов

                              Вопрос будет ли это работать следующим образом, что сначала после выбора статуса сервис высылает уведомление через 720 часов, потом 1440 часов ну и так далее?

                              Крон в облаке настроил. Речь про одного и того же клиента, но через разные интервалы времени

                              • +1
                                Михаил Ушенин Михаил Ушенин Webasyst 7 ноября 2017 11:13 #

                                Да, именно так. Всё, что вы указали в настройках каждой триггерной рассылки, относится только к этой рассылке, и она будет отправляться независимо от других настроенных рассылок.

                              • +1
                                Николай Николай 6 января 2018 14:33 #

                                Добрый день, помогите составить строку правила для рассылки.

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

                                Нужно чтоб была фильтрация и письма для розничных покупателей не отправлялись оптовикам.

                                • +1
                                  Михаил Ушенин Михаил Ушенин Webasyst 6 января 2018 17:44 #

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

                                • +1
                                  Николай Николай 7 января 2018 21:01 #

                                  Добрый день, Михаил.

                                  Я имею ввиду при создании нового сообщения триггерной рассылки в поле "Текст сообщения HTML + Smarty" как правильно написать строку в который бы была проверка категории покупателей.

                                  Т.е. есть благодарственное письмо для ризничего покупателя которое отправляется после заказа. Нужно чтоб такое письмо отправлялось только покупателям категории магазин. Также есть категория покупателей "ОПТ" и когда они делают заказ нужно чтоб им не отправлялось триггерное письмо.

                                  • +1
                                    Михаил Ушенин Михаил Ушенин Webasyst 8 января 2018 17:28 #

                                    В шаблоне текста уведомления вы можете только изменить текст. Настроить факт отправки получателям в зависимости от разных условий вряд дли получится.

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

                                  • +1
                                    Andrew K Andrew K 6 октября 2018 16:55 #

                                    Коллеги, какую все таки команду в cron надо добавлять?)))

                                    замечательно, что инструкция есть, но как бы здорово было ее обновлять

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

                                    а в момент смены хостинга, старая команда в кроне работать перестает, а в новом она не работает) даже со сменой путей

                                    было вот 

                                    cd $HOME/****.ru/docs/ && /opt/php/bin/php -c $HOME/etc/php.ini $HOME/*****/docs/cli.php shop followup

                                    что то подсказывает, что не совсем так как выше на картинке в инструкции

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

                                    • +1
                                      Михаил Ушенин Михаил Ушенин Webasyst 8 октября 2018 10:13 #

                                      Формат такой:

                                      путь_до_исполняемого_файла_PHP [пробел] путь_до_файла_cli.php_в_папке_фреймворка [пробел] shop [пробел] followup

                                      Пути узнавайте в службе поддержки хостинга или у системного администратора вашего сервера.

                                    • +1
                                      Leva Leva 1 июля 2019 12:20 #

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

                                    • +1
                                      Бона Компани Бона Компани 12 декабря 2019 17:36 #

                                      В условия триггерных рассылок нужно добавить что-то типа набора условий, сохранённых в поиске магазин-покупатели. Тогда можно было бы отфильтровать по среднему чеку, категориям, по комбинации условий. О текущей реализации могу сказать, что без нее было бы хуже, чем с ней. Но гибкости не хватает совсем.

                                      Когда делаете инструмент для почтового маркетолога, наймите соответствующего специалиста для консультаций =)

                                    • +1
                                      Иван Иван 30 января 2020 10:25 #

                                      Можно ли в триггерной рассылке указать сколько бонусных баллов зачислено за покупку?

                                      В поле "Правила отправки" можно указать 8 760 часов, придёт ли письмо/sms?

                                      • +1
                                        Михаил Ушенин Михаил Ушенин Webasyst 30 января 2020 11:33 #

                                        В поле "Правила отправки" можно указать 8 760 часов, придёт ли письмо/sms?

                                        Допускается указать максимум 1 193 046 часов.

                                        Письмо/SMS отправится, если будет настроено задание для планировщика cron и сервер хостинга его выполнит и если не возникнет ошибок при отправке. Ошибки возможны, например, если закончатся деньги на счёте отправителя SMS или если почтовый сервер отправителя заблокирует отправку письма из-за неправильный настроек отправки email.

                                      • +1
                                        Михаил Ушенин Михаил Ушенин Webasyst 30 января 2020 11:39 #

                                        Можно ли в триггерной рассылке указать сколько бонусных баллов зачислено за покупку?

                                        Не увидел такой возможности. Можно попробовать это сделать средствами плагина: добавить в шаблон триггерной рассылки вызов плагина, который вернёт количество баллов, начисленное клиенту за его последнюю покупку.

                                      • +1
                                        oleg - oleg - 14 октября 2020 10:18 #

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

                                      • +1
                                        Юлия Юлия 1 декабря 2020 17:00 #

                                        Здравствуйте. Есть у нас отложенное сообщение с просьбой оставить отзыв о товаре. Перестала работать ссылка на страницу отзывов.

                                        <ul>
                                        {foreach $order.items as $item}
                                        {$product=$wa->shop->product($item.product_id)}
                                        <li><a href="{$wa->shop->productUrl($product)}/reviews">{$item.name|escape}</a></li>
                                        {/foreach}
                                        </ul>

                                        При переходе по ссылке в письме вылазит такое сообщение:

                                        Страница, на которой вы находились, пытается перенаправить вас на недействительный URL (http:///panasonic-rf-3500e9/reviews/).

                                        Как это можно поправить?

                                      • +1
                                        Ирина Смирнова Ирина Смирнова 16 февраля 2021 20:15 #

                                        Здравствуйте! Подскажите пожалуйста, какое значение использовать чтобы выводить в тексте сообщения только имя покупателя (без фамилии). При использовании шпаргалки {$customer.name|escape} выводится полное ФИО.

                                      • +1
                                        dnvasilets dnvasilets 13 октября 2021 18:15 #

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

                                        Добавить комментарий

                                        Чтобы добавить комментарий, зарегистрируйтесь или войдите