Перейти до змісту

Юніт-економіка

RFM-аналіз клієнтів: сегменти, SQL і що з ними робити

Як провести RFM-сегментацію бази клієнтів магазину чи сервісу — давність, частота, сума — правила балів, SQL-запит, готові сегменти (чемпіони, у зоні ризику, сплячі) і сценарії розсилок для кожного.

DATUMPANELОпубліковано Оновлено 6 хв читання

Обкладинка статті про RFM-аналіз

У базі магазину тисячі клієнтів, а розсилка йде всім однакова. RFM-аналіз — найпростіший спосіб розділити клієнтів за поведінкою і говорити з кожною групою по-своєму. Він не потребує машинного навчання — лише історії замовлень.

Три виміри

ЛітераЩо вимірюєЯк рахувати
R — Recencyдавність останньої покупкиднів з останнього замовлення
F — Frequencyчастотакількість замовлень за період (наприклад, 12 міс.)
M — Monetaryсумавиручка або маржа клієнта за період

Кожен вимір ділиться на бали — найчастіше від 1 до 5 за квінтилями (20% клієнтів у кожному балі). R: 5 — купував нещодавно; F: 5 — найчастіше; M: 5 — найбільше.

SQL для PostgreSQL

WITH base AS (
  SELECT customer_id,
         CURRENT_DATE - MAX(order_date)::date AS recency_days,
         COUNT(*) AS frequency,
         SUM(revenue_net) AS monetary
  FROM orders
  WHERE status = 'paid' AND order_date >= CURRENT_DATE - INTERVAL '365 day'
  GROUP BY 1
)
SELECT customer_id, recency_days, frequency, monetary,
       6 - NTILE(5) OVER (ORDER BY recency_days) AS r,
       NTILE(5) OVER (ORDER BY frequency) AS f,
       NTILE(5) OVER (ORDER BY monetary) AS m
FROM base;

Нюанс з F: у багатьох магазинах більшість клієнтів має одне замовлення, і квінтилі «ламаються». Тоді краще задати пороги вручну: 1, 2, 3–4, 5–7, 8+ замовлень.

Сегменти

Комбінації балів групують у зрозумілі сегменти:

СегментПравило (R, F)Що означаєЩо робити
ЧемпіониR 5, F 4–5купують часто і нещодавноранній доступ, програма лояльності, відгуки
ЛояльніR 3–5, F 3–5регулярні покупцідопродажі, комплекти
Перспективні новачкиR 4–5, F 1щойно перша покупкавітальний ланцюжок, друга покупка
Потребують увагиR 3, F 2–3рідше, ніж ранішеперсональна добірка
У зоні ризикуR 1–2, F 3–5були активні, зниклиреактиваційна пропозиція, опитування
Не можна втратитиR 1–2, F 5, M 5великі клієнти, зниклиособистий контакт
СплячіR 1–2, F 1–2давно і малодешеві канали або пауза

M зазвичай використовують для пріоритету: у межах сегмента спочатку працюють з клієнтами з високим M.

Як застосувати

  1. Перерахунок RFM раз на тиждень у пайплайні (ETL).
  2. Запис сегмента в CRM або сервіс розсилок як атрибут клієнта.
  3. Автоматичні сценарії: перехід «Перспективні → У зоні ризику» запускає лист чи повідомлення.
  4. Контроль: дашборд з розміром сегментів і потоками між ними щомісяця.

Що показувати в дашборді

  • розмір і виручка кожного сегмента;
  • матриця R × F (теплова карта кількості клієнтів);
  • переходи між сегментами за місяць (скільки «Лояльних» стали «У зоні ризику»);
  • результати кампаній за сегментами: відкриття, повторні покупки, виручка.

RFM добре доповнює когортний аналіз: когорти показують, як утримується «покоління» клієнтів, а RFM — кого саме зараз треба повернути. Для оцінки цінності сегментів використовуйте LTV.

Особливості для різних бізнесів

  • Сервісний бізнес: R у днях відносно звичайного інтервалу візитів (клієнт стрижки раз на 5 тижнів «прострочений» вже на 8-му).
  • Товари з довгим циклом (техніка, меблі): F майже завжди 1 — краще RM або сегменти за категоріями.
  • B2B: M у маржі, а F — за кількістю угод або активних місяців.

Типові помилки

  • Рахувати M у виручці з поверненнями.
  • Брати весь час замість фіксованого вікна.
  • Сегментувати, але не запускати жодних дій.
  • Не враховувати, що ідентифікатор клієнта різний у різних системах (телефон/email).

Чекліст

  • Єдиний ідентифікатор клієнта (нормалізований телефон/email)
  • Вікно аналізу (наприклад, 12 місяців)
  • Пороги F, що враховують структуру бази
  • Сегменти з назвами й діями
  • Сегмент записується в CRM/розсилку
  • Щотижневий перерахунок
  • Звіт про переходи між сегментами

Приклад: оцінюємо п'ятьох клієнтів

Ілюстративний магазин, дата аналізу 1 жовтня, оцінки 1–5 за квінтилями серед усіх клієнтів:

КлієнтОстаннє замовленняЗамовлень (12 міс.)Виручка (12 міс.)RFMСегмент
A20 вер914 200555Чемпіони
B2 сер45 100444Лояльні
C12 вер11 300512Нові
D15 бер68 900255Під загрозою (цінний, замовк)
E10 лис минулого року1600111Втрачені

Саме з D варто працювати сьогодні: цінний клієнт, чиє останнє замовлення було понад пів року тому. Персональна пропозиція повернення для групи «Під загрозою» окупається значно легше, ніж знижка всім підряд. На E не варто витрачати багато зусиль. C потрібен хороший досвід другої покупки — саме там вирішується більша частина майбутньої цінності магазину.

Як обрати межі оцінок

Квінтилі (кожна оцінка — 20% клієнтів) — варіант за замовчуванням, але вони ламаються у двох поширених випадках:

  • У більшості клієнтів одне замовлення. Якщо 70% купили один раз, квінтилі F не можуть їх розділити. Використовуйте фіксовані межі: F = 1 для одного замовлення, 2 — для двох, 3 — для 3–4, 4 — для 5–7, 5 — для 8+.
  • Цикли покупки різняться за категоріями. «90 днів від останнього замовлення» — це недавно для меблів і дуже давно для кави. Межі R визначайте з власних інтервалів повторних покупок: наприклад, R = 5, якщо в межах медіанного інтервалу, R = 1 — якщо понад 3× медіани.

Документуйте обрані межі. Коли вони змінюються, розміри сегментів стрибають, і це не слід плутати зі зміною поведінки клієнтів.

Відстежуємо рух між сегментами

Найкорисніший RFM-звіт — не знімок, а рух між знімками. Щомісяця показуйте, скільки клієнтів перейшли між ключовими сегментами:

Звідки → кудиКлієнтівПро що сигналізує
Нові → Лояльні120ланцюжки другої покупки працюють
Лояльні → Під загрозою85щось охололо: перевірте товар, доставку, конкурентів
Під загрозою → Лояльні30ефект кампанії повернення
Під загрозою → Втрачені60втрачена можливість
SELECT prev.segment AS from_segment, cur.segment AS to_segment, COUNT(*) AS customers
FROM mart.rfm_snapshot cur
JOIN mart.rfm_snapshot prev
  ON prev.customer_id = cur.customer_id
 AND prev.snapshot_date = DATE_SUB(cur.snapshot_date, INTERVAL 1 MONTH)
WHERE cur.snapshot_date = @this_month
GROUP BY 1, 2
ORDER BY customers DESC;

Зберігайте знімок щомісяця, а не перераховуйте історію, — тоді звіт про рух відображає те, що ви знали на той момент.

Приватність

RFM використовує історію покупок — це персональні дані. Вивантажуйте для кампаній лише ті поля, що потрібні кампанії, враховуйте згоду на маркетингові розсилки під час побудови аудиторій і не завантажуйте повні історії покупок у рекламні платформи, коли достатньо ID сегмента чи хешованого списку контактів.

Як часто перераховувати

Для більшості магазинів достатньо щомісячного перерахунку з щотижневим оновленням лише R (давності) для тригерних розсилок. Повний щоденний перерахунок має сенс лише тоді, коли на сегменти реагують автоматичні сценарії, наприклад лист «давно не бачились» на 60-й день без замовлень.

Як перевірити, що кампанії за сегментами працюють

Кампанії за сегментами легко переоцінити, бо цільові клієнти часто купили б і так. Відкладіть випадкові 10–20% кожного цільового сегмента і нічого їм не надсилайте. Після вікна кампанії порівняйте частку покупців і виручку на клієнта між групою, яка отримала повідомлення, і контрольною:

ГрупаКлієнтівКупили за 30 днівВиручка на клієнта
Під загрозою, отримали80014%290
Під загрозою, контроль2009%180

У цьому ілюстративному випадку кампанія додала близько 5 п.п. покупців і 110 грн виручки на клієнта. Відніміть вартість знижки і розсилки — і побачите, чи вона окупилася. Без контрольної групи ви б приписали кампанії всі 14%.

Часті запитання

Скільки клієнтів потрібно для RFM?

Від кількох сотень клієнтів з покупками вже дає сенс. На малих базах використовуйте прості пороги замість квінтилів.

Чим RFM відрізняється від когортного аналізу?

Когорти групують клієнтів за датою першої покупки і показують утримання з часом. RFM групує за поточною поведінкою для дій тут і зараз.

Чи можна робити RFM у Google Таблицях?

Так, на невеликій базі — формулами QUARTILE або PERCENTRANK. Для щотижневого автоматичного оновлення краще SQL.

Як перевірити, що RFM-кампанії працюють?

Залиште контрольну групу в сегменті без розсилки і порівняйте частку повторних покупок за 30–60 днів.

Теги: RFMсегментаціяCRMутримання

Автор

DATUMPANEL — Аналітика даних для бізнесу

DATUMPANEL — це незалежний аналітик даних з України. Будую дашборди для власників бізнесу, налаштовую GA4 і експорт у BigQuery, збираю пайплайни даних і автозвіти в Telegram для e-commerce, сервісного бізнесу, SaaS і агенцій — від аудиту даних до рішень.

Написати в Telegram[email protected]Відкрити демо

Читайте також

Хочете таку аналітику у себе?

Опишіть, які дані у вас є і на які запитання бракує відповідей. Відповім того ж дня — з планом, термінами й тим, що можна зробити швидко.

Або напишіть напряму:

Відкрити демо →

Залиште заявку

Відповім протягом робочого дня.

Що вас цікавить
Сфера бізнесу
Ще деталі · необов’язково
Орієнтовний бюджет · необов’язково
Коли зручно почати · необов’язково
Які джерела даних є · необов’язково

Надсилаючи форму, ви погоджуєтесь з Політикою конфіденційності — контакти використовуються лише для відповіді на заявку.