Как узнать и понять с какой формы пришла заявка

Привет, друзья. Сегодня поговорим о том, как узнать с какой именно формы пришла заявка на сайте.

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

Ладно, реально посмотреть, например, в Метрике в Вебвизоре, но проделывать это при каждой конверсии очень неудобно.

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

Давайте же займемся этим. Я предлагаю такой вариант решения проблемы:

  • Создать у формы скрытое поле, которое и будет отвечать за тему письма.
  • Создать у кнопок data-атрибут с темой письма. Например: «data-subject=”Заявка на обратный звонок”» или «data-subject=”Заявка на консультацию”» и так далее.
  • При клике на кнопку при помощи javascript получить значение этого data-атрибута и поместить в наше скрытое поле.
  • В обработчике формы в переменную, отвечающую за заголовок письма, передать значение скрытого поля.

Как по мне – довольно просто. Давайте реализуем все это.

Внимание! Я предполагаю, что у вас уже реализован механизм вызова модального окна с рабочей формой. Я не буду реализовывать отправку в этой статье, говорим только о подходе, который позволит понять, какая кнопка привела к заявке. Подробная инструкция по созданию формы обратной связи - тут. По созданию и вызову модального окна – тут.

В своей форме обратной связи создайте такое поле:

<input type="hidden" name="subject" class="subject" />

Значение атрибута name и class могут быть любыми, главное, потом, правильно принять атрибут name в обработчике и добавить его в тему письма.

Класс у инпута нужен лишь для того, чтобы привязаться к полю при помощи JS для передачи data-атрибута. Можно привязаться к полю по дата атрибуту и не создавать сам класс.

Предположим, что где-то на сайте есть 2 такие кнопки:

<button class="open-modal__button" data-subject="Заявка на обратный звонок">
  Заказать звонок
</button>
<button class="open-modal__button" data-subject="Заявка на консультацию">
  Заказать консультацию
</button>

Одна кнопка, как подсказывает нам data-атрибут, находится в секции сайта, отвечающей за обратный звонок, а вторая за заявку на консультацию.

Теперь давайте напишем JS-код.

document.addEventListener("DOMContentLoaded", () => {
  let dataSubject = document.querySelectorAll(".open-modal__button");
  let inputSubject = document.querySelector(".subject");

  for (var i = 0; i < dataSubject.length; i++) {
    dataSubject[i].addEventListener("click", function () {
      inputSubject.value = this.dataset.subject;
      // console.log(inputSubject.value);
    });
  }
});

Здесь мы проходимся по всем кнопкам с классом ".open-modal__button" и при клике на них записываем дата-атрибут в ранее созданное скрытое поле с классом ".subject".

Если используете функцию mail() для отправки писем, данные из полученного поля нужно присвоить переменной $subject. В случае, если пользуетесь библиотекой PHPmailer, что я и рекомендую делать, то за тему письма отвечает свойство Subject объекта mail, то есть $mail->Subject.

А также:

  • Не забывайте провести хотя бы минимальную валидацию и предусмотреть значение по умолчанию на всякий случай.
  • Понятное дело, что если у вас открытые формы без модального окна или просто, несколько разных, можно сразу заполнить скрытое поле нужной информацией.
  • Если нет возможности задать data-атрибут, то можно брать текст самой кнопки или id.

Если возникнут вопросы - пишите в комментариях. Попробуем разобраться.

Похожие публикации

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