Przejdź do treści

BigQuery. Join GA4 i Google Ads. Dopasowanie sesji z gclid do kosztu kampanii.

Na czym to polega w sklepie

Ile naprawdę zwraca kampania „Letnia kolekcja"? Po włączeniu eksportu GA4 do BigQuery i imporcie kosztów z Google Ads łączysz przychód ze sklepu ze spendem. Klucz joinu to zwykle data + nazwa kampanii; dokładniej - gclid, gdy masz go w eksporcie sesji.

Przykład ze sklepu internetowego

Hurtownia B2B ma tabelę ads_cost_daily i widok purchase z GA4. Head of growth chce ROAS per kampania bez cotygodniowego łączenia CSV w Excelu:

SELECT
  p.event_date,
  p.session_campaign,
  SUM(a.cost_micros) / 1e6 AS cost_pln,
  SUM(p.revenue) AS revenue_pln,
  SAFE_DIVIDE(SUM(p.revenue), SUM(a.cost_micros) / 1e6) AS roas
FROM `project.mart.daily_purchases` p
LEFT JOIN `project.ads.campaign_stats` a
  ON p.event_date = a.segments_date
 AND p.session_campaign = a.campaign_name
WHERE p.event_date >= '2026-06-01'
GROUP BY 1, 2
HAVING cost_pln > 0;

Co zrobić po stronie biznesu

  • Przenieś Ads Data Transfer do tego samego projektu co GA4 - jeden pipeline, mniej ręcznej pracy.
  • Utrzymuj tabelę mapowania UTM → campaign_id - bez niej join nie naprawi rozjazdu nazw między GA4 a panelem Ads.
  • Przy wielu kontach Ads dołącz customer_id do klucza joinu w strukturze MCC.

W skrócie

Hurtownia marketingowa zaczyna się od spójnego klucza joinu. BigQuery nie naprawi rozjazdu nazw kampanii - najpierw ujednolić UTM i nazewnictwo w Ads, potem łączyć tabele.