Диагностика проблемы с UTM параметрами в affiliate ссылках WooCommerce
Проблема с неработающими affiliate ссылками, содержащими UTM метки, часто возникает из-за того, что WooCommerce или плагины кеширования отбрасывают эти параметры при генерации или обработке URL. В результате переходы по ссылкам без UTM не дают корректного отслеживания, а целевые страницы либо не корректно учитывают параметры в аналитике.
Для диагностики нужно проверить:
- Передаются ли UTM-параметры в URL при клике на affiliate ссылку.
- Сохраняются ли параметры при переходе на страницу продукта WooCommerce.
- Не очищаются ли UTM параметры плагинами кеширования или редиректами.
- Работает ли корректно отслеживание в вашей системе аналитики (Google Analytics, Яндекс Метрика и пр.).
Пошаговое решение: сохраняем и передаем UTM параметры в affiliate ссылках WooCommerce
1. Отключение очистки URL от UTM параметров
Многие плагины кеширования и оптимизации URL удаляют параметры для чистоты адресов. Проверьте настройки кеша (например, WP Rocket, W3 Total Cache) и исключите из очистки параметры utm_source, utm_medium, utm_campaign.
2. Сохраняем UTM параметры в сессии для последующего использования
Добавьте в functions.php вашей темы или в кастомный плагин следующий код, чтобы сохранять UTM в сессии пользователя:
add_action('init', function() {
if (!session_id()) {
session_start();
}
$utm_params = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
foreach ($utm_params as $param) {
if (isset($_GET[$param])) {
$_SESSION[$param] = sanitize_text_field($_GET[$param]);
}
}
});3. Добавляем UTM параметры к affiliate ссылкам WooCommerce
Если affiliate ссылки выводятся динамически, можно автоматически добавлять сохранённые UTM параметры к ним. Например, при выводе ссылки в шаблоне:
function add_utm_to_affiliate_link($url) {
if (!session_id()) {
session_start();
}
$utm_params = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
$query = [];
foreach ($utm_params as $param) {
if (!empty($_SESSION[$param])) {
$query[$param] = $_SESSION[$param];
}
}
if ($query) {
$url = add_query_arg($query, $url);
}
return $url;
}
// Пример использования при выводе ссылки
$affiliate_url = 'https://partner.example.com/product?ref=123';
echo '<a href="' . esc_url(add_utm_to_affiliate_link($affiliate_url)) . '">Купить</a>';4. Проверяем работу редиректов и кеша
Если у вас настроены редиректы через .htaccess или плагины, убедитесь, что они не удаляют UTM параметры. Для кеширования — в настройках плагина кеша исключите страницы с affiliate ссылками из кеширования или настройте правила сохранения параметров URL.
Проверка результата
- Кликните по affiliate ссылке с UTM параметрами и убедитесь, что они сохранились в URL на странице товара.
- Проверьте в консоли браузера (Network) запросы к аналитике — должны отправляться с корректными метками.
- В системе аналитики проверьте появление переходов с нужными UTM параметрами.
Частые ошибки и как их исправить
- Отсутствие сессии PHP: Если сессия не стартует, параметры не сохранятся. Убедитесь, что
session_start()вызывается корректно и до вывода контента. - Плагины кеширования удаляют параметры: Проверьте список исключений в настройках кеша и добавьте UTM параметры в whitelist.
- Неправильное добавление параметров к ссылкам: Используйте WordPress функцию
add_query_arg(), чтобы корректно добавлять GET параметры без риска сломать URL. - Редиректы без учета UTM: Настройте редиректы так, чтобы они сохраняли GET параметры, либо полностью отключите редиректы для affiliate ссылок.
Практические советы для оптимизации и безопасности
- Не храните UTM параметры в базе данных — достаточно сессии, чтобы не создавать нагрузку.
- Используйте
sanitize_text_field()для очистки входящих GET параметров, чтобы исключить XSS-атаки. - Проверяйте логи сервера на предмет 404 ошибок, связанных с урлами affiliate ссылок.
- При использовании CDN прокси настройте правила, чтобы не удалять GET параметры.
Сравнение вариантов решения проблемы
| Метод | Плюсы | Минусы | Пример |
|---|---|---|---|
| Сохранять UTM в сессии и добавлять к ссылкам | Гибко, поддерживает любые ссылки, не влияет на SEO | Требует PHP сессии, возможна нагрузка при большом трафике | Код из раздела 2-3 |
| Использовать плагины для управления UTM | Простота настройки, интеграция с аналитикой | Может конфликтовать с кешем, требует поддержки | Плагины типа AffiliateWP с расширениями |
| Отключить кеширование для страниц с affiliate ссылками | Гарантирует сохранение параметров | Снижение производительности сайта | Настройки кеша |