🛍️ Интернет-магазин

Полное руководство по настройке аналитики для интернет-магазина: отслеживание товаров, корзины, заказов, воронка продаж и анализ покупательского поведения

🎯 Что вы получите
  • Полную картину пути покупателя от просмотра до покупки
  • Анализ воронки продаж и конверсии на каждом шаге
  • Данные о популярных товарах и категориях
  • Информацию о повторных покупках и LTV клиентов
  • Географию продаж и распределение по устройствам

Типовая воронка интернет-магазина

👀
Просмотр
product_view
🛒
Корзина
add_to_cart
📝
Оформление
checkout_start
💰
Покупка
purchase

Какие события отправлять

Событие Описание Обязательность Ключевые свойства
page_view Просмотр любой страницы сайта Рекомендуется page, title, referrer
product_view Просмотр карточки товара Обязательно для воронки product_id, name, price, category
add_to_cart Добавление товара в корзину Обязательно для воронки product_id, price, quantity
remove_from_cart Удаление товара из корзины Опционально product_id
checkout_start Начало оформления заказа Обязательно для воронки cart_id, total
purchase Успешная оплата заказа Обязательно order_id, revenue, items

Метаданные для интернет-магазина

// Просмотр товара (шаг 1 воронки)
{
  "event": "product_view",
  "user_id": "user_123",
  "properties": {
    "product_id": "prod_456",
    "product_name": "Футболка Oversize",
    "price": 1999,
    "category": "Одежда",
    "brand": "Brand Name"
  },
  "_metadata": {
    "funnel_sales_step": 1,
    "funnel_sales_name": "Просмотр товара",
    "event_display_name": "Просмотр товара",
    "event_color": "#2A6DF4"
  }
}

// Добавление в корзину (шаг 2 воронки)
{
  "event": "add_to_cart",
  "user_id": "user_123",
  "properties": {
    "product_id": "prod_456",
    "product_name": "Футболка Oversize",
    "price": 1999,
    "quantity": 2,
    "cart_id": "cart_789"
  },
  "_metadata": {
    "funnel_sales_step": 2,
    "funnel_sales_name": "Корзина",
    "event_display_name": "Добавление в корзину",
    "event_color": "#fd7e14"
  }
}

// Покупка (шаг 4 воронки)
{
  "event": "purchase",
  "user_id": "user_123",
  "timestamp": "2026-03-19T15:30:00Z",
  "properties": {
    "order_id": "ORD-2025-001",
    "revenue": 5499,
    "items": [
      {
        "id": "prod_456",
        "name": "Футболка Oversize",
        "price": 1999,
        "quantity": 2,
        "category": "Одежда"
      },
      {
        "id": "prod_789",
        "name": "Джинсы",
        "price": 3500,
        "quantity": 1,
        "category": "Одежда"
      }
    ]
  },
  "_metadata": {
    "funnel_sales_step": 4,
    "funnel_sales_name": "Покупка",
    "event_display_name": "Покупка",
    "event_color": "#28a745",
    "is_order": true,
    "order_revenue_field": "revenue",
    "order_id_field": "order_id",
    "order_items_field": "items"
  }
}

Ключевые метрики для интернет-магазина

💰 Выручка и заказы

  • Общая выручка — сумма всех заказов за период
  • Количество заказов — число успешных покупок
  • Средний чек (AOV) — средняя сумма одного заказа
  • Динамика по дням/неделям/месяцам — графики выручки

📊 Воронка продаж

  • Конверсия из просмотра в корзину — % добавлений
  • Конверсия из корзины в оформление — % начавших оформление
  • Конверсия в покупку — % завершенных заказов
  • Брошенные корзины — где теряем покупателей

👥 Клиенты

  • Новые vs вернувшиеся — соотношение покупателей
  • Повторные покупки — % клиентов с >1 заказом
  • LTV (Lifetime Value) — сколько приносит клиент за все время
  • География — распределение по странам и городам

📦 Товары

  • Популярные товары — топ по количеству продаж
  • Популярные категории — какие категории лидируют
  • Товары с высоким отказом — часто добавляют, но не покупают
  • Cross-sell — что покупают вместе

Атрибуты клиентов для e-commerce

Сохраняйте информацию о покупателях для сегментации и персонализации:

{
  "event": "user_data",
  "user_id": "user_123",
  "attributes": {
    "email": "customer@example.com",
    "phone": "+79001234567",
    "name": "Иван Петров",
    "birth_date": "1990-01-01",
    "city": "Москва",
    "address": "ул. Ленина, д. 1, кв. 1",
    "total_orders": 23,
    "total_spent": 156000,
    "avg_order_value": 6782,
    "last_order_date": "2026-03-15",
    "preferred_category": "Электроника",
    "loyalty_level": "gold",
    
    "_metadata": {
      "email": {
        "attribute_display_name": "Email",
        "attribute_category": "Контакты"
      },
      "phone": {
        "attribute_display_name": "Телефон",
        "attribute_category": "Контакты"
      },
      "total_spent": {
        "attribute_display_name": "Всего потрачено",
        "attribute_category": "Финансы",
        "attribute_format": "currency"
      },
      "avg_order_value": {
        "attribute_display_name": "Средний чек",
        "attribute_category": "Финансы",
        "attribute_format": "currency"
      },
      "loyalty_level": {
        "attribute_display_name": "Уровень лояльности",
        "attribute_category": "Лояльность",
        "attribute_color": "#fd7e14"
      }
    }
  }
}

Анализ товаров

Для детального анализа товаров передавайте массив items в событии покупки. Это позволит получить:

Пример данных о товарах

Футболка Oversize

1 999 ₽
Одежда
Продано: 156 шт Выручка: 311 844 ₽

Джинсы

3 500 ₽
Одежда
Продано: 89 шт Выручка: 311 500 ₽

Наушники

2 990 ₽
Электроника
Продано: 67 шт Выручка: 200 330 ₽

Пример полной интеграции на JavaScript

class EcommerceTracker {
  constructor(apiKey, sessionId) {
    this.apiKey = apiKey;
    this.apiUrl = 'https://api.instantbase.online/v1/track';
    this.sessionId = sessionId || this.generateSessionId();
    this.userId = null;
  }
  
  generateSessionId() {
    return 'sess_' + Math.random().toString(36).substr(2, 9);
  }
  
  setUserId(userId) {
    this.userId = userId;
  }
  
  async track(event, properties = {}, metadata = {}) {
    const data = {
      event,
      timestamp: new Date().toISOString(),
      session_id: this.sessionId,
      properties
    };
    
    if (this.userId) {
      data.user_id = this.userId;
    } else {
      data.anonymous_id = this.sessionId;
    }
    
    if (Object.keys(metadata).length > 0) {
      data._metadata = metadata;
    }
    
    try {
      const response = await fetch(this.apiUrl, {
        method: 'POST',
        headers: {
          'X-API-Key': this.apiKey,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
      });
      
      return await response.json();
    } catch (error) {
      console.error('Failed to track event:', error);
    }
  }
  
  // Просмотр страницы
  trackPageView(page, title, referrer) {
    return this.track('page_view', {
      page,
      title,
      referrer: referrer || document.referrer
    });
  }
  
  // Просмотр товара
  trackProductView(product) {
    return this.track('product_view', {
      product_id: product.id,
      product_name: product.name,
      price: product.price,
      category: product.category,
      brand: product.brand
    }, {
      funnel_sales_step: 1,
      funnel_sales_name: 'Просмотр товара'
    });
  }
  
  // Добавление в корзину
  trackAddToCart(product, quantity = 1) {
    return this.track('add_to_cart', {
      product_id: product.id,
      product_name: product.name,
      price: product.price,
      quantity,
      cart_id: this.cartId
    }, {
      funnel_sales_step: 2,
      funnel_sales_name: 'Корзина'
    });
  }
  
  // Начало оформления заказа
  trackCheckoutStart(cartId, total) {
    this.cartId = cartId;
    return this.track('checkout_start', {
      cart_id: cartId,
      total
    }, {
      funnel_sales_step: 3,
      funnel_sales_name: 'Оформление'
    });
  }
  
  // Покупка
  trackPurchase(order) {
    return this.track('purchase', {
      order_id: order.id,
      revenue: order.total,
      items: order.items
    }, {
      funnel_sales_step: 4,
      funnel_sales_name: 'Покупка',
      is_order: true
    });
  }
  
  // Регистрация пользователя (склейка профилей)
  trackSignup(userId, userData) {
    this.setUserId(userId);
    return this.track('signup', {}, {
      is_activation: true
    }, {
      email: userData.email,
      name: userData.name,
      phone: userData.phone
    });
  }
}

// Использование
const tracker = new EcommerceTracker('your_api_key');

// На странице товара
tracker.trackProductView({
  id: 'prod_456',
  name: 'Футболка Oversize',
  price: 1999,
  category: 'Одежда'
});

// При добавлении в корзину
tracker.trackAddToCart({
  id: 'prod_456',
  name: 'Футболка Oversize',
  price: 1999
}, 2);

// При оформлении заказа
tracker.trackCheckoutStart('cart_789', 5499);

// После покупки
tracker.trackPurchase({
  id: 'ORD-001',
  total: 5499,
  items: [
    { id: 'prod_456', name: 'Футболка Oversize', price: 1999, quantity: 2 },
    { id: 'prod_789', name: 'Джинсы', price: 3500, quantity: 1 }
  ]
});

Интеграция с популярными CMS

WooCommerce (WordPress)

<?php
// Добавьте в functions.php вашей темы

function track_purchase_woocommerce($order_id) {
    $order = wc_get_order($order_id);
    $api_key = get_option('instantbase_api_key');
    
    $items = [];
    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        $items[] = [
            'id' => $product->get_id(),
            'name' => $product->get_name(),
            'price' => $product->get_price(),
            'quantity' => $item->get_quantity(),
            'category' => wp_get_post_terms($product->get_id(), 'product_cat')[0]->name ?? ''
        ];
    }
    
    $data = [
        'event' => 'purchase',
        'user_id' => $order->get_user_id() ?: 'guest_' . $order->get_billing_email(),
        'properties' => [
            'order_id' => $order_id,
            'revenue' => $order->get_total(),
            'items' => $items
        ],
        '_metadata' => [
            'is_order' => true
        ]
    ];
    
    wp_remote_post('https://api.instantbase.online/v1/track', [
        'headers' => [
            'X-API-Key' => $api_key,
            'Content-Type' => 'application/json'
        ],
        'body' => json_encode($data)
    ]);
}
add_action('woocommerce_thankyou', 'track_purchase_woocommerce');
?>

Magento 2

// В вашем модуле Magento 2

public function afterPlaceOrder($order)
{
    $apiKey = $this->config->getValue('instantbase/api_key');
    
    $items = [];
    foreach ($order->getItems() as $item) {
        $items[] = [
            'id' => $item->getProductId(),
            'name' => $item->getName(),
            'price' => $item->getPrice(),
            'quantity' => $item->getQtyOrdered(),
            'category' => $this->getCategoryName($item->getProductId())
        ];
    }
    
    $data = [
        'event' => 'purchase',
        'user_id' => $order->getCustomerId() ?: 'guest_' . $order->getCustomerEmail(),
        'properties' => [
            'order_id' => $order->getIncrementId(),
            'revenue' => $order->getGrandTotal(),
            'items' => $items
        ],
        '_metadata' => ['is_order' => true]
    ];
    
    $this->httpClient->post('https://api.instantbase.online/v1/track', [
        'headers' => ['X-API-Key' => $apiKey],
        'json' => $data
    ]);
}

Анализ брошенных корзин

Для анализа брошенных корзин отслеживайте:

  1. Создание корзины — когда пользователь добавляет первый товар
  2. Обновления корзины — добавление/удаление товаров
  3. Начало оформления — переход к оформлению
  4. Завершение заказа — покупка

Клиенты, которые добавили товары в корзину, но не купили — ваша целевая аудитория для ретаргетинга.

📊 Сегмент для ретаргетинга:
Пользователи с событием add_to_cart за последние 7 дней
БЕЗ события purchase за тот же период

Дашборды для интернет-магазина

После настройки интеграции вы получите готовые дашборды:

Часто задаваемые вопросы

Как отслеживать промокоды и скидки?

Добавьте поля promo_code, discount в свойства события purchase:

"properties": {
  "order_id": "ORD-001",
  "revenue": 4499,
  "original_total": 5499,
  "discount": 1000,
  "promo_code": "WELCOME10"
}

Как отслеживать возвраты и отмены?

Отправляйте отдельное событие order_refunded с теми же метаданными, но с отрицательной выручкой, или используйте поле status:

{
  "event": "order_updated",
  "properties": {
    "order_id": "ORD-001",
    "status": "refunded",
    "refund_amount": 5499
  },
  "_metadata": {
    "is_order": true
  }
}

Рекомендации

  • Начинайте с ключевых событий — purchase, add_to_cart, product_view
  • Всегда передавайте revenue — для корректного расчета выручки
  • Используйте items для детализации товаров — это включит аналитику по товарам
  • Сохраняйте атрибуты клиентов — email, телефон, имя для ретаргетинга
  • Тестируйте на тестовых ключах — перед запуском в продакшн
  • Анализируйте воронку регулярно — ищите точки оттока и улучшайте их

Что дальше?

☁️ SaaS-сервис

Аналитика для подписочных сервисов

Перейти →

🎮 Игры

Аналитика для игровых проектов

Перейти →

Нужна помощь с настройкой e-commerce аналитики?

Напишите нам, и мы поможем настроить интеграцию под ваш магазин

support@instantbase.online Telegram