Для работы необходимы навыки HTML, JavaScript, PHP
1. На первом этапе нужно корректно заполнить форму и сформировать ее тестовую отправку. Непосредственно перед отправкой нужно открыть консоль разработчика в браузере CHROME и войти в режим Network. Здесь нужно установить галку напротив Preserve log чтобы не потерять запрос в случае перезагрузки страницы.
2. Выполнить отправку формы. Найти запрос, который был сформирован, и изучить его. Как правило по самому запросу будет понятно как происходит обработка формы и какой результат возвращается (вкладка Response)
3. В случае если страница не перезагрузилась, то форма отправилась посредством AJAX запроса. В этом случае нужно найти javascript код отправки формы. Искать можно по различным критериям:
- по привязке события к форме
- по урлу ajax запроса
- по данным которые пришли в ответе AJAX запроса (вкладка Response)
- по контексту выводимого после успешной отправки сообщения.
Искать можно как в исходных кодах сайта, так и непосредственно просматривая скрипты сайта в браузере.
Определив место где происходит обработка ajax запроса, нужно найти файл на сервере, в который можно добавить код достижения целей.
QUON_reach_goal(XXX);
4. В случае если страница перезагрузилась, то во вкладке Response будет находиться полный HTML код страницы. В этом случае форма отправляется посредством HTML POST запроса. Для этого нужно определить серверный обработчик формы. Как правило, он соответствует Request URL из 2 пункта. URL обработчика может быть как физическим файлом, так и ЧПУ, который обрабатывает система сайта. Во втором случае нужно изучить исходные коды сайта и определить где происходит обработка формы.
Согласно алгоритму обработки формы добавить в вывод об успешной отправке HTML код достижения целей.
<script> QUON_reach_goal(XXX);</script>
5. В случае если после успешной отправки происходит переход на страницу успеха, нужно добавить HTML код вызова целей в контент этой страницы.
<script> QUON_reach_goal(XXX);</script>
Однако если страница успеха общая для различных форм сайта, при этом формы должны отрабатывать различные цели – в таком случае ищется код, отвечающий за переход на страницу успеха, и цели добавляются непосредственно перед данным перенаправлением.
Также нужно учитывать, для того чтобы цели успели отработать до того как страница будет перенаправлена на страницу успеха, нужно после отправки ввести задержку.
QUON_reach_goal(XXX);
setTimeout(function(){
window.location.href = ‘/success’;
}, 1000); //задержка 1 секунда
Либо передать на страницу успеха информацию посредством GET запроса и уже на странице успеха сформировать цель согласно этим данным.
<?php header('Location: /success?from=1'); ?>
или
<script>window.location.href = ‘/success?from=1’;</script>
Первый вариант удобней применять если перенаправление на страницу успеха происходит на фронтенде. А второй если на стороне сервера.
6. При добавлении кода достижения целей, нужно учитывать, что в случае возникновения любой ошибки добавляемого кода, текущее исполнение скрипта будет приостановлено.
Таки ошибки могут возникать например если удалить код счетчика со страницы, либо сервис целей временно недоступен.
В таких случаях форма с сайта может быть не отправлена.
Поэтому рекомендуем оборачивать вызов целей в конструкцию try..catch
try{yaCounterXXXXXX.reachGoal('ORDER');}catch(ex){};
try{QUON_reach_goal(XXX);}catch(ex){};
try{ga('send', 'event', 'form', 'ddd', 'step1'); }catch(ex){};
7. В случае если реализация форм происходит посредством API системы управления сайтом, либо код обработчиков зашифрован, то как правило данный код изменять не рекомендуется. В случае обновления системы все изменения могут затереться.
В такой ситуации нужно обращаться в службу поддержки CMS либо искать обходные пути.
8. Так как происходит изменение кода, отвечающего за обработку форму, необходимо обязательно проверить работоспособность формы, добавив себя временно в получатели уведомления.