У Google Ads для этого есть отдельная ошибка. Её формулировка:
The “Website redirects are losing click data” error appears when your redirects aren’t passing along your GCLIDs (Google Click Identifiers).
И всё предлагаемое лечение:
You will need to identify what isn’t working properly on your server and have it fixed by your IT personnel so that the GCLID isn’t removed from the URL to allow the conversions to be tracked.
Выясните, что работает не так. Вот и вся инструкция. Ни слова о том, как найти, какое звено цепочки его теряет, — а ведь это единственное, что вам на самом деле нужно знать.
Хватает одной команды.
Сам тест
curl идёт по редиректам и печатает заголовки каждого хопа. Отправьте запрос с
параметром-маркером и посмотрите, где он перестаёт появляться.
curl -sIL "https://www.example.com/landing?gclid=TEST123&utm_source=probe" \
| grep -iE '^HTTP/|^location:'
Вот настоящий прогон на этом сайте, где два хопа: www на апекс, а потом нормализация
завершающего слэша.
HTTP/1.1 301 Moved Permanently
Location: https://301.sh/page-rules-where-every-setting-went?gclid=TEST123&utm_source=probe
HTTP/1.1 307 Temporary Redirect
Location: /page-rules-where-every-setting-went/?gclid=TEST123&utm_source=probe
HTTP/1.1 200 OK
Оба хопа проносят параметры дальше, а финальный ответ — 200. Вот так выглядит здоровая цепочка, и этот тест стоит сначала прогнать на заведомо исправном адресе, прежде чем доверять результату на подозрительном.
Сломанная цепочка выглядит так же, только один Location приходит голым:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/landing/ <- gclid gone here
HTTP/1.1 200 OK
Хоп, чей Location первым пришёл без вашего маркера, и есть тот, который надо чинить. Всё, что
после него, невиновно: раз параметр пропал, вернуться он уже не может.
Две детали, которые меняют ответ.
Используйте -I, а не браузер. Браузер показывает финальный адрес и прячет цепочку,
которая к нему привела. Он ещё и выполняет JavaScript самой страницы, а тот может вернуть
параметр обратно, и сломанный редирект будет выглядеть исправным.
Смотрите на коды ответа, а не только на Location. 307 и 308 сохраняют метод запроса,
а 301 и 302 могут и не сохранить. Если клик приходит методом POST, эта разница — второй
способ потерять данные, отдельный от строки запроса.
На Cloudflare сначала проверьте вот это
У Bulk Redirects есть параметр preserve_query_string, и
его задокументированное значение по умолчанию — false.
Если параметр не трогать, редирект отбросит всю строку запроса вместе с click ID. Это самая
вероятная причина ошибки Google Ads в зоне Cloudflare.
Раз уж вы туда зашли, стоит заодно проверить, что список у вас того размера, какого вы ожидаете: задокументированная квота бесплатного тарифа — 10 000 адресов, а у изрядного числа аккаунтов до сих пор 20.
А теперь то, что удивляет людей. Прочитайте дословно, что происходит, когда его включают:
the final redirect URL uses the original request’s query string. Any query string on the target URL is discarded
То есть переключатель не добавляет. Он замещает. Если у целевого адреса есть свои параметры, включите сохранение строки запроса — и они пропадут.
Отсюда два положения и никакого третьего:
preserve_query_string |
Входящий gclid | Параметры вашего целевого адреса |
|---|---|---|
false (по умолчанию) |
отброшен | сохранены |
true |
сохранён | отброшены |
Настройки, которая сохранит и то и другое, нет. Один Bulk Redirect не может одновременно пронести click ID и дописать собственный параметр. Если нужны оба, редирект придётся строить там, где адрес можно собрать, а не выбирать между двумя его половинами.
Чего тест не скажет
Он находит хоп. Он не говорит, почему этот хоп так себя ведёт, а причина не всегда в правиле редиректа. Строки запроса пропадают и там, где в трассировке curl вообще ничего не видно: ссылка, переписанная почтовым клиентом; встроенный браузер приложения, который срезает параметры до отправки запроса; клиентский роутер, который переписывает адрес после загрузки страницы.
Если трассировка показывает, что параметр доехал до 200 целым, а аналитика всё равно ничего не сообщает, перестаньте смотреть на редирект. Потеря происходит уже после запроса, и это уже другое расследование.
Когда одного правила мало
Для одного редиректа на одном домене это галочка и одна команда curl.
Другое дело — когда click ID важны сразу по целому набору доменов: коды с печатных материалов,
партнёрские ссылки, хостнеймы под кампании, у каждого своё правило и у каждого свой шанс
оказаться тем самым голым Location в чьей-то трассировке. Проверять их — значит прогонять
этот тест для каждого, руками, каждый раз, когда что-то меняется. Ровно эту работу и делает 301.st. Для одного
правила галочка быстрее любого инструмента.