Kiedy budżet reklamowy jest rozłożony między Google Ads, Meta Ads i TikTok Ads, każda platforma raportuje wyniki w swoim własnym panelu – z innymi definicjami konwersji, innymi oknami atrybucji i innymi formatami dat. Porównanie ROAS między platformami na podstawie exportów CSV do arkusza jest podatne na błędy i wymaga manualnej pracy przy każdym raporcie.

Rozwiązaniem jest centralizacja danych w BigQuery: wszystkie platformy zasilają jedną tabelę, a Data Studio odpytuje ją przez pojedyncze złączenie SQL. Raport jest zawsze aktualny, bez ręcznego importu.

Problem silosów danych reklamowych

Każda platforma reklamowa ma własną definicję konwersji. Google Ads liczy konwersję przez 30 dni od kliknięcia, Meta przez 7 dni kliknięcie + 1 dzień wyświetlenie. Ten sam zakup może być przypisany przez obie platformy jednocześnie – co powoduje, że suma konwersji z raportów platform przekracza rzeczywistą liczbę zakupów w sklepie.

Porównanie kosztów i przychodów przez BigQuery, gdzie źródłem prawdy są dane z systemu transakcyjnego (nie z platform reklamowych), eliminuje problem podwójnego liczenia.

Google Ads i BigQuery działają w ramach tego samego ekosystemu GCP, dlatego integracja jest natywna i bezpłatna. BigQuery Data Transfer Service pobiera dane z Google Ads automatycznie według harmonogramu.

Konfiguracja krok po kroku:

  1. W konsoli BigQuery przejdź do Data Transfers → Create Transfer.
  2. Wybierz źródło: Google Ads.
  3. Podaj Customer ID konta Google Ads (format: XXX-XXX-XXXX).
  4. Wybierz docelowy dataset w BigQuery i harmonogram (domyślnie: codziennie).
  5. Autoryzuj dostęp – BigQuery wymaga konta Google z uprawnieniami do konta Ads.

Po pierwszym transferze BigQuery tworzy tabele takie jak ads_Campaign_XXXXXXXXXX, ads_AdGroup_XXXXXXXXXX i p_clicks_XXXXXXXXXX z pełną historią kampanii.

Facebook Ads → BigQuery: dwie metody

Meta nie udostępnia natywnego konektora do BigQuery, dlatego istnieją dwa podejścia w zależności od budżetu i wymagań technicznych:

Metoda Koszt Czas wdrożenia Dla kogo
No-code (Supermetrics, Fivetran, Airbyte) $99–$500/mies. 1–2 dni Agencje, firmy bez zasobów dev
Cloud Function (Python + Marketing API) ~$0–5/mies. (GCP) 3–5 dni Firmy z zasobami technicznymi

Metoda Cloud Function polega na skrypcie Python uruchamianym przez Cloud Scheduler (odpowiednik cron job w GCP). Skrypt wywołuje Meta Marketing API, pobiera raport dzienny w formacie JSON i zapisuje go do tabeli BigQuery przez bibliotekę google-cloud-bigquery.

import requests
from google.cloud import bigquery
import os

def fetch_meta_ads(request):
    token = os.environ['META_TOKEN']
    account_id = os.environ['META_ACCOUNT_ID']
    url = f"https://graph.facebook.com/v19.0/act_{account_id}/insights"
    params = {
        'access_token': token,
        'fields': 'campaign_name,spend,impressions,clicks,date_start',
        'date_preset': 'yesterday',
        'level': 'campaign'
    }
    data = requests.get(url, params=params).json().get('data', [])
    client = bigquery.Client()
    table_id = 'projekt.ads.meta_ads_daily'
    client.insert_rows_json(table_id, data)
    return f"Inserted {len(data)} rows"

Widok UNION ALL: jedna tabela dla obu platform

Po zasileniu obu tabel (Google Ads i Meta Ads) w BigQuery, widok UNION ALL scala je w jedną spójną strukturę z jednolitymi nazwami kolumn:

CREATE OR REPLACE VIEW `projekt.ads.wszystkie_platformy` AS
SELECT
  date        AS data,
  'Google Ads' AS platforma,
  campaign_name,
  cost_micros / 1000000 AS wydatki,
  impressions,
  clicks
FROM `projekt.ads.google_ads_daily`
UNION ALL
SELECT
  date_start,
  'Meta Ads',
  campaign_name,
  CAST(spend AS FLOAT64),
  CAST(impressions AS INT64),
  CAST(clicks AS INT64)
FROM `projekt.ads.meta_ads_daily`

Ten widok jest bezpośrednim źródłem danych dla dashboardu w Data Studio. Wymiar platforma pozwala filtrować lub segmentować wykresy per platforma bez zmiany zapytania.

Dashboard ROAS w Data Studio

Po podłączeniu widoku do Data Studio kluczowe metryki dashboardu reklamowego to:

  • ROAS per platforma: SUM(przychod) / SUM(wydatki) – zawsze agregaty, nie średnia z dni
  • CTR: SUM(clicks) / SUM(impressions)
  • CPC: SUM(wydatki) / SUM(clicks)
  • Udział w budżecie per platforma: SUM(wydatki) / SUM(wydatki) OVER () – pole obliczeniowe z PERCENT_OF_TOTAL
Centralizacja danych reklamowych w BigQuery pozwala porównywać platformy na tych samych zasadach atrybucji – zamiast zestawiać liczby z różnych paneli z różnymi definicjami konwersji.