Электронная коммерция
Как передать просмотры товаров, корзину, оформление, покупки и возвраты — dataLayer в форматах Яндекс Метрики и GA4, команда dara('ecommerce'), заказы по API, валюты.
Откуда берутся данные
window.dataLayerв формате Яндекс Метрики и Universal Analytics.window.dataLayerв формате GA4.- Команда
dara('ecommerce', action, data)— поля как в GA4. - Метод
POST /api/v1/orders— заказы с сервера сайта.
Источники можно сочетать: например, просмотры товаров и корзину — из dataLayer, а заказы — с сервера. Если сайт уже передаёт электронную коммерцию в Яндекс Метрику или GA4 через dataLayer, ничего менять не нужно: тег прочитает те же данные.
Действия
| Действие | Что означает | Формат Метрики и UA | Формат GA4 |
|---|---|---|---|
detail |
просмотр товара | ecommerce.detail |
view_item |
add |
добавление в корзину | ecommerce.add |
add_to_cart |
remove |
удаление из корзины | ecommerce.remove |
remove_from_cart |
checkout |
начало оформления | ecommerce.checkout |
begin_checkout |
purchase |
покупка | ecommerce.purchase |
purchase |
refund |
возврат | ecommerce.refund (Universal Analytics) |
refund |
dataLayer
- Тег перехватывает
dataLayer.pushи разбирает записи, сделанные до его загрузки, — порядок скриптов на странице не важен. - Имя контейнера задаётся в настройках сайта, в разделе «Общие». По умолчанию —
dataLayer.
Формат Яндекс Метрики и Universal Analytics
actionField—id(номер заказа),revenue(сумма заказа),coupon.products—id,name,price,brand,category,variant,quantity. Безquantityколичество товара — 1.ecommerce.currencyCode— валюта сумм и цен, напримерRUB, поле Universal Analytics Enhanced Ecommerce. Если его нет, используется валюта сайта.- Возврат —
ecommerce.refundиз Universal Analytics Enhanced Ecommerce сactionField.idзаказа.
window.dataLayer = window.dataLayer || [];
// Просмотр товара
dataLayer.push({
ecommerce: {
detail: {
products: [
{ id: 'SKU-1017', name: 'Платье миди', price: 2490, brand: 'Пример', category: 'Одежда/Женская/Платья', variant: 'синее' }
]
}
}
});
// Добавление в корзину
dataLayer.push({
ecommerce: {
add: {
products: [
{ id: 'SKU-1017', name: 'Платье миди', price: 2490, brand: 'Пример', category: 'Одежда/Женская/Платья', variant: 'синее', quantity: 2 }
]
}
}
});
// Покупка
dataLayer.push({
ecommerce: {
currencyCode: 'RUB',
purchase: {
actionField: { id: 'T-20931', revenue: 5480, coupon: 'AUTUMN10' },
products: [
{ id: 'SKU-1017', name: 'Платье миди', price: 2490, brand: 'Пример', category: 'Одежда/Женская/Платья', variant: 'синее', quantity: 2 },
{ id: 'SKU-2044', name: 'Ремень', price: 500, category: 'Одежда/Аксессуары', quantity: 1 }
]
}
}
});
// Возврат
dataLayer.push({
ecommerce: {
refund: {
actionField: { id: 'T-20931' }
}
}
});
Формат GA4
- События:
view_item,add_to_cart,remove_from_cart,begin_checkout,purchase,refund. ecommerce—transaction_id,value,currency,items.items—item_id,item_name,price,quantity,item_brand,item_category…item_category5,item_variant.
window.dataLayer = window.dataLayer || [];
// Добавление в корзину
dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: 'RUB',
value: 4980,
items: [
{ item_id: 'SKU-1017', item_name: 'Платье миди', price: 2490, quantity: 2, item_brand: 'Пример', item_category: 'Одежда', item_category2: 'Женская', item_category3: 'Платья', item_variant: 'синее' }
]
}
});
// Покупка
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'T-20931',
value: 5480,
currency: 'RUB',
items: [
{ item_id: 'SKU-1017', item_name: 'Платье миди', price: 2490, quantity: 2, item_brand: 'Пример', item_category: 'Одежда', item_category2: 'Женская', item_category3: 'Платья', item_variant: 'синее' },
{ item_id: 'SKU-2044', item_name: 'Ремень', price: 500, quantity: 1, item_category: 'Одежда', item_category2: 'Аксессуары' }
]
}
});
// Возврат
dataLayer.push({
event: 'refund',
ecommerce: { transaction_id: 'T-20931' }
});
Команда dara('ecommerce')
Если dataLayer на сайте нет, передавайте те же данные командой. Первый аргумент после 'ecommerce' — действие из таблицы выше, второй — объект с полями GA4:
dara('ecommerce', 'detail', {
currency: 'RUB',
items: [{ item_id: 'SKU-1017', item_name: 'Платье миди', price: 2490, item_category: 'Одежда/Женская/Платья' }]
});
dara('ecommerce', 'purchase', {
transaction_id: 'T-20931',
value: 5480,
currency: 'RUB',
items: [
{ item_id: 'SKU-1017', item_name: 'Платье миди', price: 2490, quantity: 2, item_category: 'Одежда/Женская/Платья' },
{ item_id: 'SKU-2044', item_name: 'Ремень', price: 500, quantity: 1, item_category: 'Одежда/Аксессуары' }
]
});
dara('ecommerce', 'refund', { transaction_id: 'T-20931' });
Заказы с сервера
Метод POST /api/v1/orders подходит для заказов, которые подтверждаются на сервере: оплаты, заказы по телефону, отмены. Ключ API создаётся в настройках сайта, в разделе «Ключи API».
curl -X POST https://analytics.daratech.ru/api/v1/orders \
-H "Authorization: Bearer $DARA_ANALYTICS_KEY" \
-H "Content-Type: application/json" \
-d '{
"orders": [{
"transaction_id": "T-20931",
"visitor_id": "0b7e6f8a-3c2d-4e5f-9a1b-2c3d4e5f6a7b",
"occurred_at": "2026-09-14T12:30:00Z",
"currency": "RUB",
"revenue": 5480,
"products": [
{"id": "SKU-1017", "name": "Платье миди", "category": "Одежда/Женская/Платья", "brand": "Пример", "price": 2490, "qty": 2},
{"id": "SKU-2044", "name": "Ремень", "category": "Одежда/Аксессуары", "price": 500, "qty": 1}
]
}]
}'
Ответ 202 Accepted:
{"accepted": 1, "duplicates": 0, "rejected": []}
- В одном запросе — до 500 заказов.
visitor_id— значение cookie_dara_aпосетителя,user_id— id пользователя на вашем сайте, если он передан в аналитику. Нужен хотя бы один из них, чтобы привязать заказ к визиту.- Заказ приписывается последнему визиту посетителя до
occurred_at, не старше 90 дней. Если посетитель известен только поuser_id, берётся последний визит связанного с ним посетителя. - Коды отказа в
rejected:unknown_visitor,too_old,invalid_products.
Примеры на PHP и Python и общие правила API — в разделе API.
Один заказ — одна покупка
- Покупка узнаётся по
transaction_idв пределах сайта. Если одна и та же покупка пришла из тега и из API, учитывается первая пришедшая, повторы в выручку не входят. - Поэтому, если сумма на сервере точнее — например, с учётом скидок после оплаты, — не отправляйте
purchaseиз тега для тех же заказов.
Возвраты
Возврат уменьшает выручку и заказы; метрика «Куплено товаров» возвратами не уменьшается. Передать возврат можно четырьмя способами:
- записью
ecommerce.refundвdataLayerв формате Universal Analytics; - событием GA4
refundвdataLayer; - командой
dara('ecommerce', 'refund', { transaction_id: 'T-20931' }); - заказом по API со статусом
refunded:
curl -X POST https://analytics.daratech.ru/api/v1/orders \
-H "Authorization: Bearer $DARA_ANALYTICS_KEY" \
-H "Content-Type: application/json" \
-d '{"orders": [{"transaction_id": "T-20931", "status": "refunded", "products": [{"id": "SKU-1017", "price": 2490, "qty": 2}, {"id": "SKU-2044", "price": 500, "qty": 1}]}]}'
Возврат всегда снимает заказ целиком, даже если в refund или в заказе со статусом refunded перечислены не все его товары: частичных возвратов нет.
- Возврат уменьшает выручку и заказы того периода, в который он пришёл: отчёт за прошлый месяц задним числом не меняется.
- Если покупка была раньше периода отчёта, а возврат пришёл внутри него, выручка и заказы периода уменьшаются, но ниже нуля не опускаются.
- Возврат по заказу, которого сервис не видел, принимается и считается возвратом.
- Возврат, присланный дважды — например, и из тега, и по API, — учитывается один раз.
Возвраты видны в отдельном отчёте «Возвраты».
Валюта
- Валюта — код ISO 4217:
RUB,USD,EUR. ВdataLayerформата Метрики и UA её передают вecommerce.currencyCode, в GA4, командеdara('ecommerce')и API — в полеcurrency. - Если валюта не передана, используется валюта сайта из настроек.
- Отчёты считаются в валюте сайта. Суммы в другой валюте пересчитываются по курсу ЦБ РФ на дату заказа: сумма запоминается в валюте сайта при приёме заказа и позже не пересчитывается.
- Если курса на дату заказа нет — например, заказ пришёл в выходной, — берётся последний известный курс не старше 30 дней. Если и его нет или валюты нет в курсах ЦБ РФ, заказ попадёт в отчёты с нулевой суммой.
Категории товаров
Категорию можно передать строкой с уровнями через / — Одежда/Женская/Платья — или полями уровней GA4 item_category … item_category5.
Отчёт «Категории» строится по той строке категории, которую прислал сайт: она приводится к одному виду — лишние пробелы убираются, регистр не различается — и по уровням не разбирается. Присланные строки видны в настройках сайта, в разделе «Электронная коммерция» — первые 500 по алфавиту.
Справочник категорий сети. Для отчётов «Аудитория» каждая строка категории сопоставляется с категорией общего справочника товаров сети — по нему считаются категории покупок и ценовые сегменты людей (раздел Сеть ДАРА).
- Новые строки сопоставляются автоматически в течение нескольких минут — по совпадению пути или названия категории со справочником. Строка, для которой категория не нашлась, остаётся без категории и проверяется снова раз в сутки.
- В настройках сайта, в разделе «Электронная коммерция», сопоставление можно поправить: выбрать категорию сети вручную или «Не сопоставлять». Ручной выбор автоматическое сопоставление не меняет. Правят сопоставление владелец и администраторы сайта.
- Отчёт «Категории» сопоставление не меняет: он по-прежнему показывает строки сайта.
- Сетевые категории и ценовые сегменты считаются по покупкам, возвраты снимают заказ и из них.
Отчёты и метрики
Раздел «Электронная коммерция»: выручка, заказы, средний чек; товары — просмотры, добавления в корзину, выручка и заказы; категории; бренды; источники выручки; возвраты. В сводке появляется виджет «Выручка».
| Метрика | Определение |
|---|---|
| Выручка | сумма покупок периода в валюте сайта минус возвраты, пришедшие в этом же периоде; суммы в другой валюте пересчитываются по курсу ЦБ РФ на дату заказа |
| Заказы | число покупок — разных transaction_id — за вычетом возвратов, пришедших в этом же периоде |
| Средний чек | выручка, делённая на заказы |
| Куплено товаров | сумма количества товаров в покупках; возвраты из неё не вычитаются — их видно в отчёте «Возвраты» |
| Просмотры товаров | число просмотров товаров — действий detail |
| Добавления в корзину | число добавлений товаров в корзину — действий add |
| Возвраты | число возвращённых заказов |
- Измерения «Товар» — id, название, категория и бренд товара.
- Разбивка по товару. В отчётах по товару, категории и бренду строка показывает весь заказ, в котором был товар: выручка, заказы и куплено товаров считаются по всему заказу, а не по доле товара в нём. Поэтому строки по этим столбцам между собой не сравнивают, а итог за период считается по заказам и сумме столбца не равен — в отчёте это подписано.
- Отдельной метрики «Конверсия товара» в отчётах нет: покупки считаются по всем событиям, а просмотры товара на сайте с выборкой — оценкой, и отношение точного числа к оценке вводило бы в заблуждение.
- Выборка. Если сайт превысил суточную квоту хитов, покупки, выручка и возвраты всё равно учитываются точно — по всем событиям. Просмотры товаров и добавления в корзину за такие сутки — оценка по выборке с весом 10.