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).

Podobne wpisy