Бран · продюсер «Хроник Пограничья»
Маркетинг просит удвоить бюджет на блогеров: «в марте был рекордный приток игроков». А мне кажется, мы покупаем игроков дороже, чем они нам платят. Какие каналы окупаются?
В уроке про метрики мы считали CAC и LTV на табличке из десяти игроков. Теперь посчитаем их на всей базе и по каждому каналу привлечения. Для этого в guild есть таблица marketing_spend: сколько денег ушло на каждый платный канал в каждый день.
Ферма и цыплята
Представь фермера, который покупает цыплят у разных поставщиков. Цыплёнок от одного стоит 45 рублей и несёт много яиц, от другого стоит 950 и почти не несёт. Фермеру мало знать, сколько всего яиц на ферме. Ему нужно для каждого поставщика сравнить цену цыплёнка с тем, что цыплёнок принесёт.
Юнит-экономика делает то же для игроков. Единица здесь игрок, и для каждого канала нужны два числа:
- CAC: сколько стоил один игрок. Расходы канала, делённые на число игроков, пришедших по нему;
- LTV: сколько игрок принёс. Выручка от игроков канала, делённая на их число.
Если LTV меньше CAC, канал покупает игроков в убыток. Ещё одна метрика смотрит на то же сверху: ROAS, выручка канала на рубль рекламы.
Расходы и установки отдельно
Расходы лежат в marketing_spend по дням, установки в players по игрокам. Первое желание соединить их по каналу и сгруппировать. Не надо: каждый день расходов встретится с каждым игроком канала, и сумма вырастет в сотни раз. Это размножение строк из урока 26. Каждую величину считаем в своём CTE и соединяем уже по строке на канал:
WITH spend AS (
SELECT channel, sum(spend_rub) AS spend
FROM marketing_spend
GROUP BY channel
), installs AS (
SELECT channel, count(*) AS installs
FROM players
WHERE email NOT LIKE '%@studio.dev'
GROUP BY channel
)
SELECT s.channel, i.installs, s.spend, round(s.spend / i.installs, 2) AS cac
FROM spend s
JOIN installs i ON i.channel = s.channel;
Выручку берём чистую, как в боссе блока C: только paid, одна покупка на чек и без тестовых аккаунтов студии. Добавляем третий CTE revenue и получаем таблицу каналов:
| channel | игроков | расходы, ₽ | CAC, ₽ | выручка, ₽ | LTV, ₽ | ROAS |
|---|---|---|---|---|---|---|
| crosspromo | 419 | 18 813,90 | 44,90 | 119 805 | 285,93 | 6,37 |
| ads_vk | 804 | 129 330,33 | 160,86 | 126 938 | 157,88 | 0,98 |
| ads_yandex | 588 | 122 957,22 | 209,11 | 48 998 | 83,33 | 0,40 |
| bloggers | 712 | 681 745,07 | 957,51 | 36 190 | 50,83 | 0,05 |
Канала organic в таблице нет: за него не платили, и внутреннее соединение с расходами его отбросило. Органика привела 1554 игрока и 325 825 ₽, это хорошая планка: LTV органического игрока 209,67 ₽.
Блогеры сжигают бюджет: игрок стоит 957,51 ₽, а приносит 50,83 ₽. На каждый рубль рекламы вернулось 5 копеек. Кросс-промо наоборот: 45 ₽ за игрока, который приносит 286 ₽.
урок из курса
Урок из курса «Аналитика данных с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.