ДАРА АНАЛИТИКА
Разделы документации

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

Электронная коммерция

Как передать просмотры товаров, корзину, оформление, покупки и возвраты — dataLayer в форматах Яндекс Метрики и GA4, команда dara('ecommerce'), заказы по API, валюты.

Откуда берутся данные

  1. window.dataLayer в формате Яндекс Метрики и Universal Analytics.
  2. window.dataLayer в формате GA4.
  3. Команда dara('ecommerce', action, data) — поля как в GA4.
  4. Метод 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

  • actionFieldid (номер заказа), revenue (сумма заказа), coupon.
  • productsid, 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.
  • ecommercetransaction_id, value, currency, items.
  • itemsitem_id, item_name, price, quantity, item_brand, item_categoryitem_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_categoryitem_category5.

Отчёт «Категории» строится по той строке категории, которую прислал сайт: она приводится к одному виду — лишние пробелы убираются, регистр не различается — и по уровням не разбирается. Присланные строки видны в настройках сайта, в разделе «Электронная коммерция» — первые 500 по алфавиту.

Справочник категорий сети. Для отчётов «Аудитория» каждая строка категории сопоставляется с категорией общего справочника товаров сети — по нему считаются категории покупок и ценовые сегменты людей (раздел Сеть ДАРА).

  • Новые строки сопоставляются автоматически в течение нескольких минут — по совпадению пути или названия категории со справочником. Строка, для которой категория не нашлась, остаётся без категории и проверяется снова раз в сутки.
  • В настройках сайта, в разделе «Электронная коммерция», сопоставление можно поправить: выбрать категорию сети вручную или «Не сопоставлять». Ручной выбор автоматическое сопоставление не меняет. Правят сопоставление владелец и администраторы сайта.
  • Отчёт «Категории» сопоставление не меняет: он по-прежнему показывает строки сайта.
  • Сетевые категории и ценовые сегменты считаются по покупкам, возвраты снимают заказ и из них.

Отчёты и метрики

Раздел «Электронная коммерция»: выручка, заказы, средний чек; товары — просмотры, добавления в корзину, выручка и заказы; категории; бренды; источники выручки; возвраты. В сводке появляется виджет «Выручка».

Метрика Определение
Выручка сумма покупок периода в валюте сайта минус возвраты, пришедшие в этом же периоде; суммы в другой валюте пересчитываются по курсу ЦБ РФ на дату заказа
Заказы число покупок — разных transaction_id — за вычетом возвратов, пришедших в этом же периоде
Средний чек выручка, делённая на заказы
Куплено товаров сумма количества товаров в покупках; возвраты из неё не вычитаются — их видно в отчёте «Возвраты»
Просмотры товаров число просмотров товаров — действий detail
Добавления в корзину число добавлений товаров в корзину — действий add
Возвраты число возвращённых заказов
  • Измерения «Товар» — id, название, категория и бренд товара.
  • Разбивка по товару. В отчётах по товару, категории и бренду строка показывает весь заказ, в котором был товар: выручка, заказы и куплено товаров считаются по всему заказу, а не по доле товара в нём. Поэтому строки по этим столбцам между собой не сравнивают, а итог за период считается по заказам и сумме столбца не равен — в отчёте это подписано.
  • Отдельной метрики «Конверсия товара» в отчётах нет: покупки считаются по всем событиям, а просмотры товара на сайте с выборкой — оценкой, и отношение точного числа к оценке вводило бы в заблуждение.
  • Выборка. Если сайт превысил суточную квоту хитов, покупки, выручка и возвраты всё равно учитываются точно — по всем событиям. Просмотры товаров и добавления в корзину за такие сутки — оценка по выборке с весом 10.