
UTM метки позволяют точно отслеживать источники трафика и эффективность рекламных кампаний. В PHP их можно получать напрямую из глобального массива $_GET, так как метки передаются в URL как параметры. Например, utm_source, utm_medium и utm_campaign можно извлечь одной строкой: $source = $_GET[‘utm_source’] ?? »;.
Для комплексного анализа удобно объединять все UTM параметры в массив. Это позволяет передавать данные в базы, формировать отчеты и автоматизировать сегментацию пользователей. Рекомендуется проверять наличие каждой метки через isset и использовать фильтры, например filter_input(INPUT_GET, ‘utm_source’, FILTER_SANITIZE_STRING), чтобы исключить потенциально опасные значения.
При необходимости сохранять UTM метки между сессиями стоит использовать $_SESSION. Сохранив данные при первом заходе пользователя, вы сможете корректно связывать действия с конкретной рекламной кампанией, даже если посетитель переходит по сайту через несколько страниц. Такая практика обеспечивает точную аналитику и позволяет строить маркетинговые отчеты без потери данных.
Как прочитать UTM параметры из URL в PHP

UTM параметры позволяют отслеживать источники трафика и эффективность кампаний. В PHP их можно получить напрямую из глобального массива $_GET.
Пример базового чтения UTM параметров:
<?php
$utm_source = isset($_GET['utm_source']) ? $_GET['utm_source'] : '';
$utm_medium = isset($_GET['utm_medium']) ? $_GET['utm_medium'] : '';
$utm_campaign = isset($_GET['utm_campaign']) ? $_GET['utm_campaign'] : '';
$utm_term = isset($_GET['utm_term']) ? $_GET['utm_term'] : '';
$utm_content = isset($_GET['utm_content']) ? $_GET['utm_content'] : '';
?>
Для удобства и предотвращения дублирования кода рекомендуется использовать функцию, которая возвращает все UTM параметры в виде массива:
<?php
function getUTMParams() {
$utmKeys = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'];
$utmData = [];
foreach ($utmKeys as $key) {
$utmData[$key] = isset($_GET[$key]) ? $_GET[$key] : null;
}
return $utmData;
}
$utmParams = getUTMParams();
?>
Дополнительно стоит фильтровать значения для безопасности и корректного хранения:
<?php
foreach ($utmParams as $key => $value) {
if ($value !== null) {
$utmParams[$key] = htmlspecialchars(trim($value), ENT_QUOTES);
}
}
?>
Если URL передается не напрямую через $_GET, а как строка, можно использовать parse_url и parse_str:
<?php
$url = 'https://example.com/page?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale';
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);
$utmParams = array_intersect_key($params, array_flip(['utm_source','utm_medium','utm_campaign','utm_term','utm_content']));
?>
Рекомендации:
- Всегда проверяйте наличие параметров перед использованием.
- Используйте фильтрацию и экранирование значений.
- Для анализа сохраняйте UTM параметры в сессии или базе данных.
- Старайтесь использовать единый метод получения UTM по всему проекту.
Использование $_GET для извлечения utm_source, utm_medium и utm_campaign
Для получения UTM-меток в PHP используют глобальный массив $_GET, который автоматически собирает параметры из URL. Например, URL https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale передаст значения меток в массив:
$utm_source = $_GET['utm_source'] ?? '';
$utm_medium = $_GET['utm_medium'] ?? '';
$utm_campaign = $_GET['utm_campaign'] ?? '';
Использование оператора ?? предотвращает ошибки при отсутствии параметров в URL, возвращая пустую строку. Это особенно важно при динамических ссылках с неполными UTM-метками.
Для дополнительной безопасности рекомендуется применять filter_input с фильтром FILTER_SANITIZE_STRING или FILTER_SANITIZE_SPECIAL_CHARS, чтобы избежать внедрения нежелательного кода:
$utm_source = filter_input(INPUT_GET, 'utm_source', FILTER_SANITIZE_STRING);
$utm_medium = filter_input(INPUT_GET, 'utm_medium', FILTER_SANITIZE_STRING);
$utm_campaign = filter_input(INPUT_GET, 'utm_campaign', FILTER_SANITIZE_STRING);
После извлечения значения можно сохранять в сессии или базе данных для последующего анализа эффективности кампаний. Например, запись в сессию обеспечит доступ к меткам на всех страницах сайта без повторного считывания URL:
session_start();
$_SESSION['utm_source'] = $utm_source;
$_SESSION['utm_medium'] = $utm_medium;
$_SESSION['utm_campaign'] = $utm_campaign;
Важно стандартизировать обработку меток: приводить их к нижнему регистру и удалять пробелы, чтобы аналитика не дробилась по разным вариантам одного и того же значения:
$utm_source = strtolower(trim($utm_source));
$utm_medium = strtolower(trim($utm_medium));
$utm_campaign = strtolower(trim($utm_campaign));
Сохранение UTM меток в сессии для повторного использования

Для точного отслеживания источников трафика полезно сохранять UTM метки в сессии PHP, чтобы данные оставались доступными при переходах между страницами. Начните с инициализации сессии на каждой странице, где будут использоваться метки:
session_start();
Далее проверяйте наличие UTM параметров в URL и сохраняйте их в массив сессии:
if(isset($_GET['utm_source'])) {
$_SESSION['utm']['utm_source'] = $_GET['utm_source'];
}
if(isset($_GET['utm_medium'])) {
$_SESSION['utm']['utm_medium'] = $_GET['utm_medium'];
}
if(isset($_GET['utm_campaign'])) {
$_SESSION['utm']['utm_campaign'] = $_GET['utm_campaign'];
}
if(isset($_GET['utm_term'])) {
$_SESSION['utm']['utm_term'] = $_GET['utm_term'];
}
if(isset($_GET['utm_content'])) {
$_SESSION['utm']['utm_content'] = $_GET['utm_content'];
}
После сохранения меток в сессии их можно повторно использовать на любой странице сайта без передачи через URL. Например, при отправке формы:
Для анализа данных удобно визуализировать сохраненные метки в таблице:
| Параметр | Значение |
|---|---|
| utm_source | = $_SESSION['utm']['utm_source'] ?? '-' ?> |
| utm_medium | = $_SESSION['utm']['utm_medium'] ?? '-' ?> |
| utm_campaign | = $_SESSION['utm']['utm_campaign'] ?? '-' ?> |
| utm_term | = $_SESSION['utm']['utm_term'] ?? '-' ?> |
| utm_content | = $_SESSION['utm']['utm_content'] ?? '-' ?> |
Использование сессий позволяет объединять данные из разных переходов пользователя, исключает потерю UTM меток при навигации и упрощает передачу данных в CRM или аналитические системы.
Запись UTM параметров в базу данных через PHP
Для фиксации UTM параметров используйте массив $_GET, проверяя наличие ключей utm_source, utm_medium, utm_campaign, utm_term и utm_content. Рекомендуется применять фильтрацию через filter_input или filter_var для предотвращения инъекций.
Создайте таблицу в MySQL с полями: id (INT, AUTO_INCREMENT), utm_source, utm_medium, utm_campaign, utm_term, utm_content (VARCHAR), created_at (DATETIME). Поле created_at заполняется функцией NOW().
Для вставки данных используйте подготовленные выражения PDO:
$stmt = $pdo->prepare("INSERT INTO utm_logs (utm_source, utm_medium, utm_campaign, utm_term, utm_content, created_at) VALUES (:source, :medium, :campaign, :term, :content, NOW())");
Привязывайте значения через bindParam или bindValue, чтобы исключить SQL-инъекции:
$stmt->bindValue(':source', $_GET['utm_source'] ?? '', PDO::PARAM_STR);
После подготовки запроса выполните метод execute(). Рекомендуется оборачивать вызов в try-catch для отлова ошибок соединения или вставки данных.
Если UTM параметры не обязательны, используйте оператор null coalescing (??) для подстановки пустой строки. Это позволяет избежать ошибок при отсутствии некоторых параметров.
Для аналитики сохраняйте также IP пользователя и User-Agent, добавив соответствующие поля в таблицу. Их можно получить через $_SERVER[‘REMOTE_ADDR’] и $_SERVER[‘HTTP_USER_AGENT’]. Это расширяет возможности сегментации кампаний.
Для производительности на высоконагруженных сайтах рекомендуются пакетные вставки данных или очередь через cron, чтобы минимизировать задержки при загрузке страниц.
Регулярно проверяйте корректность данных и длину строк, соответствующую размеру полей в таблице, чтобы исключить обрезку и ошибки при вставке.
Передача UTM меток в формы на сайте автоматически

Для автоматической передачи UTM меток в формы необходимо считывать параметры из URL и сохранять их в скрытые поля формы. Основные UTM параметры: utm_source, utm_medium, utm_campaign, utm_term и utm_content.
В PHP это реализуется через массив $_GET. Например, чтобы получить значение utm_source:
$utm_source = isset($_GET['utm_source']) ? htmlspecialchars($_GET['utm_source']) : '';
Для каждой формы на сайте создайте скрытые поля:
<input type="hidden" name="utm_source" value="<?php echo $utm_source; ?>">
<input type="hidden" name="utm_medium" value="<?php echo $utm_medium; ?>">
Если пользователь переходит на несколько страниц перед отправкой формы, значения UTM лучше сохранять в сессии:
session_start();
if(isset($_GET['utm_source'])) $_SESSION['utm_source'] = $_GET['utm_source'];
После этого скрытые поля формы можно заполнять из $_SESSION, что гарантирует сохранение всех параметров даже при переходе между страницами.
Для сложных сайтов с множественными формами стоит централизовать обработку: создать PHP-файл utm-handler.php, который подключается в каждой форме и автоматически подставляет значения UTM в скрытые поля.
Таким образом, данные о рекламных кампаниях передаются корректно в CRM, что позволяет точно анализировать эффективность каналов и кампаний.
Создание функции для универсального получения всех UTM меток
Для систематического извлечения UTM меток из URL в PHP удобно создать одну универсальную функцию. Она должна принимать URL или использовать текущий запрос, анализировать параметры и возвращать массив с ключами utm_source, utm_medium, utm_campaign, utm_term, utm_content.
Пример реализации функции:
function getUTMParams($url = null) {
$query = $url ? parse_url($url, PHP_URL_QUERY) : $_SERVER['QUERY_STRING'];
parse_str($query, $params);
$utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
$utmData = [];
foreach ($utmKeys as $key) {
$utmData[$key] = isset($params[$key]) ? $params[$key] : null;
}
return $utmData;
}
Функция учитывает отсутствие параметров и возвращает null для незаполненных UTM меток. Она совместима с любыми URL, включая динамические ссылки на сайте или внешние источники.
Для получения данных из текущего запроса достаточно вызвать:
$utm = getUTMParams();
Для конкретного URL с UTM:
$utm = getUTMParams('https://example.com?utm_source=google&utm_medium=cpc&utm_campaign=spring');
Использование массива позволяет интегрировать UTM в аналитические системы, CRM и базы данных без повторной обработки каждого параметра вручную.
Важно: функция безопасно работает с любыми URL, игнорирует лишние GET-параметры и всегда возвращает полный набор ключей, что упрощает дальнейшую обработку.
Отслеживание UTM меток при переходе между страницами сайта

Для сохранения UTM меток при навигации по сайту необходимо передавать их между страницами через сессии или куки. Простое использование GET-параметров не гарантирует сохранение данных при переходе с главной страницы на внутренние.
Пример сохранения UTM меток в сессии на PHP:
session_start();
$utm_parameters = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
foreach ($utm_parameters as $param) {
if (isset($_GET[$param])) {
$_SESSION[$param] = $_GET[$param];
}
}
После сохранения UTM в сессии, их можно использовать на любой внутренней странице:
echo 'Источник: ' . ($_SESSION['utm_source'] ?? 'не указан');
Для долгосрочного хранения, если пользователь покидает сайт и возвращается через несколько дней, предпочтительнее использовать куки:
foreach ($utm_parameters as $param) {
if (isset($_GET[$param])) {
setcookie($param, $_GET[$param], time() + 30*24*60*60, '/');
}
}
Для корректного анализа переходов необходимо:
- Передавать UTM параметры через все внутренние ссылки сайта, если сессии или куки не используются.
- Проверять наличие UTM меток при загрузке каждой страницы и сохранять их при необходимости.
- Использовать уникальные имена куки или сессий, чтобы не перезаписывать данные других кампаний.
- Обрабатывать ситуации, когда пользователь возвращается с новой UTM меткой, обновляя только актуальные параметры.
Применяя этот подход, можно точно связывать действия пользователей с источниками трафика и корректно строить аналитику конверсий на сайте.
Вопрос-ответ:
Что такое UTM-метки и зачем их использовать с PHP?
UTM-метки — это параметры, добавляемые к ссылкам для отслеживания источников трафика и эффективности рекламных кампаний. С помощью PHP можно автоматически считывать эти метки при переходе пользователя на сайт, сохранять их в базе данных или использовать для персонализации контента. Это помогает понять, какие каналы приводят посетителей и какие кампании работают лучше.
Как получить UTM-метки из URL в PHP?
В PHP доступ к UTM-меткам осуществляется через глобальный массив $_GET. Например, если в URL есть параметры utm_source, utm_medium и utm_campaign, их можно получить так: $utm_source = $_GET['utm_source'] ?? '';. Аналогично обрабатываются остальные параметры. При этом важно проверять, что параметры существуют, чтобы избежать ошибок.
Можно ли сохранять UTM-метки для последующего анализа?
Да, после получения параметров через PHP их можно сохранить в базе данных вместе с информацией о пользователе или сессии. Обычно создают таблицу с полями для utm_source, utm_medium, utm_campaign, utm_term и utm_content, а также дату посещения. Такой подход позволяет анализировать поведение пользователей и эффективность разных источников трафика.
Как защитить обработку UTM-меток от вредоносного ввода?
Поскольку UTM-метки поступают из URL, их нельзя считать полностью безопасными. Необходимо фильтровать и экранировать данные перед использованием или сохранением. В PHP для этого применяют функции htmlspecialchars() для вывода на страницу и подготовленные выражения для работы с базой данных. Это предотвращает внедрение нежелательного кода и SQL-инъекции.
Можно ли объединять UTM-метки с куки или сессиями?
Да, часто UTM-метки сохраняют в сессиях или куки, чтобы отслеживать пользователя на протяжении нескольких визитов. Например, при первом переходе на сайт PHP может записать UTM-данные в сессию: $_SESSION['utm_source'] = $_GET['utm_source'] ?? '';. Это позволяет анализировать путь пользователя, даже если он не приходит по одной и той же ссылке повторно.
