Wszystkie artykuły
ecommerce2026-10-12

Jak analizować efektywność kampanii Google Shopping

Spis treści

Twoje kampanie Google Shopping generują ruch, ale nie wiesz, które produkty faktycznie zarabiają, a które tylko przepalają budżet? ROAS na poziomie kampanii wygląda akceptowalnie, ale marża na koniec miesiąca nie domyka się. To klasyczny problem e-commerce, który da się rozwiązać, jeśli zejdziesz o poziom niżej i zaczniesz analizować dane produktowo.

Dlaczego ROAS na poziomie kampanii kłamie

Większość zespołów e-commerce patrzy na ROAS w Google Ads i zatrzymuje się na tym widoku. Kampania zwraca 4x? Świetnie. Problem w tym, że za tym agregatem ukrywa się rzeczywistość: 20% produktów generuje 80% konwersji, a reszta asortymentu pochłania budżet bez zwrotu.

Żeby zobaczyć prawdziwy obraz, musisz połączyć trzy źródła danych:

  • Google Ads — koszt, kliknięcia, konwersje na poziomie produktu (raport Shopping → Produkty)
  • GA4 — sesje, współczynnik konwersji, przychód z e-commerce
  • System ERP/backend — marża produktowa, stany magazynowe, koszt zakupu

Samo Google Ads powie ci, ile wydałeś. Dopiero po połączeniu z marżą wiesz, czy kampania faktycznie zarabia.

Struktura analizy w Snowflake — od kosztu do marży

Jeśli masz dane z Google Ads zaciągnięte do Snowflake (np. przez Keboola Google Ads Extractor), możesz zbudować analizę produktową bez wychodzenia z SQL. Poniżej uproszczony przykład:

WITH ads_data AS (
    SELECT
        product_id,
        product_title,
        SUM(cost) AS total_cost,
        SUM(clicks) AS total_clicks,
        SUM(conversions) AS total_conversions,
        SUM(conversion_value) AS total_revenue
    FROM google_ads.shopping_product_stats
    WHERE date BETWEEN '2024-01-01' AND '2024-03-31'
    GROUP BY 1, 2
),
margin_data AS (
    SELECT
        product_id,
        AVG(margin_pct) AS avg_margin,
        AVG(unit_price) AS avg_price
    FROM erp.products
    GROUP BY 1
)
SELECT
    a.product_id,
    a.product_title,
    a.total_cost,
    a.total_revenue,
    ROUND(a.total_revenue / NULLIF(a.total_cost, 0), 2) AS roas,
    ROUND((a.total_revenue * m.avg_margin) / NULLIF(a.total_cost, 0), 2) AS margin_roas,
    ROUND(a.total_cost / NULLIF(a.total_conversions, 0), 2) AS cpa,
    a.total_conversions
FROM ads_data a
LEFT JOIN margin_data m ON a.product_id = m.product_id
ORDER BY a.total_cost DESC;

Kluczowa kolumna to margin_roas — nie przychód podzielony przez koszt reklamy, ale marża podzielona przez koszt. Produkt z ROAS = 6x i marżą 15% jest mniej opłacalny niż produkt z ROAS = 3x i marżą 50%.

Segmentacja produktów według rentowności

Po zbudowaniu widoku z danymi kosztowo-marżowymi, następny krok to segmentacja. Używam prostej matrycy 2x2:

| | Wysoki ROAS | Niski ROAS |

|---|---|---|

| Wysoka marża | ⭐ Skaluj budżet | 🔍 Optymalizuj stawki |

| Niska marża | ⚠️ Monitoruj | ❌ Ogranicz/wyłącz |

W SQL możesz to zakodować jako:

SELECT
    product_id,
    product_title,
    margin_roas,
    avg_margin,
    CASE
        WHEN margin_roas >= 3 AND avg_margin >= 0.30 THEN 'SCALE'
        WHEN margin_roas >= 3 AND avg_margin < 0.30  THEN 'MONITOR'
        WHEN margin_roas < 3  AND avg_margin >= 0.30 THEN 'OPTIMIZE'
        ELSE 'PAUSE'
    END AS recommended_action
FROM product_performance_view
ORDER BY total_cost DESC;

Progi margin_roas >= 3 i avg_margin >= 0.30 musisz skalibrować pod swój biznes — w elektronice marże 10-15% to norma, w kosmetykach często 50%+.

GA4 jako uzupełnienie danych Google Ads

Google Ads pokazuje konwersje, ale GA4 daje kontekst behawioralny, którego nie ma w raportach reklamowych. Szczególnie przydatne metryki:

  • Współczynnik dodania do koszyka z ruchu Shopping — czy produkt, który klika, faktycznie trafia do koszyka?
  • Czas do konwersji — produkty z długim cyklem zakupowym wymagają innej strategii stawek niż impulse buy
  • Ścieżki konwersji — czy Shopping jest pierwszym touchpointem, czy domykającym?

W GA4 (BigQuery Export) możesz wyciągnąć ścieżki sesji z parametrem session_campaign i porównać zachowanie użytkowników z Shopping vs. innych kanałów. Często okazuje się, że Shopping inicjuje sprzedaż, ale konwersja "zapisuje się" na remarketing — i wtedy błędnie ograniczasz budżet Shopping.

Automatyzacja raportowania w Keboola

Ręczne łączenie danych z Google Ads, GA4 i ERP co miesiąc to strata czasu. Powtarzalny pipeline w Keboola wygląda tak:

  1. Extractory: Google Ads Extractor + BigQuery (GA4 export) + ekstraktor do bazy ERP
  2. Transformacje: SQL transformacje w Snowflake — czyszczenie danych, joinowanie po product_id, obliczanie metryk
  3. Orchestration: dzienny trigger uruchamiający pipeline o 6:00 rano
  4. Output: tabela wynikowa zasilająca dashboard Tableau z automatycznym alertem, gdy margin_roas dowolnego produktu z budżetem > 500 PLN/mies. spada poniżej 1.5

Taki setup zajmuje 2-3 dni pracy jednorazowo, ale potem raport kampanii Shopping generuje się sam — bez angażowania analityka przy każdym cyklu.

TL;DR

  • ROAS bez marży to połowa prawdy — zawsze łącz dane reklamowe z marżą produktową, żeby zobaczyć realną opłacalność
  • Segmentuj produkty w matrycy ROAS × marża i przypisuj akcje: skaluj, optymalizuj, wstrzymaj
  • GA4 + Google Ads razem pokazują pełną ścieżkę użytkownika — nie oceniaj Shopping tylko przez atrybucję last-click
  • Snowflake SQL pozwala zbudować analizę produktową łącząc źródła danych bez narzędzi no-code
  • Automatyzacja w Keboola eliminuje ręczną pracę i daje dzienny widok rentowności kampanii Shopping

Chcesz wiedzieć, gdzie tracisz klientów?

Przeanalizuję Twój lejek i wskażę, co poprawić najpierw. Pierwsza rozmowa jest bezpłatna.

Umów konsultację

Więcej artykułów o data analytics:

Wróć do bloga