Техническое задание на передачу данных о платежах из билетной системы в систему аналитики
Основные тезисы:

1. Нам нужны данные о транзакциях из вашей системы и их передача в GA вместе с UTM метками и источниками трафика.

2. Если трафик будет идти на лендинг, а кнопка с покупкой билетов будет вести на другой поддомен, где уже будет осуществляться покупка, то важно, чтобы стоял один и тот же счетчик GA на обоих сайтах с настроенным междоменным отслеживанием.

Инструкция

1. Можно реализовать передачу данных в модуль электронной торговли google.

У Google есть собственный инструмент для передачи необработанных данных через протокол http запросов. Measurement protocol. По данной ссылке непосредственно инструкция его работы https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide?hl=ru

По данной ссылке непосредственно инструкция по параметрам. https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=ru

2. Это те параметры которые нам критичны - сразу в виду ссылок.
URL перехода к документу Источник кампании Канал кампании Ключевое слово кампании Содержание кампании
Применяя это к UTM меткам - это будет выглядеть так:

Источник кампании = utm_source
Канал кампании = utm_medium
Ключевое слово кампании = utm_term
Содержание кампании = utm_content
Общие положения.

Нам важно, чтобы метка или реферер, с которыми пользователь пришел на сайт изначально, в итоге передалась вместе с покупкой.

Частые проблемы, которые возникают у билетных систем: сбрасывается метка при открытие мобильного виджета (так как он открывается на новой странице), сбрасывается при переходе между поддоменами (например основной сайт и билетный) и подобные.
Дополнение.

С точки зрения кода они будут не прямо точными, но как пример.

Сейчас настраиваем как раз у другого клиента подобную схему совместно с их разработчиками. Там работает примерно так:
Запрос транзакции через протокол

Событие транзакция:

v: '1', - версия протокола
tid: 'UA-*****', - счетчик
cid: '1******', идентификатор клиента
t: 'transaction', - тип обращения: транзакция
ti: '44473', - идентификатор транзакции (по нему будут определятся входящие в него итемы)
tr: '19990.00' - сумма транзакции

Дальше по одному обращению Item для каждого товара. Они будут объединены по идентификатору транзакции

v: '1',
tid: 'UA-******', счетчик
cid: '*******', идентификатор клиента
t: 'item', - товар(билет)
ti: '44473', - идентификатор транзакции
'in': 'Название товара', - здесь можно указать сектор и место
ip: '19990.00', - - стоимость билета
iv: 'Категория товара' - здесь указать название матча.

Дальше еще по сообщению item, если были еще билеты.

Если передаем напрямую в GA в data_layer, не через протокол, то код выглядит следующим образом.

gtag('event', 'purchase', {
"transaction_id": "24.031608523954162",
"value": 3500, - сумма транзакции
"items": [
{
"id": "P12345",
"name": ",ticket parter", - тип билета
"category": "romeo and juliet", - название спектакля
"quantity": 1, -количество
"price": '2000' -стоимость билета.
},
{
"id": "P67890",
"name": "ticket amfiteatr",
"category": "romeo and juliet",
"quantity": 1,
"price": '1500'
}
]
});
Еще несколько примеров уже от наших партнеров по передаче через measurement protocol:
А также сразу ссылка на библиотеку на Github с инструкциями и инструментами проверки.
https://github.com/theiconic/php-ga-measurement-protocol

Функции проверки

Validating Hits

From Google Developer Guide:


The Google Analytics Measurement Protocol does not return HTTP error codes, even if a Measurement Protocol hit is malformed or missing required parameters. To ensure that your hits are correctly formatted and contain all required parameters, you can test them against the validation server before deploying them to production.

To send a validation hit, turn on debug mode like this

// Make sure AsyncRequest is set to false (it defaults to false) $response=$analytics ->setDebug(true) ->sendPageview(); $debugResponse=$response->getDebugResponse();
// The debug response is an associative array, you could use print_r to view its contents
print_r($debugResponse);
GA actually returns a JSON that is parsed into an associative array. Read (here) to understand how to interpret response.