Surrika

ROMI по источникам рекламы: как считать окупаемость каналов

ROMI по источнику рекламы показывает, сколько валовой прибыли принес каждый рубль расхода сверх этого рубля. Сравнивайте источники на одной базе себестоимости, тогда цифры показывают разницу в окупаемости.

Реклама

Как считать

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

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

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

Как посчитать ROMI по источникам рекламы за месяц и понять, какие каналы окупаются, а какие работают в минус?

ROMI по источникам рекламы за последний месяц

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

WITH
period AS (
    SELECT date_trunc('month', max(date))::DATE AS month_start
    FROM ads
),
source_channel(source, channel) AS (
    VALUES
        ('Яндекс Директ', 'Сайт'),
        ('VK Реклама', 'Сайт'),
        ('Продвижение WB', 'Wildberries'),
        ('Продвижение Ozon', 'Ozon')
),
sales_cat AS (
    SELECT
        s.channel,
        s.category,
        SUM(s.revenue - COALESCE(s.returned_revenue, 0)) AS net_revenue,
        SUM(s.cost_of_goods) AS cogs
    FROM sales s
    CROSS JOIN period p
    WHERE s.date >= p.month_start
      AND s.date < (p.month_start + INTERVAL 1 MONTH)::DATE
    GROUP BY s.channel, s.category
),
sales_channel AS (
    SELECT
        channel,
        SUM(net_revenue) AS net_revenue,
        SUM(cogs) AS cogs
    FROM sales_cat
    GROUP BY channel
),
margin_cat AS (
    SELECT
        channel,
        category,
        CASE WHEN net_revenue > 0 THEN cogs / net_revenue ELSE 0 END AS cogs_share
    FROM sales_cat
),
margin_channel AS (
    SELECT
        channel,
        CASE WHEN net_revenue > 0 THEN cogs / net_revenue ELSE 0 END AS cogs_share
    FROM sales_channel
),
ads_agg AS (
    SELECT
        a.source,
        a.category,
        SUM(a.cost) AS cost,
        SUM(a.revenue) AS revenue
    FROM ads a
    CROSS JOIN period p
    WHERE a.date >= p.month_start
      AND a.date < (p.month_start + INTERVAL 1 MONTH)::DATE
    GROUP BY a.source, a.category
),
ads_profit AS (
    SELECT
        a.source,
        SUM(a.cost) AS cost,
        SUM(a.revenue) AS revenue,
        SUM(a.revenue * (1 - COALESCE(mc.cogs_share, mch.cogs_share, 0))) AS gross_profit
    FROM ads_agg a
    JOIN source_channel sc ON sc.source = a.source
    LEFT JOIN margin_cat mc ON mc.channel = sc.channel AND mc.category = a.category
    LEFT JOIN margin_channel mch ON mch.channel = sc.channel
    GROUP BY a.source
)
SELECT
    source,
    round(cost, 0) AS cost_rub,
    round(revenue, 0) AS revenue_rub,
    round(gross_profit, 0) AS gross_profit_rub,
    CASE WHEN cost > 0 THEN round((gross_profit - cost) / cost, 4) ELSE NULL END AS romi
FROM ads_profit
ORDER BY romi DESC NULLS LAST

Как считать ROMI по источникам рекламы

ROMI = (валовая прибыль от рекламы минус расход на рекламу) / расход на рекламу × 100%. Валовая прибыль это выручка с рекламы минус себестоимость проданного. Расход и выручку берите за один и тот же месяц, иначе источники окажутся в разных условиях.

Где взять данные для ROMI по рекламным источникам

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

Чем ROMI по источникам отличается от ROAS

ROAS считает выручку на рубль расхода, поэтому высокая выручка при низкой марже выглядит как успех. ROMI считает валовую прибыль сверх расхода и показывает, что остается после себестоимости. Если подставить выручку вместо прибыли, реклама покажется прибыльнее, чем есть.

Как читать ROMI по источникам рекламы

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

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

Разные окна атрибуции

В рекламном кабинете выручка приписана кампании по клику или заказу, а сделка в учете может закрыться позже. Если у источников разные окна атрибуции, ROMI сравнивает несопоставимые периоды. Зафиксируйте одно окно для всех источников.

Расход с НДС

В рекламном кабинете расход обычно указан без НДС. Если добавить НДС к расходу, ROMI занизится, и источник может показаться убыточным. Берите расход в той же базе, что и выручку.

Вопросы

Можно ли считать ROMI по источникам рекламы по кампаниям?

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

Нужно ли учитывать комиссию маркетплейса в ROMI?

В ROMI комиссия площадки не участвует: считается валовая прибыль после себестоимости. Комиссию и логистику смотрите отдельно, когда оцениваете прибыль после всех расходов на продажу.

С какой периодичностью считать ROMI по источникам рекламы?

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

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

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

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

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

По теме

Все задачи