Surrika

CPM по кампаниям: как растет стоимость показов месяц к месяцу

CPM показывает, сколько рублей стоит тысяча показов рекламы. Чтобы увидеть рост по кампаниям, сравните два соседних месяца и посмотрите, у каких кампаний стоимость тысячи показов выросла сильнее. Кампании с сильным ростом проверяйте по ставкам, аукциону и качеству трафика.

Реклама

Как считать

  1. Сравниваем два соседних месяца по каждой кампании.
  2. Для каждого месяца суммируем расход и показы.
  3. Делим расход на показы и умножаем на 1000, получаем CPM.
  4. Изменение считаем как отношение CPM нового месяца к прошлому минус единица.
  5. Кампании без показов или без расхода в одном из месяцев в сравнение не попадают.

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

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

Как посчитать рост CPM по кампаниям месяц к месяцу и понять, у каких кампаний стоимость тысячи показов выросла сильнее?

CPM по кампаниям месяц к месяцу, вымышленный мебельный магазин

Кампания Рост CPM CPM последнего месяца, руб. CPM прошлого месяца, руб.
Поиск Кровати 9,2 % 2 724 ₽ 2 495 ₽
VK Диваны 4,9 % 193,69 ₽ 184,62 ₽
Поиск Диваны 4,5 % 3 358 ₽ 3 214 ₽
WB Диваны 3,6 % 1 447 ₽ 1 397 ₽
VK Освещение 2,6 % 149,92 ₽ 146,16 ₽
РСЯ Диваны 2,2 % 133,63 ₽ 130,77 ₽
Бренд 1,2 % 817,85 ₽ 807,92 ₽
Ozon Шкафы 0,2 % 1 112 ₽ 1 110 ₽
РСЯ Шкафы -0,4 % 108,44 ₽ 108,89 ₽
Ретаргетинг -1,8 % 1 588 ₽ 1 617 ₽
WB Освещение -4,2 % 880,83 ₽ 919,29 ₽
VK Кухни -4,9 % 199,23 ₽ 209,41 ₽
Ozon Кровати -8,4 % 1 107 ₽ 1 208 ₽
Ozon Освещение -9,5 % 556,22 ₽ 614,33 ₽
Поиск Кухни -9,5 % 3 808 ₽ 4 208 ₽

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

WITH bounds AS (
    SELECT CAST(date_trunc('month', max(date)) AS DATE) AS last_month_start,
           CAST(date_trunc('month', max(date)) - INTERVAL '1 month' AS DATE) AS prev_month_start,
           CAST(date_trunc('month', max(date)) - INTERVAL '2 months' AS DATE) AS quarter_start
    FROM ads
),
monthly AS (
    SELECT a.campaign,
           CAST(date_trunc('month', a.date) AS DATE) AS month,
           SUM(a.cost) AS cost,
           SUM(a.impressions) AS impressions
    FROM ads a
    CROSS JOIN bounds b
    WHERE a.date >= b.quarter_start
      AND a.date < CAST(b.last_month_start + INTERVAL '1 month' AS DATE)
    GROUP BY a.campaign, CAST(date_trunc('month', a.date) AS DATE)
),
pivoted AS (
    SELECT m.campaign,
           MAX(CASE WHEN m.month = b.prev_month_start THEN m.cost END) AS prev_cost,
           MAX(CASE WHEN m.month = b.prev_month_start THEN m.impressions END) AS prev_impressions,
           MAX(CASE WHEN m.month = b.last_month_start THEN m.cost END) AS last_cost,
           MAX(CASE WHEN m.month = b.last_month_start THEN m.impressions END) AS last_impressions
    FROM monthly m
    CROSS JOIN bounds b
    GROUP BY m.campaign
),
cpm AS (
    SELECT campaign,
           CASE WHEN prev_impressions > 0 THEN prev_cost / prev_impressions * 1000 END AS cpm_prev_month,
           CASE WHEN last_impressions > 0 THEN last_cost / last_impressions * 1000 END AS cpm_last_month
    FROM pivoted
    WHERE prev_impressions > 0 AND last_impressions > 0
)
SELECT campaign,
       round(cpm_prev_month, 2) AS cpm_prev_month,
       round(cpm_last_month, 2) AS cpm_last_month,
       round(cpm_last_month / cpm_prev_month - 1, 4) AS cpm_growth
FROM cpm
WHERE cpm_prev_month > 0
ORDER BY cpm_growth DESC
LIMIT 30

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

Расход и показы берите из одного отчета рекламного кабинета за одинаковый период. В Яндекс Директе это расход и показы по кампаниям, в VK Рекламе аналогичные поля, на маркетплейсах продвижение показывает расход и показы в кабинете продавца. Расход берите без НДС, если кабинет отдает его без налога, и не смешивайте кампании разных площадок в одной строке.

Почему CPM месяц к месяцу расходится с ручным расчетом

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

Как читать рост CPM по кампаниям

Положительное изменение значит, что тысяча показов стала дороже. Смотрите на размер изменения и на объем показов. Рост на 5% при тысяче показов и при миллионе показов говорит о разном. Сравнивайте CPM с CTR, CPC и заказами. Если CPM вырос, а заказы и выручка держатся, рост может быть сезонным или связан с аукционом. Если CPM вырос и CTR упал, проверьте креативы, аудиторию и площадки.

Что делать с кампаниями, где CPM вырос

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

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

Переименование кампании рвет ряд

После смены названия кампания попадает в две строки, и месяц к месяцу сравнивается с пустотой. Ведите кампании под одним названием или сопоставляйте их по номеру.

Сезонный рост принимают за проблему

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

Вопросы

Чем CPM отличается от CPC и CPO?

CPM считает стоимость тысячи показов, CPC стоимость клика, CPO стоимость заказа. Для охватных кампаний основной ориентир CPM, для кампаний на заказы смотрите CPC и CPO.

Почему CPM одной кампании выше, чем у другой?

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

Можно ли сравнивать CPM на разных площадках?

Прямое сравнение ограничено, у площадок разные форматы и аукционы. Сравнивайте CPM внутри площадки, а между площадками смотрите стоимость заказа и выручку.

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

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

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

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

По теме

Все задачи