# Можно ли доверять выручке?

Учебный кейс Натальи Ветошкиной. Все заказы и события синтетические.

Сохраните data.json, audit.mjs, verify.mjs и README.md в одной папке. Выполните `node verify.mjs` (Node.js 18+). Никакие события не отправляются в GA4.

## Сценарий

4 оплаченных заказа на 18 400 RUB, 1 неоплаченный. До: 7 отправок purchase, 7 замечаний шести типов. После: 4 эталонных события, 0 замечаний. Исправленный набор задан явно, это не результат внедрения и не способ исправить историю GA4.

Правила: непустой transaction_id; ровно одна отправка на оплаченный заказ; совпадение суммы и валюты; наличие события для каждого оплаченного заказа; отсутствие purchase для неоплаченного заказа. Строго сверенный заказ должен удовлетворять всем проверкам совпадения и уникальности. У E1 параметры верны, но весь O-17 не проходит проверку единственности.

context_order_id — диагностическая связь из тестового стенда. Она нужна для объяснения ошибочной суммы у события с пустым ID; не является заменой transaction_id и не используется для засчитывания сверенного заказа.

Один интервал теста, без задержек. Доставка, налог и скидки равны нулю; value равен стоимости товаров. Журнал содержит проекцию полей для сверки, не полный payload; items в нём не проверяется. В реальной сверке учитывать время, задержки, валюты, возвраты, согласие и блокировки измерения. Валидатор не моделирует обработку GA4, атрибуцию или дедупликацию отчётов.

## Документация

- https://support.google.com/analytics/answer/12313109?hl=en
- https://developers.google.com/analytics/devguides/collection/ga4/ecommerce

Проверено 28 сентября 2026. Повторная отправка не равна дополнительной покупке в обработанном отчёте. Результат в реальном ресурсе нужно проверять отдельно.
