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.