← Назад к вопросам

Какую выберешь метрику описывающую завершение сделки между продавцом и покупателем?

2.3 Middle🔥 131 комментариев
#Метрики продукта

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Метрики Завершения Сделки на Маркетплейсе

Выбор метрики для описания завершения сделки между продавцом и покупателем — это ключевой вопрос для маркетплейсов (Авито, Яндекс.Маркет, Aliexpress). Расскажу о том, как я это анализирую и какие метрики использую.

Понимание "Завершения Сделки"

Сначала нужно уточнить, что означает "завершение сделки". На разных маркетплейсах это разное:

E-commerce маркетплейс (Яндекс.Маркет, Amazon):

  • Завершение = Заказ доставлен и оплачен

C2C маркетплейс (Авито, Авто.ру):

  • Завершение = Сделка совершена (товар куплен/продан)

Service маркетплейс (Яндекс.Услуги, Uber):

  • Завершение = Услуга выполнена и оплачена

В моём ответе я фокусирусь на e-commerce маркетплейсе, так как это наиболее распространённый случай.

Основная Метрика: Order Completion Rate

Это самая важная метрика для описания завершения сделки.

SELECT 
  DATE_TRUNC('day', order_date)::date as date,
  COUNT(*) as total_orders,
  COUNT(CASE WHEN order_status = 'delivered' AND payment_status = 'paid' THEN 1 END) as completed_orders,
  COUNT(CASE WHEN order_status = 'delivered' AND payment_status = 'paid' THEN 1 END) * 100.0 / COUNT(*) as completion_rate
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE_TRUNC('day', order_date)
ORDER BY date;

Что измеряет:

  • Процент заказов, которые успешно доставлены и оплачены

Хороший уровень:

  • E-commerce: 85-95% (теряются на доставке, возвратах, отменах)
  • Marketplace: 80-90% (больше переменных в логистике)

Почему только Completion Rate недостаточно?

Если смотреть только на эту метрику, пропустим важные детали:

Пример: Completion Rate = 87%, кажется, хорошо. Но где заказы теряются?

-- Детальный breakdown
SELECT 
  order_status,
  payment_status,
  COUNT(*) as count,
  COUNT(*) * 100.0 / (SELECT COUNT(*) FROM orders) as percentage
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY order_status, payment_status
ORDER BY count DESC;

Результат (пример):

order_status | payment_status | count | percentage
---------------------------------------------------
delivered    | paid           | 8700  | 87%        ← Успешные сделки
delivered    | pending        | 500   | 5%         ← Доставлены, но не оплачены
cancelled    | cancelled      | 400   | 4%         ← Отменены
returned     | refunded       | 300   | 3%         ← Возвраты
lost         | paid           | 100   | 1%         ← Потеряны в доставке

Это открывает глаза! Нужны производные метрики.

Система Метрик Для Полной Картины

1. Conversion Rate (от просмотра к заказу)

SELECT 
  COUNT(DISTINCT CASE WHEN order_created = 1 THEN user_id END) * 100.0 / COUNT(DISTINCT user_id) as orders_conversion
FROM user_product_views;

Это отвечает на вопрос: сколько % пользователей сделали хотя бы одну попытку покупки?

2. Payment Success Rate (от создания заказа к платежу)

SELECT 
  COUNT(CASE WHEN payment_status = 'paid' THEN 1 END) * 100.0 / COUNT(*) as payment_success_rate
FROM orders;

Это показывает, скольким заказам удаётся пройти платёж. Типичные потери:

  • Declined cards (3-5%)
  • Timeout (2-3%)
  • User abandoned (5-10%)

3. Delivery Success Rate (доставка без проблем)

SELECT 
  COUNT(CASE WHEN delivery_status = 'delivered_without_issues' THEN 1 END) * 100.0 / COUNT(CASE WHEN delivery_status IS NOT NULL THEN 1 END) as delivery_success_rate,
  COUNT(CASE WHEN delivery_status = 'lost' THEN 1 END) * 100.0 / COUNT(*) as lost_rate,
  COUNT(CASE WHEN delivery_status = 'damaged' THEN 1 END) * 100.0 / COUNT(*) as damaged_rate
FROM order_deliveries
WHERE delivery_date >= CURRENT_DATE - INTERVAL '30 days';

4. Return Rate (возвраты после доставки)

SELECT 
  COUNT(CASE WHEN return_initiated = 1 THEN 1 END) * 100.0 / COUNT(CASE WHEN delivery_status = 'delivered' THEN 1 END) as return_rate,
  AVG(DATEDIFF(day, delivery_date, return_date)) as avg_days_to_return
FROM order_returns;

Высокий return rate — признак проблем с качеством товара или соответствием описанию.

5. Order Fulfillment Time

SELECT 
  PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY DATEDIFF(day, order_date, delivery_date)) as median_days_to_deliver,
  PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY DATEDIFF(day, order_date, delivery_date)) as p90_days_to_deliver,
  PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY DATEDIFF(day, order_date, delivery_date)) as p95_days_to_deliver
FROM orders
WHERE order_status = 'delivered';

Средняя доставка может быть 5 дней, но 5% клиентов ждут 20 дней. Это различие важно для UX.

Моя Рекомендация: Используй Funnel Metrics

Для полного понимания завершения сделки, я рекомендую смотреть весь funnel:

WITH funnel AS (
  SELECT 
    'Total Products Viewed' as step,
    COUNT(DISTINCT user_id) as count
  FROM product_views
  
  UNION ALL
  
  SELECT 
    'Orders Created' as step,
    COUNT(DISTINCT user_id) as count
  FROM orders
  
  UNION ALL
  
  SELECT 
    'Payments Attempted' as step,
    COUNT(DISTINCT order_id) as count
  FROM payment_events
  WHERE event = 'payment_started'
  
  UNION ALL
  
  SELECT 
    'Payments Successful' as step,
    COUNT(DISTINCT order_id) as count
  FROM payment_events
  WHERE event = 'payment_completed'
  
  UNION ALL
  
  SELECT 
    'Orders Shipped' as step,
    COUNT(DISTINCT order_id) as count
  FROM orders
  WHERE shipment_date IS NOT NULL
  
  UNION ALL
  
  SELECT 
    'Orders Delivered' as step,
    COUNT(DISTINCT order_id) as count
  FROM orders
  WHERE delivery_date IS NOT NULL
  
  UNION ALL
  
  SELECT 
    'Completed (No Returns)' as step,
    COUNT(DISTINCT order_id) as count
  FROM orders
  WHERE order_status = 'delivered' 
    AND return_initiated = 0
    AND DATEDIFF(day, delivery_date, CURRENT_DATE) > 14
)
SELECT 
  ROW_NUMBER() OVER (ORDER BY 
    CASE step 
      WHEN 'Total Products Viewed' THEN 1
      WHEN 'Orders Created' THEN 2
      WHEN 'Payments Attempted' THEN 3
      WHEN 'Payments Successful' THEN 4
      WHEN 'Orders Shipped' THEN 5
      WHEN 'Orders Delivered' THEN 6
      WHEN 'Completed (No Returns)' THEN 7
    END) as step_number,
  step,
  count,
  LAG(count) OVER (ORDER BY step_number) as prev_step_count,
  count * 100.0 / LAG(count) OVER (ORDER BY step_number) as step_conversion_pct
FROM funnel;

Пример output:

step_number | step                    | count  | prev_count | conversion
------------------------------------------------------------------------
1           | Total Products Viewed   | 100000 | NULL       | NULL
2           | Orders Created          | 8000   | 100000     | 8.0%
3           | Payments Attempted      | 7500   | 8000       | 93.8%
4           | Payments Successful     | 7200   | 7500       | 96.0%
5           | Orders Shipped          | 7000   | 7200       | 97.2%
6           | Orders Delivered        | 6800   | 7000       | 97.1%
7           | Completed (No Returns)  | 6500   | 6800       | 95.6%

Этот funnel показывает, где именно теряются сделки:

  • 92% падение от просмотра к заказу (самое большое)
  • 4% падение на платежах
  • 2.9% потеря при доставке
  • 4.4% возвраты

Дополнительные Метрики Для Маркетплейса

Seller Fulfillment Rate

Для маркетплейса важно, насколько хорошо продавцы выполняют заказы:

SELECT 
  seller_id,
  COUNT(*) as total_orders,
  COUNT(CASE WHEN delivered_on_time = 1 THEN 1 END) * 100.0 / COUNT(*) as on_time_rate,
  AVG(CASE WHEN order_status = 'delivered' AND return_initiated = 0 THEN 1 ELSE 0 END) * 100 as successful_delivery_rate,
  AVG(seller_rating) as avg_rating
FROM seller_orders
GROUP BY seller_id
ORDER BY total_orders DESC;

Net Revenue (После возвратов и комиссий)

SELECT 
  DATE_TRUNC('month', order_date)::date as month,
  SUM(order_value) as gmv,
  SUM(order_value) * marketplace_commission_pct as marketplace_revenue,
  SUM(COALESCE(refund_amount, 0)) as refunds,
  SUM(order_value) * marketplace_commission_pct - SUM(COALESCE(refund_amount * marketplace_commission_pct, 0)) as net_revenue
FROM orders
GROUP BY month;

Мой Финальный Выбор: "Successful Transaction Rate"

Если нужна ОДНА метрика для завершения сделки между продавцом и покупателем, я выбираю:

Successful Transaction Rate = Доставленные и оплаченные заказы без возвратов / Все заказы * 100%

SELECT 
  COUNT(CASE WHEN 
    order_status = 'delivered' 
    AND payment_status = 'paid'
    AND return_initiated = 0
    AND DATEDIFF(day, delivery_date, CURRENT_DATE) > 14 -- Return window expired
  THEN 1 END) * 100.0 / COUNT(*) as successful_transaction_rate
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days';

Почему эта метрика лучше:

  1. Включает весь жизненный цикл: заказ → оплата → доставка → отсутствие возвратов
  2. Показывает реальное завершение сделки (не абстрактное)
  3. Учитывает возвраты (которые в реальности отменяют сделку)
  4. Просто и интерпретируется: "87% сделок завершаются успешно"

Мониторинг Метрики

# Dashboard для мониторинга
metrics = {
    'Successful Transaction Rate': 87.2,
    'Payment Success Rate': 96.0,
    'Delivery Success Rate': 97.1,
    'Return Rate': 4.4,
    'Median Days to Deliver': 5,
    'Seller Rating (Avg)': 4.6,
}

# Alerts
if metrics['Successful Transaction Rate'] < 85:
    send_alert("Warning: STR below 85%")
if metrics['Return Rate'] > 5:
    send_alert("Warning: Return rate above 5%")

Эта система метрик позволяет быстро диагностировать проблемы и понимать, на какие области фокусировать внимание при оптимизации маркетплейса.

Какую выберешь метрику описывающую завершение сделки между продавцом и покупателем? | PrepBro