Deprecated: Creation of dynamic property Simple_Code_Block_Loader::$shortcodes is deprecated in /home/u643716194/domains/votus.com.ua/public_html/wp-content/plugins/simple-code-block/core/class-simple-code-block-loader.php on line 61
Google Analytics змінив формат cookie _ga_XXXX

Google тихцем змінив GA4 cookie формат

Зненацька перестав працювати Measurement Protocol, або ваша session-based аналітика вмерла, чи може серверний GTM не надсилає дані в GA4? Без помилок, без логів, без сповіщень… Це просто Google вирішив оновити формат cookie _ga/_ga_XXXX, не сказавши про це взагалі нікому.

Це сталося приблизно 6 травня 2025. Одним з перших, хто помітив цю проблему і написав про неї був Matteo Zambon і Elvinas Karalis.
GA4 cookie (_ga_XXXX) отримали новий формат, і тепер усе, що напряму парсило ці значення, може мати биті client/session IDs.

Автор скріншоту: Elvinas Karalis

Як виглядає новий формат GA4 cookie

Ось приклад GS cookie (який містить session ID):

GS2.1.s1747132561$o1$g0$t1747132655$j0$l0$h0

Що змінилось?

  • Раніше все було простіше, а тепер треба парсити строку і витягувати значення з конкретної частини.
  • Тепер session_id — це число після .s і до першого $.
    GS2.1.s1747132561$o1$g0$t1747132655$j0$l0$h0
  • І звісно, Google ніде це не задокументував.

Хто постраждає?

1. Measurement Protocol (MP)

Якщо у тебе серверний MP і ти передаєш client_id або session_id, вирізаючи їх із cookie напряму — вони не долітатимуть, а атрибуція буде нульовою.

Автор скріншоту: Matteo Zambon

2. Серверний Google Tag Manager

Багато налаштувань беруть client ID напряму з cookie (через document.cookie або в Cloud Functions). Якщо ти не юзаєш getClientId() або gtag('get'), а просто парсиш строку — отримаєш сміття.

3. Маркетингові CDP та інтеграції

RudderStack, Segment, власні CDP — часто заточені під старий формат cookie. Їхня логіка матчінгу користувачів зламається.

4. Атрибуція та lead matching

CRM, маркетингові платформи, custom-на логіка для UTM-to-lead зв’язків… — все, що брало _ga з cookie і клеїло до CRM як унікальний ідентифікатор, тепер потенційно мертве.


Чому це погано?

  • Нема логів про помилку. Все працює, але неправильно. Це найгірше.
  • Непомітна втрата якості даних. Вчора атрибуція працювала, сьогодні — ні.
  • Документації нуль. Вся інфа зібрана ентузіастами з постів Elvinas Karalis, Matteo Zambon і кількох скарг на форумах.

Що робити?

Аудит всього, що чіпляється до GA cookie напряму:

  • MP-сервери
  • server-side GTM
  • middleware (Node.js, Python backend)
  • custom API прокладки
  • CRM або CDP інтеграції
  • Attribution-платформи

Використовуй офіційні методи

Google давно штовхає ідею: “не парсити cookie, а використовувати API”, наприклад:

jsCopyEditgtag('get', 'GA_MEASUREMENT_ID', 'client_id', (clientId) => {
// норм спосіб отримати client ID
})

Але не всі це робили і багато людей і далі швидко брали document.cookie.match(...)

Відмовся від парсингу cookie взагалі

Cookie — це внутрішня реалізація, і Google має повне право змінювати її як хоче. Якщо твоя аналітика зав’язана на .split('.'), то вона живе на пороховій бочці. Cookieless епоха як не як йде 🙂


Висновки

Google, як завжди, мовчки підкинув сюрприз — і невелика частина аналітики по всьому світу просто зламалась. Якщо в тебе будь-яка логіка залежить від формату GA cookies — перевір прямо зараз.

TL;DR

  • GA4 cookie формат змінився.
  • Якщо парсиш _ga, _ga_XXXX, GS вручну — фікси свій data stream, або RIP.
  • Використовуй офіційні API (gtag('get'), gtm.getCookieValues()).
  • Ніколи не покладайся на структуру GA cookie як на щось стабільне.
  • Перевір MP, SSGTM, server2server логіку.

Залишити коментар