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

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 в контрольной панели вашего хостинга.

34 комментария

  • +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
      Михаил Ушенин Михаил Ушенин 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
          Максим Максим 23 января 2016 09:53 #

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

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

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

        • +1
          Алексей Алексей 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:// в любом из двух случаев. Не критично, конечно, но мутно.

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

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

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

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

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

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

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

            • +1
              Михаил Ушенин Михаил Ушенин 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
              Парусов Александр Парусов Александр 13 сентября 2017 10:38 #

              Добрый день,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    • +1
                      K Andrew K Andrew 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
                        Михаил Ушенин Михаил Ушенин 8 октября 2018 10:13 #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        • +1
                          Анисимова Есения Анисимова Есения 24 октября 2023 07:10 #

                          Здравствуйте! Как можно добавит ссылку на отписку в триггерных письмах?

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

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

                          Раздел помощи работает на основе приложения «Хаб»