UTM метки – это дополнительные данные, которые добавляются в URL с помощью GET-параметров при клике на баннер в рекламной компании Яндекса или Гугл.
Основные метки:
utm_source |
Источник перехода |
utm_medium |
Тип трафика |
utm_campaign |
Название рекламной кампании |
utm_content |
Дополнительная информация, которая помогает различать объявления |
utm_term |
Ключевая фраза |
Если к сайту подключена какая либо CRM и требуется фиксация UTM-меток вместе с формой заказа, то есть три варианта:
Рассмотрим на примере ссылки:
https://site.ru/test.php?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}
Вставка скрытых полей в форму
Вариант не очень хороший т.к. если клиент перейдет на другую страницу, то метки будут потеряны.
Функция отчистит и выведет поля в форме:
function get_utm()
{
$out = array();
$keys = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term');
foreach ($keys as $row) {
if (!empty($_GET[$row])) {
$value = strval($_GET[$row]);
$value = stripslashes($value);
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = strip_tags($value);
$value = htmlspecialchars($value, ENT_QUOTES);
$out[] = '<input type="hidden" name="' . $row . '" value="' . $value . '">';
}
}
return implode("\r\n", $out);
}
Применение:
<form action="" method="post">
<label>Ваше имя</label>
<input type="text" name="name">
<label>Телефон</label>
<input type="text" name="phone">
<?php echo get_utm(); ?>
</form>
Результат:
<form action="" method="post">
<label>Ваше имя</label>
<input type="text" name="name">
<label>Телефон</label>
<input type="text" name="phone">
<input type="hidden" name="utm_source" value="yandex">
<input type="hidden" name="utm_medium" value="cpc">
<input type="hidden" name="utm_campaign" value="{campaign_id}">
</form>
UTM-метки в cookies
Куки будут установлены до закрытия браузера.
$keys = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term');
foreach ($keys as $row) {
if (!empty($_GET[$row])) {
$value = strval($_GET[$row]);
$value = stripslashes($value);
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = strip_tags($value);
$value = htmlspecialchars($value, ENT_QUOTES);
setcookie('utm[' . $row . ']', $value);
}
}
В обработчике формы работать с $_COOKIE['utm']
.
$order = '';
if (!empty($_COOKIE['utm'])) {
foreach ($_COOKIE['utm'] as $i => $row) {
$order .= $i . ': ' . $row . "\r\n";
}
}
echo $order;
Результат:
utm_source: yandex
utm_medium: cpc
utm_campaign: {campaign_id}
UTM-метки в сессию
session_start();
$keys = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term');
foreach ($keys as $row) {
if (!empty($_GET[$row])) {
$value = strval($_GET[$row]);
$value = stripslashes($value);
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = strip_tags($value);
$value = htmlspecialchars($value, ENT_QUOTES);
$_SESSION['utm'][$row] = $value;
}
}
В обработчике формы:
$order = '';
if (!empty($_SESSION['utm'])) {
foreach ($_SESSION['utm'] as $i => $row) {
$order .= $i . ': ' . $row . "\r\n";
}
}
echo $order;
Результат:
utm_source: yandex
utm_medium: cpc
utm_campaign: {campaign_id}
На случай, если кто-то нагуглит это решение, как я, а оно не заработает.