[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
6
621
+11
Поблагодарить автора Отправить деньги

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

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

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