Как добавить UTM-метки в заявки с сайта

Как добавить UTM-метки в заявки с сайта

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);
}
PHP

Применение:

<form action="" method="post">
	<label>Ваше имя</label>
	<input type="text" name="name">
	
	<label>Телефон</label>
	<input type="text" name="phone">
	
	<?php echo get_utm(); ?>
</form>
HTML

Результат:

<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);
	}
}
PHP

В обработчике формы работать с $_COOKIE['utm'].

$order = '';
if (!empty($_COOKIE['utm'])) {
	foreach ($_COOKIE['utm'] as $i => $row) {
		$order .= $i . ': ' . $row . "\r\n";
	}
}

echo $order;
PHP

Результат:

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;
	}
}
PHP

В обработчике формы:

$order = '';
if (!empty($_SESSION['utm'])) {
	foreach ($_SESSION['utm'] as $i => $row) {
		$order .= $i . ': ' . $row . "\r\n";
	}
}

echo $order;
PHP

Результат:

utm_source: yandex
utm_medium: cpc
utm_campaign: {campaign_id}
14.08.2019, обновлено 17.01.2021
19697

Комментарии 2

Сергей Маргелов Сергей Маргелов
4 июня 2020 в 11:13
Ошибка в названии переменной $_SESSEION в последнем варианте. Правильно $_SESSION
На случай, если кто-то нагуглит это решение, как я, а оно не заработает.
Snipp.ru Snipp.ru
4 июня 2020 в 16:10
Спасибо за комментарий. Код исправлен.

, чтобы добавить комментарий.

Другие публикации

Пример парсинга html-страницы на phpQuery
phpQuery – это удобный HTML парсер взявший за основу селекторы, фильтры и методы jQuery, которые позволяют...
62989
+26
Работа с API Instagram
В статье описана регистрация клиента, получения access token, примеры использования методов API Instagram на PHP.
24046
+3
Whois, как получить данные IP-адреса и домена в PHP
Несколько примеров как в PHP получить информацию о домене и IP-адресе.
19532
+5
PHP транслит
PHP функции для перевода текста, ЧПУ, ссылок и имен файлов в транслит.
40045
+10
Метрика API
API Яндекс метрики позволяет получить информацию о посещаемости сайта и формировать отчеты, но с ограничением в 30 запросов в секунду и 5000 в сутки.
17410
+6
Примеры использования cURL в PHP
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
220173
+21