Каннибализация продуктов: когда новый продукт убивает старый, а бизнес теряет деньги



💰 Запускаем новый продукт — кажется, что все идет отлично. Начинаются покупки, растет выручка. Но спустя время бизнес замечает странную вещь: общая выручка не изменилась, а иногда даже начала падать 😢





🤔 Что случилось?



Пользователи просто переключились со старого продукта на новый, но новых клиентов не пришло. Это и есть каннибализация — когда новый продукт съедает аудиторию старого, а не привлекает новую.



🤔 Почему это проблема?



1. Думаем, что новый продукт взлетает, но на самом деле он просто перетягивает пользователей 🍪



2. Если пользователи переходят на более дешевый тариф или менее маржинальный продукт, бизнес теряет прибыль 🥗



3. Если новый продукт не оправдал ожидания, пользователь может уйти вообще из обоих продуктов 🌟



Пример:

У вас был премиум-тариф, который приносил высокий доход, а вы запустили дешевый вариант (дискаунтер). Клиенты ушли в новый продукт, выручка просела.



Как найти каннибализацию? 🍪🍪



Смотрим, как изменилось поведение пользователей после запуска нового продукта.



👩‍💻 SQL-запрос ниже





WITH old_product AS (

SELECT

user_id,

COUNT(order_id) AS old_orders,

SUM(revenue) AS old_revenue

FROM orders

WHERE product_id = 'old_product'

AND order_date < '2024-01-01'

GROUP BY user_id

),



new_product AS (

SELECT

user_id,

COUNT(order_id) AS new_orders,

SUM(revenue) AS new_revenue

FROM orders

WHERE product_id = 'new_product'

AND order_date >= '2024-01-01'

GROUP BY user_id

)



SELECT

o.user_id,

o.old_orders,

n.new_orders,

o.old_revenue,

n.new_revenue,

CASE

WHEN o.old_orders > 0 AND n.new_orders > 0 AND n.new_revenue < o.old_revenue

THEN 'Перешли, но платят меньше'

WHEN o.old_orders > 0 AND n.new_orders > 0 AND n.new_revenue >= o.old_revenue

THEN 'Перешли, но выручка сохранилась'

WHEN o.old_orders > 0 AND n.new_orders = 0

THEN 'Остались на старом'

WHEN o.old_orders = 0 AND n.new_orders > 0

THEN 'Новый клиент'

ELSE 'Нет активности'

END AS user_behavior

FROM old_product o

LEFT JOIN new_product n ON o.user_id = n.user_id;





Что значит результат?



1. Перешли, но платят меньше → Упали чеки, возможно, продукт слишком дешевый или не дает ценности. Нужно тестировать upsell, дополнительные возможности для продажи товаров / услуг, рост GMV, маржинальности 😵



2. Остались на старом → Им новый продукт не нужен? Разбираемся, что именно их удерживает. Возможно, просто пользователи привыкли к другому продукту, а пересаживаться не видят смысла 🪑



3. Мало новых клиентов → Новый продукт не привлекает новую аудиторию. Возможно, нужно менять маркетинг, коммуникацию с пользователями. Доносить понятные смыслы 🖼



📈 Далее из этого можно составить различные чарты и другие инструменты, которые позволяют отслеживать перетоки между бизнес-юнитами, продуктами.



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



😊 Наберется 100 реакций, сделаю еще пост с практическим применением SQL на реальных задачах



UPD: для оценки каннибализации честнее всего запустить 🆎