Ваша аналитика говорит, что сайт заработал за месяц 42 180. Ваша база заказов говорит 39 650. Кто-то спрашивает, какое число верно, и честный ответ обычно «ни одно», по причинам, каждая из которых скучна, а вместе они дороги.
Вот пять причин, примерно по порядку того, как часто каждая оказывается настоящей, и способ их различить.
1. Страница подтверждения срабатывает больше одного раза
Это самая частая причина с большим отрывом, и она всегда завышает.
Событие покупки обычно живёт на странице подтверждения заказа. Эта страница загружается заново каждый раз, когда её обновляют, нажимают «назад», а потом «вперёд», открывают из письма или когда её восстанавливает браузер, переоткрывающий вкладки при запуске. Каждый из этих случаев шлёт событие снова с той же суммой.
Узнать это можно по форме расхождения: аналитика выше базы заказов, разрыв — чистое кратное на горстке крупных заказов, а эффект сильнее на мобильных, где возврат назад случается чаще.
Чинится это номером заказа. Шлите номер заказа с событием покупки и дайте аналитике дедуплицировать по нему. В GA4 это поле transaction_id; большинство инструментов использует это же имя, потому что победило соглашение GA. Если в шаблоне вашего диспетчера тегов есть поле для него, а вы оставили его пустым, вот ваша ошибка.
Стоит прямо сказать, во что обходится ошибиться здесь. Переоткрываемая страница оформления заказа, считающая одну продажу четыре раза, на панели не выглядит ошибкой. Она выглядит хорошим месяцем.
2. Две валюты, сложенные вместе
Если вы продаёте больше чем в одной валюте, а ваша аналитика показывает единый итог по выручке, выясните, что она делает, прежде чем ему верить.
Некоторые инструменты конвертируют в валюту отчёта по курсу, зафиксированному в момент прихода данных. Некоторые конвертируют по курсу того дня, когда вы смотрите, а значит, закончившийся месяц меняет стоимость в зависимости от того, когда вы его открываете. Некоторые попросту складывают числа и ставят впереди знак, давая величину, которая не является деньгами ни в одной валюте.
Признак — итог, лежащий между правильной сконвертированной цифрой и наивной суммой, или итог, который двигается, когда вы переоткрываете отчёт за месяц, закрывшийся давно.
Самое безопасное устройство — чтобы валюта проставлялась на событие в момент записи и чтобы инструмент никогда не конвертировал. Отчёт со смешанными валютами тогда либо делится по валютам, либо отказывается дать один итог, и то и другое полезнее уверенного неверного числа.
3. Возвраты, отмены и незахваченные платежи
Ваша база заказов — живая запись. Она знает, что заказ 8814 вернули 14-го. Ваша аналитика записала покупку 2-го и, если вы не послали ей событие возврата, по-прежнему в неё верит.
За месяц с обычной долей возвратов одно это может дать несколько процентов, и именно эта причина заставляет аналитику выглядеть высокой против финансового отчёта, а не против таблицы заказов.
Родственное и упускаемое легче: заказ, который создали и так и не захватили. Если событие срабатывает на странице подтверждения, а платёж потом не проходит или заказ висит неоплаченным и отменяется по тайм-ауту, у аналитики есть продажа, которой в вашей бухгалтерии не было никогда.
4. Заблокированные, отброшенные и неотправленные события
Эта всегда занижает, и поэтому аналитика обычно ниже таблицы заказов, когда её не завышают причины выше.
Блокировщики содержимого останавливают запрос. Как и часть корпоративных сетей, часть фильтров на уровне DNS и часть браузеров с упором на приватность — по умолчанию. Если вашей аналитике нужно согласие, все отказавшиеся тоже отсутствуют. А событие покупки, срабатывающее при загрузке страницы, соревнуется с посетителем, закрывающим вкладку, что он очень часто делает в тот же миг, как заказ подтверждён.
Размер заблокированной доли колоссально зависит от аудитории (сайт с инструментами для разработчиков теряет несопоставимо больше, чем цветочный магазин), так что любой опубликованный процент для вашего случая бесполезен. Измерьте свой: сопоставьте заказы, записанные вашей базой, с событиями покупки, записанными аналитикой, по номеру заказа, за одну чистую неделю.
Если сопоставить по номеру заказа нельзя, это опять причина номер один.
5. Две системы считают разные моменты
Наконец, скучная, объясняющая небольшой остаток после того, как вы починили всё остальное.
Аналитика ставит отметку времени в сессии посетителя, в том часовом поясе, на который настроен отчёт. Ваша база заказов ставит отметку в момент, когда платёжный процессор подтвердил, в UTC, возможно, минутами позже и иногда по ту сторону полуночи. Граница месяца превращает это в настоящую разницу: всегда в одну и ту же сторону, всегда небольшую.
Атрибуция добавляет своё. Аналитика относит выручку к той сессии, которая сконвертировала (или к какой-то более ранней, в зависимости от модели атрибуции), а ваша таблица заказов не относит её ни к чему. Сравнивать итог выручки по последнему нажатию с сырым итогом заказов — значит сравнивать ответы на два разных вопроса.
Сверка, которую можно действительно провести
- Возьмите одну закрывшуюся неделю.
- Выгрузите заказы: номер, отметку времени в UTC, валюту, чистую сумму после возвратов.
- Выгрузите события покупки с теми же полями.
- Соедините по номеру заказа.
Четыре кучки, которые выпадут, и есть диагноз. События без заказа — это двойные срабатывания или тестовый трафик. Заказы без события — блокировка или сломанный тег. Совпавшие пары с разными суммами — обращение с валютой или несовпадение цены с налогом и без налога. Совпавшие пары в разные дни — часовой пояс.
Сделайте это один раз, запишите остаток в процентах, и у вас будет нечто куда более ценное, чем совпавший итог: известная и устойчивая разница. Две системы, расходящиеся на устойчивые 4%, обе пригодны. Две системы, совпавшие по совпадению, — нет.
Где здесь Skomi
Skomi читает номер заказа из order_id, а также из transaction_id от GA, так что сайту, уже размеченному под GA4, менять ничего не надо. Событие, несущее уже виденный номер, второй раз не считается.
Выручка помечается своей валютой в момент записи, и Skomi никогда не конвертирует между валютами: отчёт, покрывающий две валюты, показывает две цифры, потому что одна была бы выдумкой. Подробнее — на странице Analytics, а установка сниппета рассказывает об отправке события.
Бо́льшую часть работы здесь делают два определения: выручка относится к тому визиту, который её заработал, а не к странице, на которой заплатили, а валюта выручки проставляется при приёме и не конвертируется никогда.