Реферальные хвосты. Как отправить данные из utm меток на почту

реферальные хвостыДрузья, добрый день. Недавно был озадачен реферальными хвостами :) Нужно было отправить данные, которые передаются в utm метке (вместе с данными, полученными из заполненной формы обратной связи) на почту. Это дает возможность понять, по какому именно ключевому слову пришел клиент и оставил заявку. Кто-то скажет: "Основы программирования", а для меня не так все просто оказалось, но результат есть, и сегодня хочу рассказать вам, как я это реализовал.

Как привязать реферальные хвосты к заявке

Первое, что хочу сказать: "Я не понимаю почему вы так их называете, но так как этот запрос наиболее популярен, то решил оптимизировать статью именно под "Реферальные хвосты"". Так больше людей найдут именно то, что им нужно, да и для продвижения - это самый оптимальный запрос в этой теме, но так или иначе мы просто передадим данные UTM меток вместе с заявкой.

Теперь хочу обрадовать всех, кто испугался прочитав о программировании. Уверяю, ничего сложного действительно нет, нужно добавить всего несколько строк к вашим формам и обработчику.

Все очень просто, и скоро вы в этом убедитесь. Фактически, мы создаем несколько дополнительных скрытых полей, которые будут автоматически заполняться нужными нам данными. А потом, как обычно сохраним данные их этих полей в переменную и отправим в письме эти пресловутые реферальные хвосты.

Для того, чтобы все работало, нужно изменить index.html на index.php. Это никак не повлияет на работоспособность landing page, кроме как даст возможность исполнять php сценарии на странице. В общем, страшного ничего не произойдет. Смело меняйте. Никаких отличий вы не заметите.

Итак, план наметили, html на php изменили, давайте реализовывать. Создадим несколько форм для данных UTM меток, а в атрибут value запишем небольшой php запрос, который и подставит туда нужные нам данные.


<form id="application" action="application.php" method="POST" name=" application ">

  <!-- Скрытые поля, которые содержат данные из UTM метки -->
  <input type="hidden" name="source" class="source" value="<?php echo isset($_GET['utm_source']) ? $_GET['utm_source'] : '' ;?>" />
  <input type="hidden" name="term" class="term" value="<?php echo isset($_GET['utm_term']) ? $_GET['utm_term'] : '' ;?>" />

  <!-- Скрытое поле, в value которому нужно написать услугу или как-то обозначить форму -->
  <input name="formname" type="hidden" value="Заявка с первой формы">

  <!-- Основные поля -->
  <input name="name" class="applicationName" maxlength="20" placeholder="Введите ваше имя" required />
  <input name="telephone" type="Tel" class="applicationTelephone" maxlength="20" placeholder="Введите ваш телефон" required />
  <button class="applicationButton" type="submit" form="application"> Получить прайс </button>
</form>

Я сделал 3 скрытых поля. В первое передаю параметр utm_source (источник перехода), а во  второе - utm_term (ключевое слово).

Третье скрытое поле нужно для того, чтобы обозначить каким-то образом форму. Сами вписываем нужный текст. Например, заявка с первого экрана или обратный звонок. Это для вас. Чтобы было легче отслеживать и анализировать с какого именно места на лендинге была отправлена заявка и вносить нужные правки в заголовки и дизайн форм для увеличения конверсии.

Добавив немного стилей, я получил такой внешний вид:

Как отправить реферальные хвосты на почту

Кстати, форма адаптивная. Исходник, как обычно, в конце статьи. :) пользуйтесь.

Теперь, как и раньше, нужно просто сохранить в переменные, данные полученные из полей и отправить их на почту. Давайте сделаем это:

<?php

$sendto = "smart-landing@yandex.ru"; // почта, на которую будет приходить письмо
$sendfrom = "tst@mail.ru"; // от кого письмо, например support@sitename.ru
$username = $_POST['name']; // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c почтой
$source = $_POST['source']; // сохраняем в переменную данные полученные из поля c источником перехода
$term = $_POST['term']; // сохраняем в переменную данные полученные из поля c ключевым словом
$formname = $_POST['formname']; // сохраняем в переменную данные о форме. какой товар, услуга, местоположение, цвет, заголовок и т.д
if(!empty($_POST['formname']))
{

// Формирование заголовка письма
$subject = "Новое сообщение с лендинга";
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

// Формирование тела письма
$msg = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
$msg .= "<p><strong>Город:</strong> ".$formname."</p>\r\n";
$msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
$msg .= "<p><strong>Mail:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Источник:</strong> ".$source."</p>\r\n";
$msg .= "<p><strong>Ключевое слово\фраза:</strong> ".$term."</p>\r\n";
$msg .= "</body></html>";

//отправка сообщения
@mail($sendto, $subject, $msg, $headers);
}
else{
header("Location: http://xn--80ahzmm9a.xn--p1ai/test4/"); // если был прямой заход на страницу благодарности, то перекинуть на главную
}

?>

Как видите, скрипт очень похож на те, которые быль в контактных формах, описанных ранее. Так что, если вы делали свои контактные формы по моим статьям, то вам проще будет внедрить данный функционал.

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

Если вам нужны и другие данные UTM меток, то просто сделайте по аналогии. Все будет отлично работать. Еще одним преимуществом именно такой реализации является то, что не используется javascript. А значит кода меньше, а сайт быстрее :) Кстати, рекомендую в обязательном порядке ознакомится с возможным негативном влиянии UTM на SEO продвижение. Лучше перестраховаться!

Надеюсь, понятно все объяснил, и вы поняли, как отправлять данные utm меток на почту. А на сегодня - все. Пока.

Буду благодарен за ретвит и комментарии.

Скачать исходник

43 комментария

  1. Илья

    Статья отличная, как всегда все коротко, ясно и только по делу!
    Название "реферальные хвосты" распиарено Бизнес Молодостью, именно поэтому в яндексе все ищут этот вариант запроса. Так что оптимизировал статью правильно.

    1. dimadv7

      Привет. Спасибо. Понятно теперь. Какая-то подмена понятий, наверное, это только путает. Хотя не знаю... Похоже, что это уже укоренилось, и все привыкли :)

  2. Max

    Добрый день, воспользовался вашей формой, однако не захватывает данные с хвоста. Поможете разобраться?

    1. dimadv7

      Здравствуйте. Давайте, попробуем. Можем в вк пообщаться, так быстрее будет http://vk.com/dima_d_v

  3. Александр

    Вот неплохо было бы еще добавить статью форма обратной связи без перезагрузки на ajax

    1. dimadv7

      Так вот же она https://smartlanding.biz/otpravka-formy-bez-perezagruzki-stranicy.html :) Но там есть небольшой минус, отсутствует проверка на заполнение, ее легко добавить, вот никак руки не дойду. На следующей неделе нужно будет заняться.

  4. Дмитрий

    реализовал форму, но при подстановке ключевой фразы выводится вот что: Ключевое слово\фраза: %D0%...

    1. dimadv7

      Получил в зашифрованном виде. Откуда переход был?

    2. Дмитрий

      директ с поиск

    3. dimadv7

      Странно, у меня нормально все было. И с Директа, и с ВК, и с блога. Даже не знаю что предпринять. Разве только UTM метку на латинице оформить. И еще, наверное, с https был переход, а значит - ничего удивительного.

  5. Сергей

    А подскажите как передать эти данные во всплывающее окно обратной связи?

    1. dimadv7

      Точно так же. Не понял вопрос да и отличия. Форма она и есть форма :)

  6. Максим

    А если лендинг многостраничный. Каким образом можно реализовать передачу данных в письме? Ведь при переходе между страницами utm метки пропадают. Пытался найти про это информацию. Пишут что можно через куки или через сессию пользователя сохранить данные, используя GET. Но конкретного примера не нашел, поэтому с настройкой проблемы. Сможете помочь?

    1. dimadv7

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

  7. Максим

    Раньше был лендинг. Теперь переделали в многостраничный сайт с отдельными страницами для каждого товара

    1. dimadv7

      Ясно. Ну возьму на заметку. Как-нибудь постараюсь разобраться и написать статью об этом.

  8. Игорь

    Спасибо за статью! Не знаете как это оформить в modx?

  9. Михаил

    Почему-то не срабатывает. Приходят пустые поля. Кто-нибудь проверял, именно в этом виде работает или нет? Просто понять хочу это я неправильно прикрутил, или код не работает так, как задумано?

  10. Михаил

    Прошу пардону. Оказывается я сам дурак. Написано же русским по белому: "Для того, чтобы все работало, нужно изменить index.html на index.php".

  11. ste-pashka

    Реферальные хвосты - это информация о том, на каком сайте находился посетитель перед тем как попал на ваш сайт и сделал заявку. Как подключить реферальные хвосты

    1. Евгений

      Ага, а один из способов это делать, это использовать utm метки. Именно об этом и статья. Это отлично подходит для контекстной рекламы, баннеров, рекламы в вк, тизерах и т.п. (везде, где размещаешь ссылки). Хочешь большего и отслеживать случайные переходы, читай о

      $_SERVER['HTTP_REFERER']

      , но вряд ли у тебя что-то получиться. Раз задаешь такие вопросы.

  12. Марк

    Отличная статья! Все заработало на простых лендингах.
    Хотел прикрутить к форме на сайте на joomla, там не получилось. Сохраняет вместо значения сам php код который в value, то есть вот такое приходит .
    Шаблон index.php.
    Что может быть

    1. dimadv7

      Наверное, по аналогии с wp нужно разрешить исполнении php в статьях и виджетах и т.п.

  13. Влад

    Я что-то не могу понять , как передать UTM метку в Битрикс что бы она там отображалась?

  14. Иван

    На лендингу 2 формы в php то работает, а одна в js фпйли. С нее не подтягиваются хвосты. Как исправить?

    1. dimadv7

      Слишком мало входных данных

  15. Денис

    Если форма не на главной странице сайта а в лайтбоксе - UTM метка не приходит на почту, как быть в данном случае?

    1. dimadv7

      Запоминать в сессию

  16. Vadim

    Данный способ работает только для лендинга! если страниц у сайта несколько, а форма у вас находиться будет на другой странице, то все метки у вас слетят при переходе

    1. dimadv7

      можно сохранить в сессию и не слетит))

  17. Макс

    Спасибо, отправил 100р.
    Дешевле вышло чем у фрилансеров)

    1. dimadv7

      Спасибо))

  18. Слава

    Добрый день, у меня такой вопрос: делал форму по одному из ваших уроков, Remodal, всё супер. Вызывается она таким образом: Форма. Но когда мы переходим по ссылке с UTM меткой, а потом пытаемся вызвать форму, страница перезагружается и в адресной строке видим только #modal2. Соответственно, на почту получаю адрес без UTM метки. Как с этим справится?

    1. dimadv7

      Здравствуйте, отказаться о Remodal, сейчас совсем не нужно использовать отдельный плагин для вызова модального окна, js отлично с этим справляется, в крайнем случае с использованием jquery.

  19. Даниил

    Здраствуйте, приходят пустые поля, вроде бы все правильно, как быть?

    1. dimadv7

      Данил, здравствуйте. Проверьте чтобы атрибуты name у инпутов совпадали с тем, что принимаете в обработчике

  20. Кристина

    Здравствуйте! У меня глупый вопрос: как заполнить эту форму и связать ее с ссылками на сайте, чтобы было понятно с какого места пришла заявка?

    1. dimadv7

      при помощи window.location можно получить текущий адрес страницы и поместить в скрытое поле, в параметр value. А дальше обрабатывать его при отправке формы как и любое другое поле

  21. Владимир

    У меня квиз,открывается Iframe,и почему то с него метки не приходят,а если с самого сайта,то приходят,как можно решить данный момент,не подскажите?

    1. Дмитрий Давыдов

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

  22. Владимир

    Спасибо Дмитрий,попробую реализовать!!!

  23. Путин

    Убири это попап на весь экран. Поведенческие сайта убьешь и юзеров бесит.

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