Evenimente GA4 și GTM în procesele de programare online
Rezumat scurt
În timpul procesului de programare online, sistemul dispune de integrare GA4 și GTM. Evenimentele DataLayer sunt trimise cu atributele corespunzătoare pentru pașii principali. Înainte de fiecare eveniment, se efectuează o curățare cu următorul apel: `dataLayer.push({'event': 'cleanup', 'ecommerce': null});`.
Mai jos sunt prezentate circumstanțele de declanșare și exemplele de date trimise către DataLayer pentru fiecare eveniment.
Condiții prealabile
Integrarea GA4 și GTM este activată în sistem.
Pași
1. Alegerea specializării sau a specialistului
Evenimentul se declanșează atunci când utilizatorul alege o specializare sau un specialist din listă.
Date trimise:
item_name: Numele specializării sau al medicului
item_id: ID-ul specializării sau al medicului (string)
item_category: Tipul interfeței de selecție, ex. Selector specialist
index: Numărul rezultatului în listă (integer)
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'select_item',
'ecommerce': {
'items': [{
'item_name': 'Dr. Minta Ágnes', // Numele specializării sau al medicului
'item_id': '302194', // ID-ul specializării sau al medicului, string
'item_category': 'Selector specialist', // Tipul interfeței de selecție
'index': 1 // Poziția în listă, integer
}]
}
});
2. Afișarea listei de examinări după alegerea specializării
Evenimentul se declanșează când apare lista de examinări asociată specializării selectate.
Regulă în cazul unui preț unic:
Pentru o examinare cu preț unic, parametrul `price` nu este trimis.
Valoarea parametrului `custom_price` este `true` în acest caz.
Date trimise:
currency: HUF
elementele array-ului items:
item_name: Numele specializării
item_id: ID-ul examinării (string)
item_category: Numele specializării
price: Prețul examinării (double, doar dacă nu este preț unic)
custom_price: true, dacă este preț unic; false, dacă este preț fix
index: Numărul examinării în listă
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'view_item_list',
'ecommerce': {
'currency': 'HUF',
'items': [{
'item_name': 'Microscopie capilară, împreună cu examinarea dermatologică de bază', // Numele specializării
'item_id': '43622', // ID-ul examinării, string
'item_category': 'Dermatologie pediatrică', // Numele specializării
'price': '43900.00', // Prețul examinării, double (doar pentru preț fix)
'custom_price': false, // true pentru preț unic, altfel false
'index': 1
}]
}
});
3. Selectarea unei examinări
Evenimentul se declanșează când utilizatorul face clic pe o examinare specifică din listă.
Date trimise:
currency: HUF
array-ul items (cu o singură examinare), cu aceleași parametri ca în vizualizarea listei.
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'select_item',
'ecommerce': {
'currency': 'HUF',
'items': [{
'item_name': 'Microscopie capilară, împreună cu examinarea dermatologică de bază',
'item_id': '43622',
'item_category': 'Dermatologie pediatrică',
'price': '43900.00',
'custom_price': false,
'index': 1
}]
}
});
4. Afișarea paginii de selecție a programării
Evenimentul se declanșează când utilizatorul ajunge pe pagina care listează programările disponibile pentru medicul sau specializarea respectivă.
Date trimise:
currency: HUF
elementele array-ului items:
item_name: Numele specializării
item_id: ID-ul examinării (string)
item_category: Numele specializării
item_category2: Numele specializării
price: Prețul examinării (double, dacă nu este preț unic)
custom_price: Indicația prețului unic
doctor_id: ID-ul medicului (string)
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'view_item',
'ecommerce': {
'currency': 'HUF',
'items': [{
'item_name': 'Microscopie capilară, împreună cu examinarea dermatologică de bază',
'item_id': '43622',
'item_category': 'Dermatologie pediatrică',
'item_category2': 'Microscopie capilară, împreună cu examinarea dermatologică de bază',
'price': '43900.00',
'custom_price': false,
'doctor_id': '168159' // ID-ul medicului, string
}]
}
});
5. Apăsarea butonului "Rezervă" (inițierea procesului de finalizare)
Evenimentul se declanșează când utilizatorul inițiază finalizarea rezervării cu butonul "Rezervă".
Date trimise:
currency: HUF
elementele array-ului items:
item_name, item_id, item_category, item_category2: datele examinării
price, custom_price: datele prețului
doctor_id: ID-ul medicului (string)
item_variant: Data și ora programării în format ISO
location: Numele instituției
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'add_to_cart',
'ecommerce': {
'currency': 'HUF',
'items': [{
'item_name': 'Microscopie capilară, împreună cu examinarea dermatologică de bază',
'item_id': '43622',
'item_category': 'Dermatologie pediatrică',
'item_category2': 'Microscopie capilară, împreună cu examinarea dermatologică de bază',
'price': '43900.00',
'custom_price': false,
'doctor_id': '168159',
'item_variant': '2023-02-17T09:00:00+00:00', // Programarea selectată
'location': 'Numele instituției'
}]
}
});
6. Programare reușită
Evenimentul se declanșează când utilizatorul finalizează programarea și aceasta este înregistrată ca rezervare reușită.
Date trimise:
currency: HUF
value: Valoare finală cu taxe incluse (double)
tax: Conținutul taxei sau 0.00 (double)
transaction_id: ID tranzacție
coupon: Cod cupon sau șir gol
affiliation: Valoare actuală
items: Detaliile articolului rezervat (vezi mai jos)
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'purchase',
'ecommerce': {
'currency': 'HUF',
'value': '43900.00', // Valoare finală cu taxe incluse, double
'tax': 0.00, // Conținutul taxei sau 0.00, double
'transaction_id': '375a111f-4bab-4ec1-b7f6-f77bf84bdb0b', // ID tranzacție
'coupon': '', // Cod cupon sau șir gol
'affiliation': '', // Valoare actuală
'items': [{
'item_name': 'Numele specializării',
'item_id': '43622',
'item_category': 'Dermatologie pediatrică',
'item_category2': 'Microscopie capilară, împreună cu examinare dermatologică de bază',
'price': '43900.00',
'custom_price': false,
'doctor_id': '168159',
'item_variant': '2023-02-17T09:00:00+00:00',
'location': 'Numele instituției'
}]
}
});
7. Anularea unei programări
Evenimentul se declanșează atunci când utilizatorul își anulează programarea online.
Date trimise:
transaction_id: Identificatorul tranzacției rezervării anulate
Exemplu:
dataLayer.push({'event': 'cleanup', 'ecommerce': null});
dataLayer.push({
'event': 'refund',
'ecommerce': {
'transaction_id': '375a111f-4bab-4ec1-b7f6-f77bf84bdb0b'
}
});
8. Modificarea unei programări
Pașii necesari pentru modificarea unei programări:
Trimiteți un eveniment `refund` cu valoarea `transaction_id` a rezervării originale.
Trimiteți un nou eveniment `purchase` cu același `transaction_id`, dar cu parametrul `item_variant` modificat.
Modelele de evenimente `refund` și `purchase` de mai sus pot fi utilizate, înlocuind valoarea `item_variant` cu noua dată.
Sfaturi
Folosiți apelul de curățare: `{'event': 'cleanup', 'ecommerce': null}` înainte de fiecare eveniment pentru a șterge obiectul `ecommerce` anterior.
În cazul unei examinări cu preț personalizat, nu trimiteți câmpul `price` și setați valoarea `custom_price` la `true`.
Identificatorii (`item_id`, `doctor_id`, `transaction_id`) sunt de tip string.
`item_variant` este valoarea de dată-timp în format ISO a programării.
Rezumat
Sistemul trimite evenimente DataLayer compatibile cu GA4 pentru pașii procesului de programare online, cu o structură de date unificată. Pe baza exemplelor și descrierilor câmpurilor, etichetele și măsurătorile de evenimente pot fi configurate cu ușurință în GTM și GA4. Apelul `cleanup` înainte de fiecare eveniment asigură ștergerea datelor `ecommerce` anterioare.
