Surrika

Юнит-экономика Ozon и Wildberries по артикулам

Юнит-экономика показывает, сколько остается с каждой проданной единицы после комиссии, логистики, себестоимости и рекламы. Для Ozon и Wildberries считайте показатель по каждому артикулу за последний месяц, потому что тарифы площадок меняются.

Маркетплейсы

Как считать

  1. Берем продажи за последний месяц по Ozon и Wildberries и суммируем штуки, выручку, комиссию, логистику и себестоимость по каждому артикулу.
  2. Расход на продвижение собираем по категориям за тот же месяц и делим на проданные штуки категории, затем переносим на артикулы.
  3. Из цены единицы вычитаем комиссию, логистику, себестоимость и рекламу на единицу.
  4. Возвраты показываем отдельной долей, чтобы видеть артикулы с повышенной обратной логистикой.
  5. Сравниваем прибыль на единицу по каналам и показываем артикулы с худшей экономикой.

Расчет на выгрузках магазина

Пример посчитан на выгрузках вымышленного мебельного магазина: продажи сайта и трех маркетплейсов, реклама, сделки CRM и остатки за 2024-2025 годы.

Как посчитать юнит-экономику на Ozon и Wildberries по каждому артикулу за последний месяц и увидеть, какие товары приносят прибыль, а какие убыток?

Вымышленный мебельный магазин: юнит-экономика артикулов на Ozon и Wildberries

Продано, шт. Реклама на единицу, руб. Доля возвратов Артикул и канал Себестоимость на единицу, руб. Цена за единицу, руб. Прибыль на единицу, руб. Логистика на единицу, руб. Комиссия на единицу, руб.
159 385,47 ₽ 11,3 % Wildberries / OS-503 1 952 ₽ 3 075 ₽ -180,38 ₽ 180 ₽ 738,03 ₽
86 738,78 ₽ 11,6 % Ozon / SH-403 4 740 ₽ 7 602 ₽ 7,18 ₽ 520 ₽ 1 597 ₽
127 130,02 ₽ 12,6 % Ozon / OS-503 1 952 ₽ 3 065 ₽ 159,46 ₽ 180 ₽ 643,68 ₽
175 0 ₽ 8 % Wildberries / KU-303 2 842 ₽ 4 753 ₽ 450 ₽ 320 ₽ 1 141 ₽
89 385,47 ₽ 9 % Wildberries / OS-502 3 584 ₽ 6 166 ₽ 456,53 ₽ 260 ₽ 1 480 ₽
87 0 ₽ 3,5 % Wildberries / SH-403 4 740 ₽ 7 597 ₽ 513,55 ₽ 520 ₽ 1 823 ₽
139 0 ₽ 8,6 % Ozon / KU-303 2 842 ₽ 4 670 ₽ 527,2 ₽ 320 ₽ 980,67 ₽
67 130,02 ₽ 6 % Ozon / OS-502 3 584 ₽ 6 141 ₽ 877,18 ₽ 260 ₽ 1 290 ₽
37 738,78 ₽ 2,7 % Ozon / SH-402 7 095 ₽ 12 443 ₽ 1 096 ₽ 900 ₽ 2 613 ₽
34 1 233 ₽ 2,9 % Ozon / KR-203 10 584 ₽ 18 073 ₽ 1 261 ₽ 1 200 ₽ 3 795 ₽
59 385,47 ₽ 5,1 % Wildberries / OS-501 5 247 ₽ 9 553 ₽ 1 348 ₽ 280 ₽ 2 293 ₽
54 0 ₽ 9,3 % Wildberries / SH-402 7 095 ₽ 12 461 ₽ 1 476 ₽ 900 ₽ 2 991 ₽
54 130,02 ₽ 7,4 % Ozon / OS-501 5 247 ₽ 9 489 ₽ 1 839 ₽ 280 ₽ 1 993 ₽
21 2 133 ₽ 4,8 % Wildberries / DV-103 21 945 ₽ 36 938 ₽ 1 895 ₽ 2 100 ₽ 8 865 ₽
41 0 ₽ 9,8 % Wildberries / KR-203 10 584 ₽ 18 125 ₽ 1 991 ₽ 1 200 ₽ 4 350 ₽
25 0 ₽ 12 % Wildberries / KU-302 13 446 ₽ 23 417 ₽ 2 851 ₽ 1 500 ₽ 5 620 ₽
35 2 133 ₽ 2,9 % Wildberries / DV-102 23 595 ₽ 41 187 ₽ 3 274 ₽ 2 300 ₽ 9 885 ₽
17 0 ₽ 0 % Ozon / KU-302 13 446 ₽ 23 973 ₽ 3 993 ₽ 1 500 ₽ 5 034 ₽
23 1 233 ₽ 4,4 % Ozon / KR-201 16 450 ₽ 31 374 ₽ 5 303 ₽ 1 800 ₽ 6 588 ₽
15 0 ₽ 6,7 % Ozon / DV-103 21 945 ₽ 37 218 ₽ 5 357 ₽ 2 100 ₽ 7 816 ₽
21 0 ₽ 4,8 % Wildberries / KR-201 16 450 ₽ 31 653 ₽ 5 806 ₽ 1 800 ₽ 7 597 ₽
26 0 ₽ 3,9 % Ozon / DV-102 23 595 ₽ 41 557 ₽ 6 935 ₽ 2 300 ₽ 8 727 ₽
11 0 ₽ 0 % Wildberries / SH-401 23 919 ₽ 45 024 ₽ 7 899 ₽ 2 400 ₽ 10 806 ₽
22 0 ₽ 0 % Wildberries / KR-202 20 335 ₽ 39 881 ₽ 8 074 ₽ 1 900 ₽ 9 571 ₽
18 1 233 ₽ 0 % Ozon / KR-202 20 335 ₽ 40 157 ₽ 8 256 ₽ 1 900 ₽ 8 433 ₽
16 738,78 ₽ 0 % Ozon / SH-401 23 919 ₽ 45 019 ₽ 8 507 ₽ 2 400 ₽ 9 454 ₽
12 2 133 ₽ 0 % Wildberries / DV-101 33 748 ₽ 61 955 ₽ 8 605 ₽ 2 600 ₽ 14 869 ₽
11 0 ₽ 0 % Ozon / DV-101 33 748 ₽ 61 817 ₽ 12 487 ₽ 2 600 ₽ 12 982 ₽
1 0 ₽ 0 % Ozon / KU-301 41 830 ₽ 86 450 ₽ 21 665 ₽ 4 800 ₽ 18 154 ₽

SQL, по которому посчитано

WITH last_month AS (
  SELECT date_trunc('month', max(date)) AS month_start
  FROM sales
),
sales_agg AS (
  SELECT
    s.channel,
    s.sku,
    s.category,
    SUM(s.units) AS units,
    SUM(s.revenue) AS revenue,
    SUM(s.commission) AS commission,
    SUM(s.logistics) AS logistics,
    SUM(s.cost_of_goods) AS cost_of_goods,
    SUM(s.returned_units) AS returned_units
  FROM sales s
  CROSS JOIN last_month lm
  WHERE s.channel IN ('Ozon', 'Wildberries')
    AND s.date >= lm.month_start
    AND s.date < lm.month_start + INTERVAL 1 MONTH
  GROUP BY 1, 2, 3
),
ads_month AS (
  SELECT
    CASE a.source
      WHEN 'Продвижение Ozon' THEN 'Ozon'
      WHEN 'Продвижение WB' THEN 'Wildberries'
    END AS channel,
    a.category,
    SUM(a.cost) AS ad_cost
  FROM ads a
  CROSS JOIN last_month lm
  WHERE a.source IN ('Продвижение Ozon', 'Продвижение WB')
    AND a.date >= lm.month_start
    AND a.date < lm.month_start + INTERVAL 1 MONTH
  GROUP BY 1, 2
),
category_units AS (
  SELECT channel, category, SUM(units) AS category_units
  FROM sales_agg
  GROUP BY 1, 2
),
channel_units AS (
  SELECT channel, SUM(units) AS channel_units
  FROM sales_agg
  GROUP BY 1
),
channel_shared_ads AS (
  SELECT channel, SUM(ad_cost) AS shared_ad_cost
  FROM ads_month
  WHERE category = 'Все'
  GROUP BY 1
),
ad_alloc AS (
  SELECT
    cu.channel,
    cu.category,
    COALESCE(am.ad_cost, 0) AS direct_ad_cost,
    COALESCE(csa.shared_ad_cost, 0) * cu.category_units / NULLIF(chu.channel_units, 0) AS shared_ad_cost,
    cu.category_units
  FROM category_units cu
  LEFT JOIN ads_month am
    ON am.channel = cu.channel
   AND am.category = cu.category
   AND am.category <> 'Все'
  LEFT JOIN channel_shared_ads csa ON csa.channel = cu.channel
  LEFT JOIN channel_units chu ON chu.channel = cu.channel
)
SELECT
  sa.channel || ' / ' || sa.sku AS sku_channel,
  sa.units AS units,
  ROUND(sa.revenue / NULLIF(sa.units, 0), 2) AS price_per_unit,
  ROUND(sa.commission / NULLIF(sa.units, 0), 2) AS commission_per_unit,
  ROUND(sa.logistics / NULLIF(sa.units, 0), 2) AS logistics_per_unit,
  ROUND(sa.cost_of_goods / NULLIF(sa.units, 0), 2) AS cogs_per_unit,
  ROUND((aa.direct_ad_cost + aa.shared_ad_cost) / NULLIF(aa.category_units, 0), 2) AS ad_per_unit,
  ROUND(
    (sa.revenue - sa.commission - sa.logistics - sa.cost_of_goods) / NULLIF(sa.units, 0)
    - (aa.direct_ad_cost + aa.shared_ad_cost) / NULLIF(aa.category_units, 0),
    2
  ) AS profit_per_unit,
  ROUND(sa.returned_units::DOUBLE / NULLIF(sa.units, 0), 4) AS return_rate
FROM sales_agg sa
JOIN ad_alloc aa
  ON aa.channel = sa.channel
 AND aa.category = sa.category
WHERE sa.units > 0
ORDER BY profit_per_unit ASC
LIMIT 30

Где взять цифры для юнит-экономики Ozon и Wildberries

Выручку, комиссию и логистику берите из отчетов о реализации в кабинетах Ozon и Wildberries. Себестоимость подтяните из складского учета или из закупочных документов на партию. Расход на продвижение возьмите из рекламных кабинетов площадок за тот же месяц. Если в отчете есть эквайринг, хранение и платная приемка, добавьте их к расходам на единицу.

Почему реклама на единицу искажает юнит-экономику Ozon и Wildberries

В рекламных кабинетах расход часто привязан к категории или кампании. Отдельного артикула в отчете может не быть. Делите расход на продвижение на штуки категории за тот же месяц и переносите на артикулы внутри категории. Если разнести рекламу по одному артикулу, он заберет чужой расход и покажет ложный убыток. Сравнивайте рекламу на единицу с прибылью до рекламы, чтобы видеть вклад продвижения.

Как читать юнит-экономику по артикулам на Ozon и Wildberries

Сравнивайте прибыль на единицу внутри канала, чтобы не смешивать условия площадок. Отрицательное значение показывает, что расходы на единицу больше цены продажи. Возвраты увеличивают логистику на проданную единицу, поэтому артикулы с высокой долей возвратов считайте отдельно. Начните с убыточных артикулов и проверьте цену после скидок, комиссию, логистику и рекламу. Если убыток остается, поднимите цену, смените схему доставки или уберите товар из продвижения.

Частые ошибки

Себестоимость последней закупки

Если считать всю проданную единицу по цене новой партии, прибыль на единицу искажается. Берите себестоимость партии, из которой списан товар.

Общая прибыль вместо прибыли на единицу

Суммарная прибыль по артикулу зависит от объема продаж. Для решения о цене и продвижении нужна прибыль на единицу, иначе крупный оборот скрывает убыточную единицу.

Вопросы

Нужно ли включать налог в юнит-экономику?

Для чистой прибыли налог добавляют отдельно. В прибыль на единицу до налога его не включают, чтобы сравнивать артикулы по операционным расходам.

Что считать единицей в юнит-экономике мебели?

Проданный товар, например диван или шкаф. Комплект из нескольких позиций делите на отдельные артикулы.

Можно ли считать юнит-экономику за квартал?

Да, квартал подходит, если комиссии и логистика не менялись внутри периода. Для сравнения берите одинаковые периоды.

Метрики на этой странице

Посчитайте это на своих выгрузках

Бросьте выгрузки на доску Surrika и задайте вопрос обычными словами. Ответ придет графиком, а под ним будет SQL, по которому он посчитан.

14 дней бесплатно, карта не нужна.

По теме

Все задачи