Jak policzyć udział ruchu z narzędzi AI w GA4 BigQuery
Temat „AI traffic” wraca jak bumerang. Prędzej czy później ktoś z managementu zapyta: „Ile mamy wejść z ChatGPT / Perplexity / Gemini?” — nawet jeśli w praktyce nie ma żadnego magicznego „GEO”, które samo z siebie zacznie dowozić sprzedaż.
Da się to oszacować, ale trzeba rozumieć jedno: GA4 przypisuje źródła tylko wtedy, gdy ma dane o referrerze / źródle sesji. A w ruchu z narzędzi AI to bywa… kapryśne.
Dlaczego to działa (i dlaczego czasem nie zadziała)
W tym podejściu wykorzystujemy page_referrer (czyli referrer strony), bo to najprostsza metoda na „wyłapanie” wejść, w których domena odsyłająca wygląda jak narzędzie AI.
Jednocześnie miej z tyłu głowy ograniczenia:
- Consent Mode może powodować ubytki/„dziury” w danych (część zdarzeń jest modelowana albo niepełna).
- Narzędzia AI nie zawsze przekazują referrer (np. otwieranie linku w aplikacji, webview, tryb prywatny).
- Czasem lepiej oprzeć się o
traffic_source/session_source(zależnie od tego, jaki chcesz scope: user vs session vs event), ale to już inna szkoła liczenia.
Wniosek biznesowy (który uspokaja)
W praktyce udział ruchu z AI nie powinien być wysoki. W wielu analizach dla dużych marek jest to zwykle <1% całości ruchu. Jeśli widzisz kilka procent lub kilkanaście — to niekoniecznie „boom AI”, tylko często:
- błędna definicja,
- boty,
- referrer spoofing,
- ruch z aplikacji / komunikatorów, które wyglądają jak „referral”, ale nim nie są.
Podmień tylko project_name.dataset_name i zakres dat (suffix):
WITH
ai_traffic AS (
SELECT
COUNT(DISTINCT user_pseudo_id) AS ai_users
FROM
`project_name.dataset_name.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20250101'
AND '20251231'
AND EXISTS (
SELECT
1
FROM
UNNEST(event_params) AS ep
WHERE
ep.key = 'page_referrer'
AND REGEXP_CONTAINS(
NET.HOST(ep.value.string_value),
r'(?i)(openai|copilot|chatgpt|gemini|gpt|neeva|writesonic|nimble|outrider|perplexity|bard|edgservices|phastastic|copy\.ai)'
)
)
),
all_traffic AS (
SELECT
COUNT(DISTINCT user_pseudo_id) AS total_users
FROM
`project_name.dataset_name.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20250101'
AND '20251231'
)
SELECT
ai_traffic.ai_users,
all_traffic.total_users,
ROUND((ai_traffic.ai_users / all_traffic.total_users) * 100, 2) AS ai_traffic_percentage
FROM
ai_traffic,
all_traffic;
Jak to interpretować (żeby nie wpaść w pułapkę)
To zapytanie odpowiada na pytanie:
„Jaki % unikalnych użytkowników miał w page_referrer domenę pasującą do listy AI?”
Żeby wynik miał sens, trzymaj się kilku zasad:
- Porównuj ten sam okres miesiąc do miesiąca (trend > pojedynczy punkt).
- Pilnuj, żeby analizować user share vs session share (to inne liczby, inne wnioski).
- Ustal, czy chcesz mierzyć:
- „AI jako źródło wejścia” (session-level),
- czy „AI pojawiło się gdziekolwiek w historii usera” (user-level).