Яндекс Метрика
Автоцель Отправка формы: почему ей нельзя пользоваться
Одна из постоянных задач для веб-аналитика это настройка отслеживания форм. И Яндекс.Метрика услужливо предлагает нам автоцель.

Если вы ей пользуетесь, то хочу вас огорчить: скорей всего зря. Объясняю почему.
Во-первых, давайте разберёмся что вообще такое форма? Набор полей и кнопочек? Визуально да, технически не совсем. Обычно форму на сайте создают так:
<form action="какой-то урл обработчика" method="post">
Набор каких элементов
</form>
Всё чётко, после нажатия кнопки, форма отправит данные, страничка перезагрузится. Но так было ещё лет 10-15 назад. Мы даже в код формы писали цель вот так:
<form action="какой-то урл обработчика" method="post" onSubmit="код цели">
Набор каких элементов
</form>
Но веб-страницы начинали становится всё более динамичными: никаких перезагрузок страниц, пользователь должен оставаться где был. Как вы сейчас отправляете форму? Нажали, если всё ок, то получите сообщение что всё ок и с вами свяжутся (а с вами лучше вообще не связываться) или вообще произошла ошибка и email на narod.ru больше не котируется. Вот так формы стали дополнительно где-то валидироваться, обрабатываться и выдавать пользователю «отбивку». И тут как раз и кроется проблема: когда форма уходит проверять ваши данные и происходит это событие onSubmit вне зависимости успех или не успех… Пу-пу-пу…
Не верите? Популярный WordPress-плагин Contact Form 7 так себя ведёт: отправляете форму, он пошёл «думать», потом возвращается с ответом. И даже если ошибка, onSubmit произошёл. Битрикс как и многие современные сайты пуляет отправку данных через ajax хитрый какой-то, и тоже сначала onSubmit, а потом уже результат.
А автоцель здесь при чём? А при том, что скорей всего (Яндекс механизм работы мне не рассказывал) она как раз и срабатывает на любой onSubmit вне зависимости от результата и вы потом видите у себя в Метрике миллион конверсий, а по факту заявок и нет. Если у вас есть фильтр товаров на сайте, и он сделан как форма, то привет, у вас уйма конверсий.
Давайте рассмотрим пример с Contact Form 7. Я создал простейшую форму на этой странице (https://gaga-analyze.ru/page-with-form/?_ym_debug=2), поэтому можете перейти и отправить форму без заполненных полей. Теперь посмотрите в отладчике Яндекс.Метрики (если не знаете что это такое, то можете прочитать это у меня здесь) есть ли достижение цели.
Выглядит это так и это и есть наша автоцель. Мы ничего не отправили, получили ошибку, но конверсия есть. Шикарная статистика обеспечена (нет, это враньё!).

Давайте теперь всё заполним и отправим ещё раз форму. Результат тот же.

И что делать в таком случае, спросите вы. Отвечаем: необходимо «ловить» непосредственно факт успешной отправки формы: в GTM можно настроить триггер на определённое событие или видимость элемента, можно написать скрипт, который «перехватит» событие успеха, непосредственно в код обработчика добавить код цели — вариантов хватает. О том как это правильно сделать рассмотрим в следующих статьях. Всем здоровья и всех благ!