User Properties w GA4 to jeden z najbardziej niedocenianych, a jednocześnie najpotężniejszych mechanizmów opisu użytkownika.
Pozwalają przechowywać informacje, które nie zmieniają się z eventu na event, ale opisują samego użytkownika – jego status, cechy lub kontekst biznesowy.
W tym artykule pokażę:
- czym dokładnie są User Properties,
- jak są zapisywane w BigQuery,
- jak je poprawnie wyciągnąć z tabel
events_*, - i dlaczego zrozumienie logiki jest ważniejsze niż sam SQL.
Czym są User Properties w GA4?
User Properties w GA4 to wymiary o zakresie użytkownika (user scope).
Oznacza to, że:
- wartość jest przypisana do użytkownika, a nie do pojedynczego zdarzenia,
- jest obliczana i zapisywana raz dla użytkownika,
- może być dołączana do wielu eventów tego samego użytkownika.
Przykłady User Properties:
- status subskrypcji (np.
free,paid), - typ użytkownika (np.
new,returning,vip), - niestandardowy client ID,
- poziom członkostwa,
- preferowany język lub segment biznesowy.
Technicznie rzecz biorąc:
User Property = wymiar GA4 o zakresie użytkownika.
Gdzie User Properties znajdują się w BigQuery?
W eksporcie GA4 do BigQuery dane o User Properties nie są płaskimi kolumnami.
Są zapisane jako zagnieżdżona struktura (nested + repeated).

Każdy event może zawierać tablicę:
user_properties
Każdy element tej tablicy składa się z:
key→ nazwa User Property,value→ wartość User Property (w jednym z kilku typów).
Jakie typy wartości może mieć User Property?
W BigQuery wartość User Property może trafić do jednego z poniższych pól:
user_properties.value.string_valueuser_properties.value.int_valueuser_properties.value.float_valueuser_properties.value.double_valueuser_properties.value.set_timestamp_micros

To, które pole będzie użyte, zależy od tego:
- jak wysyłasz dane z GTM,
- czy przekazujesz je jako tekst, liczbę czy timestamp.
Najczęściej (i rekomendowanie) wysyła się User Properties jako string.
Ważne: User Properties nie istnieją domyślnie
GA4 nie zbiera User Properties automatycznie.
Jeśli ich nie skonfigurujesz, w BigQuery po prostu ich nie będzie.
Aby móc je analizować, musisz:
- samodzielnie je wysłać (np. przez Google Tag Manager),
- zadbać o spójność nazwy i typu danych.
Jak wyciągnąć User Properties w GA4 BigQuery – logika krok po kroku
Krok 1: Skonfiguruj User Property w Google Tag Managerze
Przykład:
- wysyłasz niestandardowy
client_idjako User Property, - nadajesz mu nazwę np.
client_id_custom.
Krok 2: Zidentyfikuj event, który wysyła User Property
User Properties są wysyłane razem z eventami.
Musisz wiedzieć:
- przez jaki event są przesyłane,
- np.
get_user_data,page_viewlub inny custom event.
Krok 4: Sprawdź typ wartości
Jeżeli:
- wysyłasz wartość jako tekst → używasz
string_value, - wysyłasz liczbę →
int_value, - wysyłasz timestamp →
set_timestamp_micros.

To kluczowe, bo od tego zależy poprawność zapytania.
Przykładowe zapytanie SQL – ekstrakcja User Properties
Pamiętaj, aby podstawić własny identyfikator tabeli oraz własną nazwę User Property.
-- Ekstrakcja danych User Properties z GA4 BigQuery
SELECT
NULLIF(event_name, '') AS event_name,
NULLIF(
(SELECT key FROM UNNEST(user_properties)),
''
) AS user_property_name,
NULLIF(
(SELECT value.string_value FROM UNNEST(user_properties)),
''
) AS user_property_value
FROM
`<Your table ID>`
WHERE
_TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY))
AND
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
ORDER BY
event_name;
Co robi to zapytanie?
- rozwija tablicę
user_properties, - wyciąga nazwę właściwości (
key), - wyciąga jej wartość (
string_value), - pokazuje, przy jakim evencie dana właściwość została wysłana.

To idealny punkt wyjścia do:
- walidacji poprawności wdrożenia,
- dalszych agregacji,
- łączenia User Properties z innymi wymiarami.