Исправление роутинга URL, редиректов и восстановление передачи параметров (GCLID / UTM) в GA4
Контекст проблемы:
Данные о расходах, кликах и кампаниях из Google Ads не передаются в Google Analytics 4 (в GA4 Ads cost = 0, конверсии в Google Ads = 0).
Авторазметка (Auto-tagging) в Google Ads включена, но поддержка Google зафиксировала критическую аномалию: из тысяч кликов по рекламе до GA4 доходит всего около 8 сеансов. Роботы Google периодически фиксируют ошибку доступа к целевым страницам («Landing page unavailable»).
В ходе аудита было установлено, что сайт ломает рекламные ссылки двумя разными способами на уровне внутренних редиректов/обработки URL в WordPress.
ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ И ЗАДАЧИ:
1. Исправить склеивание URL и удаление знака вопроса (?)
На главной странице сайта и на страницах категорий WooCommerce при переходе с рекламы срабатывает внутренний редирект, который полностью стирает разделительный знак вопроса (?). Из-за этого GET-параметры намертво склеиваются с адресом страницы. Сервер пытается найти такую страницу, выдает ошибку, а GA4 не может распознать метки.
Пример поломки на категориях: .../product-category/truny/utm_source=google&utm_medium=cpc...
Пример поломки на главной: https://www.lastway.com.ua/gclid=Cj0KCQjw0JnRBhDJARIsALobnXYY...
КАК ДОЛЖНО БЫТЬ: Знак вопроса обязан оставаться на месте, разделяя URL и параметры:
https://www.lastway.com.ua/product-category/truny/?utm_source=google...
https://www.lastway.com.ua/?gclid=Cj0KCQjw0JnRBhDJARIsALobnXYY...
2. Исключить GET-параметры из правила приведения URL к нижнему регистру (Lower Case)
На страницах услуг (/ru/service/...) знак вопроса сохраняется, но сайт принудительно переводит всю строку URL вместе с параметрами в нижний регистр.
Параметр gclid (идентификатор клика Google) чувствителен к регистру букв (case-sensitive). Когда хэш base64 переводится в нижний регистр, он безвозвратно разрушается, и GA4 его игнорирует.
Пример поломки (все буквы стали маленькими):
.../?...&gclid=cj0kcqjw0jnrbhdjarisalobnxyy8gmug0_gfbdmrrkddfqsfqocgkpoiug6z3vvipu4vwug1knp5hqaak6healw_wcb
КАК ДОЛЖНО БЫТЬ (оригинальный регистр Google Ads):
.../?...&gclid=Cj0KCQjw0JnRBhDJARIsALobnXYY8GMUG0_gFbDMrrKDdfQSfqoCGkpOIUG6z3VVIpU4vwUg1knP5HQaAk6hEALw_wcB
Где искать проблему (круг подозреваемых плагинов):
Redirection: Проверить глобальные правила (настройки передачи Query Parameters). Должно быть активно «Pass query parameters through».
Cyrillic URL Debug: Проверить регулярные выражения, обрабатывающие кириллицу (например, слово «гробы»). Возможно, плагин некорректно декодирует строку и затирает знак ?, либо принудительно опускает регистр параметров.
Polylang / Connect Polylang for Elementor: Проверить логику редиректов при определении языка пользователя (/ru/). Параметры не должны модифицироваться при роутинге языковых версий.
Yoast SEO: Проверить, не включена ли функция «Очистить постоянные ссылки» (Redirect ugly URLs).
Кастомные функции перевода ссылок в нижний регистр в functions.php.
3. Проверить доступность сайта для роботов Google (Решение «Landing page unavailable»)
Убедиться, что защитные системы хостинга (файрвол, ModSecurity, Imunify360 или антибот-защита) не блокируют юзер-агент GoogleAdsBot и проверочных роботов Google при наплыве рекламного трафика. При необходимости добавить IP-адреса и ботов Google в белый список (White List) на уровне сервера.
Проект закрывается только тогда, когда мы увидим, что ссылки перестали ломаться, а Google Analytics успешно фиксирует корректный gclid и связывает сессии с рекламой Ads в режиме реального времени. Если нужно — подождем обновления отчетов по расходам.
Цена договорная