[FormWatcher] - Отслеживание брошенных форм

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

Суть работы


простенький JS плагин на лету, отслеживает изменение полей любых форм, к которым добавлен класс formWatcher

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

Переодически (по умолчанию раз в день — системная настройка компонента), MODX просматривает кэш, очищает его, формируя отчет и отправляет на email администратору.

Состав компонента


1. JS плагин для отслеживания заполняемости форм в реальном времени
2. Плагин для формирования отчета
3. Сниппет-хук для FormIt, очищающий данные о событии из кэша, при отправке формы.

Системные настройки компонента



formwatcher_email_tpl — Чанк письма. По умолчанию fw_email_report. В комплекте прилично оформленный шаблон для письма.

formwatcher_email_from — Email отправителя письма о незаполненной форме. Если оставить пустым, будет использована системная настройка email_sender

formwatcher_email_to — Email получателя письма о незаполненной форме. Можно указать несколько email, через запятую

formwatcher_email_subject — Тема письма о незаполненной форме. По умолчанию Отчет formWatcher

Предварительная настройка и запуск


1. Подключаем на странице с формой js скрипт, который, по умолчанию, находится по адресу
/assets/components/formwatcher/js/web/default.js
2. Добавьте к нужной форме класс .formWatcher

3. Добавьте в форму скрытое поле с идентификатором формы. Имя поля fw_form_id. Абсолютно любое значение идентификатора. К примеру вот так:
<input type="hidden" name="fw_form_id" value="fw_form_example">
В отчете вы будете видеть какую именно форму заполнили, но не отправили.

4. Добавьте в форму скрытое поле с идентификатором клиента. Имя поля: fw_client_id. Значением можно вставить id пользователя, можно вставить id сессии, можно использовать идентификатор GoogleAnalitics или любое другое уникальное поле.
Я сделал вот так:
<input type="hidden" name="fw_client_id" value="{$_modx->user.id > 0?:$.cookie.PHPSESSID}">
Что означает — если пользователь авторизован — вставляем id пользователя. Если нет — вставляем идентификатор сессии MODX.

В комплекте есть чанк fw_form_example пример формы.
<form class="formWatcher">
    <div class="form-group">
        <label for="name">Как вас зовут</label>
        <input type="text" class="form-control" id="name" name="name" placeholder="Ваше имя">
        

        <label for="phone">Телефон</label>
        <input type="text" class="form-control" id="phone" name="phone" placeholder="+7 777 777-77-77">
    </div>
    <button type="submit" class="btn btn-primary">Отправить</button>
    <input type="hidden" name="fw_form_id" value="fw_form_example">
    <input type="hidden" name="fw_client_id" value="{$_modx->user.id > 0?:$.cookie.PHPSESSID}">
</form>
5. Почти наверняка вы используете для отправки формы компонент FormIt. Для него подготовлен хук fw_clean, который в случае успешной отправки формы очищает данные в кэше компонента, чтобы отправленная форма не попала в отчет.

Внимание! Важно знать и понимать
Компонент не использует полноценную работу по расписанию. Отправка отчетов срабатывает при событии onModxInit — то есть при любом запуске сайта. Это означает, что проверка на наличие незаполненных форм и формирование отчетности будет срабатывать ТОЛЬКО при открытии любой страницы сайта или админки. Если сайт никто не посещает — то и программа будет неактивна.
В случае если вам нужна стабильная периодическая проверка форм — необходимо либо открывать сайт, либо настроить cron, который будет дергать главную страницу сайта по расписанию.
Николай Савин
Николай Савин
24 декабря 2018, 15:47
modx.pro
2 540
Реклама

Комментарии: 14

Александр Мельник
24 декабря 2018, 16:57
Бедные пользователи)
Скоро анализ кала будем у них брать незаметно.
Дмитрий
Дмитрий Старожил
24 декабря 2018, 18:21
Николай, класс! Отличный компонент.

Вопрос: что будет если вручную очистить кеш сайта? Данные из компонента удалятся?
    Николай Савин
    Николай Савин Администратор
    24 декабря 2018, 18:31
    Вручную это каталог кэша с файлами удалить или в админке кнопку нажать?
    Если через админку чистить — то нет, не очистится!
      Дмитрий
      Дмитрий Старожил
      24 декабря 2018, 19:16
      Класс!
    An Si
    An Si Старожил
    25 декабря 2018, 09:10
    К компоненту претензий нет, слышал про такие штуки. Но, как по мне, это не совсем законно. Фактически, это кейлогер, который перехватывает ПДн и отсылает их 3м лицам без ведома пользователя. Хотя когда это кого-то останавливало?))
      Николай Савин
      Николай Савин Администратор
      25 декабря 2018, 09:12
      Думаю это останется на совести владельцев сайта, использующих подобную технологию.
        Иван Кизименко
        Иван Кизименко Старожил
        26 декабря 2018, 20:08
        не законно передавать личные данные третьим лицам.
        Скорее всего то, что заполнит пользователь не будет относиться к личным данным.
        Чаще всего это информация по его потребности, что владельцу сайта поможет лучше понять свою аудиторию и точнее настроить рекламу. А напрямую связаться не получится.
          Александр Мельник
          27 декабря 2018, 23:45
          Формы как правило содержат поля — имя — email
          Разве это не личные данные?
          Помимо законов, прописанных в государстве, существуют законы чести, уважения.
          И чем больше мы «плюем» на эти законы в погоне за прибылью, тем ниже мы падаем.
            Иван Кизименко
            Иван Кизименко Старожил
            27 декабря 2018, 23:47
            Когда человек заполняет email и телефон он нажимает кнопку Отправить в большинстве случаев.
              Александр Мельник
              28 декабря 2018, 00:05
              Мне сложно понять вашу логику.
              Что значит — в большинстве случаев?
              Звучит почти как — вые*ал — обязан жениться.
              Но мы не женимся на всех кого…
              Вы думаете этот компонент, о котором говорит автор, настроен на кэшироавние только «неличных» данных?
              Я лично против отслеживания данных, которыми пользователь не поделился добровольно. И отказываю своему работодателю, когда мне говорят — а на других сайтах когда ты пытаешься закрыть вкладку — вылазит окошко — не закрывай меня, я хороший сайт! Это бред. Если пользователя не привлек сайт и он хочет уйти… то задерживать его — это еще ниже пасть в его глазах.
              И так же низко следить за тем, что пользователь пишет, но не отсылает.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      14