If you woke up today wondering “Did Google quietly break something in GA4 again?” — the answer is yes. Yes, they did.

They’ve rolled out a new cookie format. The old GS1 format — the one with dots and fixed positions that nobody truly understood — has been replaced with GS2.

What changed?

GS1 was like an unlabeled Excel spreadsheet. Values in fixed positions, separated by dots, and if Google added just one more field? Congrats, your parser is dead. Example: GS1.1.1746825440.14.0.17468254406.0.0.295082955

GS2 is more like URL parameters — key-value pairs, readable, order doesn’t matter, and missing values don’t break everything. Example: GS2.1.s1746825440$o14$g0$t1746825440...

Each value has a prefix:

s = Session ID

o = Session Number

g = Session Engaged

t = Last Hit Timestamp

and so on…

Why did Google do this?

Because:

- It’s easier to extend in the future.

- It’s self-documenting (finally).

- Parsers won’t break when something new is added.

- And it aligns with modern standards (like JSON, not cave painting).

The good news?

Július Selnekovič stepped up and made a custom GTM Variable Template that parses this new GS2 cookie format for you. It’s not black magic — just a clean and handy variable that does the annoying part for you.

If you’re using GTM Server-Side and pushing event data into BigQuery, this template is gold. It helps you reconstruct your GA4-like schema in your own BigQuery tables, on your terms, with the parameters you care about.

Session ID?

Timestamp?

Logged-in state?

Join ID? You bet.

Here’s the original post.

It won’t fix GA4’s UX, but at least your cookie parser won’t explode.

If you work with GA4 to BigQuery exports, be sure to check out my SQL cheat sheet.