Last click non-direct atribuce dat z GA4 v BigQuery

Od 9. 10. 2024 Google Analytics v rámci exportu do BigQuery exportují nově sloupce s atribučním modelem stejným, jako zobrazuje GA4 rozhraní (last-non-direct-click). Rozdíly v datech jsou v rámci tolerance, s hodnotami je možné počítat - celé využití dat z Big Query se tak zjednodušuje, session scope atribuční model už není potřeba napočítávat složitými SQL dotazy a propojováním s Google Ads.

Co se stalo?

V červenci letošního roku se v BigQuery objevilo pole session_traffic_source_last_click a v něm dvě další množiny dat - manual_campaign a google _ads_campaign. Obsahovaly nějakým způsobem napočtené last click atribuce - nicméně nezávisle na sobě, takže v manual campaign byla jedna hodnota a v ads_campaign jiná a nebylo jednoduše zřejmé, kterou lze pro danou session využít. Stále bylo zapotřebí dopátrávat, které hodnoty přiřadit.

9. 10. 2024 přibylo několik dalších polí v rámci session_traffic_source_last_click dodávajících další identifikátory pro různé typy kampaní, ale především přibylo pole cross_channel_campaign, které podle názvu slibuje, že dokáže last_click model vyhodnotit napříč jednotlivými kanály - tedy jak na základě UTM, tak na základě gclidu a to vše v rámci last click non-direct modelu - tedy toho samého, který používají GA4.

🟡 Žlutá (vnější rámeček) - Nově přidané položky (od července dál)
🔵 Modrá (prostřední rámeček) - Část struktury přidaná 9.10.
🟢 Zelená (vnitřní rámeček) - Atribuce odpovídající GA4 rozhraní

Funguje to?

Vzhledem k tomu, že ke dni spuštění nebyla příslušná pole zanesena v oficiální dokumentaci, zbývalo jen hádat - a ověřit si hypotézu na datech.

Vybrali jsme property, na kterém je dosud alespoň část kampaní v Google Ads řešena pomocí autotaggingu bez doplnění UTM parametrů (což jinak nedoporučujeme), reporting identity nastavili na “device based” (aby data byla co nejpodobnější v GA4 a BQ), vybrali stejný časový rozsah (10.10.-12.10., abychom eliminovali riziko neúplných dat v BQ na začátku či GA4 na konci intervalu) a jali se porovnávat data. Použitou query najdeš

V GA4 jsme vybrali session based traffic sources, v BQ jsme napočetli sessions z user_pseudo_id a ga_session_number, vybrali jsme jen consentovaná data (respektive data s user_pseudo_id). Tím jsme nastavili oběma reportům co nejpodobnější podmínky.

Na výsledky se můžete podívat sami:

Session source Session medium Session campaign GA4 BQ DIFF %DIFF
(direct) (none) (direct) 903 899 4 0.44%
google cpc (organic) 669 668 1 0.15%
google organic (organic) 563 565 -2 -0.36%
google cpc [REDACTED]1 298 298 0 0.00%
google cpc [REDACTED]2 117 117 0 0.00%
google cpc [REDACTED]3 94 94 0 0.00%
seznam organic (organic) 76 76 0 0.00%
bing organic (organic) 64 64 0 0.00%
google cpc (not set) 42 42 0 0.00%
seznam cpc [REDACTED]4 38 38 0 0.00%
google cpc [REDACTED]5 29 29 0 0.00%
facebook cpc [REDACTED]6 27 27 0 0.00%
facebook cpc [REDACTED]7 24 24 0 0.00%
google cpc [REDACTED]8 24 24 0 0.00%
statics.teams.cdn.office.net referral (referral) 24 24 0 0.00%
(not set) (not set) (not set) 23 23 0 0.00%
facebook cpc [REDACTED]9 21 21 0 0.00%
newsletter email [REDACTED]10 21 21 0 0.00%
newsletter email [REDACTED]11 21 21 0 0.00%
seznam RTB [REDACTED]12 20 20 0 0.00%
(other) 519 491 28 5.39%
(total) 3617 3586 31 0.86%

V tabulce uvádíme jen prvních 20 řádků, nicméně shoda pokračuje s podobnou přesností i dále. Vynechané řádky jsem spojil pod řádek (other). Názvy kampaní jsem ve výsledné tabulce cenzuroval, ale zahrnovaly jak běžné kampaně, tak Google Ads včetně PMAX kampaní. Je vidět, že v BQ máme o 31 session méně celkově, ale atribuce session se mezi GA4 a BQ prakticky shoduje. Podobně dopadlo i srovnání transakcí.

Pro úplnost podotýkám, že se jednalo o srovnání dat v GA4 versus BQ a zdroj/médium google/cpc s kampaní (organic) je téma na jiné vyprávění. 🙂

Potřebuješ pomoct s Google Analytics v BigQuery? Ozvi se nám: google-team@etnetera.cz.

Závěr

Data tedy prokázala, že nová pole velmi přesně kopírují session based atribuční model používaný Google Analytics 4 a je tedy možné je následně využívat pro reporting, který nepřekvapí nesrovnalostmi s GA4. Je možné, že se nějaké problémy ještě v budoucnu objeví nebo že Google do této části schématu bude ještě zasahovat, ale každopádně jde o významný krok ke zvýšení důvěryhodnosti a využitelnosti dat z Big Query.

Použité query:

WITH test AS

(

SELECT

  PARSE_DATE("%Y%m%d", REGEXP_EXTRACT(_TABLE_SUFFIX, r'[0-9]+'))                                                   

AS event_date,

  DATETIME(TIMESTAMP_MICROS(event_timestamp), "Europe/Prague")                                                      AS event_datetime,

  user_pseudo_id || "_" || (SELECT value.int_value    FROM UNNEST(event_params) WHERE key = 'ga_session_number')    AS session_id,

  session_traffic_source_last_click.cross_channel_campaign.source                                                   AS cross_channel_source,

  session_traffic_source_last_click.cross_channel_campaign.medium                                                   AS cross_channel_medium,

  session_traffic_source_last_click.cross_channel_campaign.campaign_name                                            as cross_channel_campaign,

FROM

  `[REDACTED].events_*`

WHERE 1=1

  AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'[0-9]+') BETWEEN FORMAT_DATE("%Y%m%d", "2024-10-10") AND FORMAT_DATE("%Y%m%d", "2024-10-12")

  AND _TABLE_SUFFIX NOT LIKE "%intraday%"

  AND user_pseudo_id IS NOT NULL

)

SELECT 

  cross_channel_source,

  cross_channel_medium,

  cross_channel_campaign,

  COUNT(DISTINCT session_id) AS sessions

FROM test

WHERE 1=1

GROUP BY ALL

ORDER BY sessions DESC

Jsi odborník na digitální analytiku v Google nástrojích a chtěl bys pracovat ve svobodné firmě? Mrkni na volné pozice a přidej se k nám!

Přečti si taky