Як зробити refund в Google Analytics 4, якщо пізно помітили спамну транзакцію у звітах

У цьому матеріалі розглянемо подію refund в Google Analytics 4, яка відстежує повернення транзакцій або окремих товарів. Вебаналітики та PPC-фахівці добре знайомі з подіями електронної торгівлі, такими як view_item (перегляд товару), add_to_cart (додавання до кошика) та purchase (замовлення). Проте refund використовують рідше через її специфіку.
Подія refund корисна для корекції даних про кількість замовлень та дохід у випадках, коли клієнт повернув товар або замовлення було помилковим. Вона допомагає уникнути спотворення аналітики в Google Analytics.
Refund можна налаштувати автоматично через Google Tag Manager або gtag.js. Також, передавати дані вручну з CRM-системи через Measurement Protocol. Однак, на багатьох сайтах відсутня форма для коректної передачі повернень, що може призводити до помилок.
Зазвичай, необхідність у поверненні коштів (або скасуванні транзакції) виникає через спам або помилкові операції. У таких випадках доцільно відправити подію refund в ручному режимі — саме це і розглянемо у статті.
Визначення параметрів події refund
Перед налаштуванням події refund необхідно визначити параметри події. Вони забезпечують коректне відображення повернення в аналітиці, зокрема для повного або часткового повернення транзакцій.
Існує два способи здійснити повернення: повне повернення вартості транзакції та часткове повернення деяких товарів.
- У першому способі знадобляться параметри користувача і сеансу, дохід транзакції, код валюти та ідентифікатор транзакції.
- У другому способі до списку додаємо дані товарів, які необхідно повернути, — це ідентифікатори товарів та назви товарів.
Спочатку розглянемо простіший спосіб — повне повернення транзакції.
Для цього необхідно визначити такі параметри:
- Ідентифікатор потоку даних Google Analytics.
- Секретний ключ API потоку даних.
- Ідентифікатор користувача — Client ID.
- Ідентифікатор сеансу — Session ID.
- Часова мітка здійснення події в Unix-форматі (в мікросекундах).
- Код валюти за стандартом ISO-4217.
- Ідентифікатор транзакції — Transaction ID.
- Дохід від транзакції, на який необхідно здійснити повернення.
Далі — розберемо, звідки можна дістати кожен із представлених параметрів.
Ідентифікатор потоку даних Google Analytics
Цей параметр необхідно взяти із потоку даних, до якого потрібно надіслати подію повернення. Він знаходиться в налаштуваннях потоку даних в панелі адміністратора Google Analytics.

Секретний ключ API потоку даних
API-ключ потоку даних необхідно створити, якщо такого ще немає. Для цього потрібно перейти в налаштування потоку даних та перейти до створення параметра.

Після створення API ключу необхідно скопіювати значення Secret Value:

Ідентифікатор користувача — Client ID
Ідентифікатор користувача можна знайти в дослідженні User Explorer, попередньо застосувавши сегмент із необхідним ідентифікатором транзакції.
Якщо повернення потрібно здійснити через 3 або більше днів, можна використати дані іншого користувача та сеансу. Головне, щоб цей користувач здійснив візит з того ж джерела, каналу та кампанії у проміжку до 3 днів тому.
Якщо ви аналізуєте й перші джерела користувачів, то можна підібрати користувача і за цими параметрами.
Переходимо до дослідження User Explorer знаходимо необхідного користувача. Наприклад, ми визначили, що цей користувач вчора заходив на сайт із того ж джерела, каналу та кампанії, що і транзакція.
Також, він має аналогічні перші канал та джерело, як і користувач, який здійснив спамну транзакцію, яку необхідно повернути.

Копіюємо Client ID, у цьому випадку це — 1171043837.1720206959.
Ідентифікатор сеансу — Session ID
Для того, щоб взяти ідентифікатор сеансу, необхідно спочатку створити цей параметр у Custom definitions.

Після цього, як і в попередньому пункті, треба перейти в User Explorer, відкрити дані користувача з обраним Client ID та знайти сеанс, який відповідає джерелу, каналу та кампанії транзакції, яку необхідно повернути.
В дослідженні користувача необхідно скопіювати Session ID із будь-якої події сеансу.

Часова мітка здійснення події в Unix-форматі (в мікросекундах)
Часова мітка має відображати час між початком та кінцем обраного в попередньому пункті сеансу.
У цьому випадку остання подія page_view була 4.08.2024 о 11:13:27 вечора, тому за час можна обрати, наприклад, 4.08.2024 об 11:13:20 вечора.
Тепер переходимо на сайт (також підійде й будь-який інший, який дозволяє перевести дату та час у UNIX-мітку), прописуємо обрану дату та час та натискаємо Human date to Timestamp.

Ми отримали значення 1722759200000 в мілісекундах. Для відправки події необхідна часова мітка саме в мікросекундах, тому просто додаємо три нулі в кінець значення — 1722759200000000.
Код валюти, ідентифікатор транзакції та дохід
Значення транзакції можна взяти зі звіту по транзакціях або із дослідження:
Код валюти повинен бути таким, який встановлено в ресурсі. У нашому випадку для гривні це — UAH.
Наприклад, візьмемо наступну транзакцію:

Надсилання запиту для повернення транзакції
Після того, як були зібрані всі необхідні параметри, можна перейти до їх комбінування у код JavaScript.
Наступний код можна використовувати для відправки будь-яких подій за допомогою Measurement Protocol.

Значення, виділені кольором, необхідно замінити на раніше зібрані:
- measurement_id — ідентифікатор потоку даних Google Analytics,
- api_secret — секретний ключ API потоку даних,
- client_id — ідентифікатор користувача,
- timestamp_micros — часова мітка здійснення події в Unix-форматі,
- session_id — ідентифікатор сеансу,
- currency — код валюти,
- transaction_id — ідентифікатор транзакції,
- value — дохід, який необхідно повернути.
В нашому випадку, код виглядатиме наступним чином:

Тепер залишилося лише скопіювати отриманий код та запустити його. Це можна зробити в редакторі коду IDE, якщо в ньому є необхідні розширення для запуску JavaScript-коду. Також можна скористатися простішим способом — за допомогою браузера.
Для запуску коду необхідно відкрити будь-який справний сайт та відкрити консоль в інструментах розробника. Після цього потрібно вставити код в консоль та натиснути Enter.

Перевірити успішність відправки запиту можна в Network на вкладці Headers:

Дані, які надіслані, показуємо на вкладці Payload:

Далі можна перейти до звіту в реальному часі та пересвідчитись у тому, що подія дійсно надійшла до ресурсу аналітики.

Враховуючи те, що дані до аналітики надходять із затримкою у 24-48 годин, подія refund з’явиться у звітах, орієнтовно, наступного дня.
У звіті з подіями вона виглядатиме так:

Звіт із транзакціями покаже скоригований дохід від транзакції, яку повернули.

Повернення окремих товарів
Для того, щоб повернути не всю транзакцію, а лише окремі товари з неї, необхідно додати параметри товарів до наведеного коду для відправки події.
Приклад коду для повернення двох товарів:

Значення, які виділені червоним, — це фактичні дані товарів у вказаній транзакції, які необхідно повернути. Параметри товарів, крім item_id та item_name, є опціональними. За наявності, можна додати ціну, кількість, категорію та інші параметри товарів.
- Автор статті: Андрій Очковський, Web Analyst в Inweb
- Редакторка: Ольга Беспалько
- Статтю завірила: Катерина Ніколаєва, Head of Analytics Department в Inweb