# Google Analytics 4

> A GA4 mérési azonosító, az API-titok (Measurement Protocol), a Data API, az oldalbetöltési idő, az Enhanced Link Attribution, a visszatérítések és a fiókregisztráció-esemény.

A GA4 beállításai a **Tracking Pixels** fül **Google (Ads & GA4)** kártyájának **Google Analytics 4** részében vannak. A haladó mezők a **Show advanced settings** alatt nyílnak ki (a képet lásd a [Google Ads](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/pixelek-google-ads/) fejezetben).

## Meglévő GA4-tulajdon összekötése

1. A Google Analytics adminisztrációjában válaszd ki a GA4-tulajdont, és nyisd meg a webes adatfolyamot (Data Streams).
2. Másold ki a `G-` kezdetű **Measurement ID**-t.
3. Illeszd be a **Tracking Pixels → Google (Ads & GA4) → Measurement ID** mezőbe, és mentsd.

Egyes adatfolyamokat csak a hozzájuk tartozó Google tag szolgál ki. Ha a Google a `G-` azonosítódat önmagában nem szolgálja ki, a bővítmény admin üzenetet mutat. Ilyenkor ugyanabba a mezőbe az adatfolyam `GT-` kezdetű Google tag azonosítóját írd. A böngészős követés így működik, de a szerveroldali vásárlásküldés (Measurement Protocol) `GT-` azonosítóval nem tud futni, ezért a vásárlásokat a böngésző küldi.

Ha egy másik címke (például egy Google Tag Manager tároló) már ugyanarra a GA4-azonosítóra küld, távolítsd el, vagy hagyd üresen a Pixel Manager **Measurement ID** mezőjét. Két küldő egy azonosítóra megduplázza az oldalmegtekintéseket.

## GA4 API-titok (Measurement Protocol)

Az API-titok megadása bekapcsolja a GA4 Measurement Protocolját. Ha van API-titok, a `purchase` eseményt csak a szerver küldi a Measurement Protocolon át, a böngésző Google tagje már nem, így a vásárlás nem számolódik kétszer. Az összes többi GA4-esemény továbbra is a böngészőből jön.

Ezért a Google Tag Assistant vagy a Tag Manager diagnosztikája jelezheti, hogy az oldalról nem érkezik `purchase` esemény. Ez várható, mert az üzenet csak a böngészős címkét vizsgálja, és nem jelent hiányzó vásárlást. A vásárlásokat a GA4 jelentéseiben ellenőrizd, a lent leírt feldolgozási késleltetés után.

A később kifizetett rendeléseket (átutalás, számla, kézi jóváhagyás) a bővítmény akkor küldi, amikor fizetett állapotba kerülnek. A rendelés dátumától számított 71 órán belül a vásárlást a rendelés dátumára visszadátumozza. A későbbi kifizetések az érkezésük idejére kerülnek, a látogató munkamenetéhez már nem köthetők, ezért `(not set)` értékkel jelennek meg.

A Measurement Protocol sokkal pontosabb vásárlásszámot és összeget ad, de a GA4 vele sem éri el a régi Universal Analytics szintjét. Kompromisszumok:

- a rendelések valós idejű eseményei nem érhetők el,
- a rendelések csak 24 óra után jelennek meg,
- hiányzik a rendelések földrajzi adata.

A vásárlások egy része a GA4-ben **Unassigned** csatornán jelenhet meg. Ezek azok a rendelések, amelyeknél a látogatónak nem volt GA4 munkamenete: a bevétel helyes, de csatorna nélkül érkezik. Ne tekintsd automatikusan követési veszteségnek: sütibanner mellett ennek nagy része a hozzájárulás-beállítás helyes működése, egy jelentős része pedig olyan médium, amelyhez a GA4 csatornacsoportodban nincs szabály.

### API-titok létrehozása

1. Nyisd meg a GA4-tulajdon adminisztrációját, és a webes adatfolyamot.
2. Nyisd meg a **Measurement Protocol API secrets** menüt.
3. Kezdj új API-titkot létrehozni.
4. Nevezd el a bővítmény nevével, hogy később tudd, melyik alkalmazás melyik kulcsot használja.
5. Másold ki az új titkot.
6. A Pixel Managerben a **Tracking Pixels → Google (Ads & GA4)** kártyán illeszd be az **API Secret (for Measurement Protocol)** mezőbe, és kattints a **Save** gombra.

## GA4 Data API

A Pixel Manager kapcsolódni tud a GA4 Data API-hoz, és jelentéseket olvas belőle. Az első elérhető jelentés a rendelések forrásattribúciója: azt mutatja, honnan érkezett a rendelés, a bekötött GA4-fiók attribúciós módszerével (alapértelmezés szerint adatvezérelt). A GA4 az attribúció feldolgozásához akár 24 órát is igénybe vehet, mielőtt egy adott rendelésnél elérhető lesz.

A Data API két adatot kér: a tulajdon azonosítóját és a hozzáférési kulcsot.

### GA4 Property ID

1. Nyisd meg a GA4 adminisztrációját, majd a tulajdon beállításait (**Property settings**).
2. Másold ki a tulajdon azonosítóját a jobb felső sarokból.
3. A Pixel Managerben a **Tracking Pixels → Google (Ads & GA4)** kártyán illeszd be a **Data API Property ID** mezőbe.

### GA4 Data API Credentials

A hozzáférés két részből áll. Az elsőben hozzáférési kulcsot készítesz, letöltöd, és feltöltöd a Pixel Managerbe. Ez hosszabb, de egyszeri beállítás. A másodikban a kulcsban lévő `client_email` címet felveszed a GA4-tulajdon felhasználói közé, ez engedélyezi az adatlekérést.

Elvileg ugyanazt a kulcsot több weboldal is használhatja, hosszú távra azonban weboldalanként külön kulcsot érdemes készíteni. Ha később valamelyiket törölni kell (például tulajdonosváltás miatt), csak az adott weboldal kulcsát kell újra létrehozni.

A kulcs a személyes Google-fiókodhoz kötődik, ezért a weboldal tulajdonosa készítse. Ha ügynökségként vagy szabadúszóként dolgozol, kérd meg a tulajdonost, hogy hozza létre a kulcsot, és töltse fel a Pixel Managerbe.

1. Nyisd meg a Google Cloud Console-t, és a **Select a project** legördülővel hozz létre új projektet (**NEW PROJECT**).
2. Adj a projektnek nevet (például `GA4 data API for website`), szükség esetén állítsd a szervezetet, és kattints a **Create** gombra. Válaszd ki az új projektet a legördülőből.
3. Nyisd meg az **API & Services** részt, kattints az **Enable APIs and services** gombra, keresd meg a **Google Analytics Data API** kártyát, nyisd meg, és kattints az **Enable** gombra.
4. Nyisd meg a **Credentials** menüt, majd a **Manage service accounts** gombot, és kattints a **Create Service Account** gombra.
5. Adj a szolgáltatásfióknak nevet (például `GA4 data API for website`), kattints a **Create**, majd a **Done** gombra.
6. Kattints az új szolgáltatásfiók nevére, nyisd meg a **Keys** menüt, kattints az **Add Key**, majd a **Create new key** gombra.
7. Válaszd a **JSON** kulcstípust, és kattints a **Create** gombra. A JSON-kulcs letöltődik a gépedre.
8. A Pixel Managerben a **Tracking Pixels → Google (Ads & GA4)** kártyán kattints az **Import credentials (JSON)** gombra, és válaszd ki a letöltött fájlt. A kulcs a szerveren marad, és többé nem jelenik meg, csak a szolgáltatásfiók e-mail-címe.
9. Másold ki a `client_email` címet a megjelenő szolgáltatásfiók-adatokból.
10. A GA4 adminisztrációjában nyisd meg a **Property Access Management** oldalt, kattints a nagy plusz jelre új felhasználó hozzáadásához.
11. Illeszd be a `client_email` címet az e-mail-cím mezőbe, a szerepkör **Viewer** (csak olvasó) legyen, és kattints az **Add** gombra.

## Oldalbetöltési idő követése (Page Load Time Tracking)

Pro funkció. A GA4-ben nincs beépített oldalbetöltésiidő-mérés, mint a régi Universal Analyticsben. Ez a funkció kerülő megoldás: méri az oldal betöltési idejét, és egyéni metrikaként elküldi a GA4-nek a `page_load_time` esemény paramétereiben.

A küldött paraméterek:

| Paraméter | Jelentés |
|---|---|
| `connection_time` | a szerverkapcsolat felépítésének ideje, ms |
| `dns_time` | a domainnév feloldásának ideje, ms |
| `document_processing` | a dokumentum feldolgozásának ideje, ms |
| `dom_complete` | a DOM betöltésének ideje, ms |
| `dom_content_loaded` | a DOM-tartalom betöltésének ideje, ms |
| `dom_interactive` | a DOM interaktívvá válásának ideje, ms |
| `load_complete` | a teljes oldal betöltésének ideje, ms |
| `page_load_time` | az oldal betöltési ideje, ms |
| `page_load_time_seconds` | az oldal betöltési ideje, másodpercben |
| `redirect_count` | az átirányítások száma |
| `redirect_time` | az átirányítások ideje, ms |
| `response_time` | a szerver válaszideje, ms |
| `total_page_load` | az oldal teljes betöltési ideje, ms |
| `ttfb` | az első bájtig eltelt idő, ms |

Beállítás a `page_load_time_seconds` paraméterrel példaként:

1. A Pixel Managerben kapcsold be a **Page Load Time Tracking** kapcsolót, és mentsd.
2. A GA4-ben nyisd meg az **Admin → Custom Definitions → Custom Metrics** részt, és kattints a **Create custom metrics** gombra.
3. Töltsd ki a mezőket:
   - **Metric Name**: `Page Load Time`
   - **Event parameter**: `page_load_time_seconds` (vagy bármelyik másik mért paraméter, például `load_complete`, `dom_interactive`). A legördülő listában nem szerepel, írd vagy másold be.
   - **Unit of measurement**: `Seconds`. Más paraméternél igazítsd a mértékegységet: például a `page_load_time` ezredmásodpercben van.

## Enhanced Link Attribution

Segít a Google Analyticsnek megkülönböztetni az oldalon belüli, ugyanarra az URL-re mutató linkeket. Nélküle a GA4 oldalon belüli elemzése (és a régi Page Analytics réteg) nem tud különbséget tenni például egy menüben és a láblécben lévő, egyaránt a `/cart` oldalra mutató link között, egynek számolja őket. Bekapcsolva minden link külön kap attribúciót, így pontosabb az oldalon belüli és a linkszintű jelentés.

Elég bekapcsolni a Pixel Managerben (**Enhanced Link Attribution** kapcsoló): a bővítmény beállítja a megfelelő jelzőt a Google taggen. Szokásos beállításoknál nincs hátránya, nyugodtan bekapcsolva hagyhatod. Csak a GA4 linkszintű, oldalon belüli jelentését érinti, azt nem, hogy milyen események mennek, és a hirdetési platformoknak küldött konverziós adatot sem.

## Támogatott események

A GA4 által támogatott események listája a [Támogatott események](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/funkciok-esemenyek/) fejezetben van.

## Visszatérítési események (refund)

A szerveroldali GA4 Measurement Protocol követés Pro funkció. Beállított API-titokkal a Pixel Manager a visszatérítéseket `refund` eseményként jelenti a Google Analyticsnek, ez a Google hivatalos módja a bevétel visszavonására. A visszatérített rendelésből soha nem lesz második `purchase` esemény.

| Mi történt a WooCommerce-ben | GA4-esemény | Jelentett érték |
|---|---|---|
| Részleges visszatérítés, a rendelés egy része megmarad | `refund` a visszatérített tételekkel | a visszatérítés összege |
| A rendelést lezáró visszatérítés | `refund` tételek nélkül | a rendelés végösszegének az a része, amelyet korábbi `refund` esemény még nem jelentett |

A Google Analytics összeadja egy rendelés összes `refund` eseményének értékét. Ha mindig csak a még ki nem fizetett összeget jelenti a bővítmény, a visszatérítések összege a rendelés végösszegére jön ki, akárhány lépésben történt a visszatérítés. Azokat a visszatérítéseket, amelyek a Measurement Protocol beállítása előtt készültek, a Google Analytics sosem kapta meg, ezért ezek az utolsó `refund` esemény összegébe tartoznak.

### A visszatérítés mindig a szerverről megy, sosem a böngészőből

A visszatérítés az egyetlen e-kereskedelmi esemény, amelyet a bővítmény soha nem követ a böngészőben. A visszatérítést a WooCommerce adminban hozod létre, olyankor nincs megnyitott bolti oldal, amely eseményt tudna küldeni. A `refund` esemény PHP-ban készül, és a szerverről közvetlenül a Google Analyticsbe megy a Measurement Protocolon át. Ennek két következménye van, amelyek hibának látszhatnak, pedig nem azok:

- a konzolnaplózó nem ír ki semmit a visszatérítéskor, az üres konzol a várt eredmény,
- a visszatérítés a böngésző hálózati lapján sem látszik, és a Google Tag Assistant sem látja.

### Visszatérítés elküldésének ellenőrzése

A konzol helyett a bővítmény naplóját használd:

1. A Pixel Managerben nyisd meg a **Support → Logger** részt, kapcsold be az **Enable logger** kapcsolót, a naplószint legyen **Debug**, és jelöld be a **Log HTTP requests** lehetőséget. A HTTP-kérések naplózása 3 óra múlva magától kikapcsol.
2. Készíts visszatérítést egy tesztrendeléshez.
3. Töltsd le a naplót ugyanazon a képernyőn, vagy nyisd meg a szerveren a `/wp-content/uploads/wc-logs/pmw-*.log` fájlt, és keresd a Google Analyticsnek küldött kérést. A `json payload:` sorában ott a `refund` esemény `value` és `currency` mezőjével.
4. Ha végeztél, kapcsold ki a naplózót.

A Google Analytics az érvényes Measurement Protocol kérésre `HTTP 204` kóddal és üres törzzsel válaszol. A `204` azt igazolja, hogy a kérés szabályos volt, azt nem, hogy a Google Analytics összepárosította az eredeti vásárlással.

A Google Analytics felületén a visszatérítés a **Monetization → Ecommerce purchases** jelentésben és a tulajdon bevételi összegeiben jelenik meg, a Google által minden beérkező adatra alkalmazott késleltetéssel. A kis tesztvisszatérítések könnyen elkerülik a figyelmet, ezért az összegeket hasonlítsd össze, ne egyetlen sort keress.

### Miért „(not set)” alatt jelenik meg a visszatérítés

A visszatérítést a WooCommerce adminban, általában a vásárló látogatása után napokkal dolgozod fel. A Google Analytics egy eseményt csak addig tud forráshoz rendelni, amíg a látogató munkamenete él, ezért a visszatérítés munkamenet nélkül érkezik, és a visszavont bevétel a „(not set)” alá kerül. A bevételi korrekció a tulajdon szintjén helyesen érvényesül, csak a forrás, médium és kampány szerinti bontás nem mutatja. A szerveroldali visszatérítésjelentés velejárója ez, nem a bővítmény sajátossága.

### Nincs visszatérítés olyan vásárláshoz, amit a Google Analytics sosem kapott meg

A bővítmény nem küld `refund` eseményt, ha az adott rendelés `purchase` eseménye nem ment ki. Ez igaz a látogató hozzájárulási döntése miatt elnyomott vásárlásokra, a részletfizetéses rendelésekre, és a `pmw_skip_s2s_purchase_event` szűrővel kizárt rendelésekre. A Google Analytics így nem kap felszólítást olyan bevétel visszavonására, amelyet sosem rögzített.

### Visszatérítési események kikapcsolása

A visszatérítés-jelentésnek nincs beállítása, mert a legtöbb bolt a helyesbített bevételt szeretné. Aki az attribúciós jelentéseit mentesen akarja tartani a munkamenet nélküli visszatérítés-soroktól, szűrővel kapcsolhatja ki:

```php
add_filter('pmw_google_analytics_refund_tracking', '__return_false');
```

Kikapcsolt visszatérítési eseményekkel a Google Analytics bevétele a visszatérített összegekkel túlzott marad. Ha rendelésenként akarsz dönteni, a szerveroldali eseményszűrőket használd: a visszatérítés ugyanazon a szűrőcsatornán megy át, mint a vásárlás, `refund` eseménynévvel.

## Fiókregisztráció-esemény (account_created)

Pro funkció. A Pixel Manager követni tudja az új WooCommerce-fiók létrehozását, és `account_created` eseményt küld a GA4-nek. Minden fióklétrehozási módnál működik:

- a regisztrációs oldalon (Fiókom űrlap),
- a pénztárban (ha az „Account létrehozása” be van jelölve),
- a blokkos pénztárban (WooCommerce Blocks),
- a késleltetett fióklétrehozásnál (a rendelés-visszaigazoló oldalon).

Az esemény automatikusan deduplikált: fióklétrehozásonként csak egyszer megy el, akkor is, ha az oldalt újratöltik.

Mivel az `account_created` egyéni esemény (nem GA4-ajánlott), a GA4-ben egyéni eseményként kell kezelned. Az első esemény után általában legfeljebb 24 órával megjelenik a GA4 Events jelentésében. Onnan megjelölheted kulcseseménynek, vagy felhasználhatod a közönségdefiníciókban.
