MACRO

Воронка продаж по менеджерам

Месторасположение: Отчёты → Заявки → Воронка продаж по менеджерам

Отчёт показывает воронку продаж в разрезе менеджеров: количество заявок, встреч, броней и сделок с конверсиями между этапами, а также финансовые показатели по проведённым сделкам.

Целевые заявки (ЦЗ) — заявки в статусах: Подбор, Отложено, Отказ, Бронь, Сделка в работе, Сделка проведена. Статус «Проверка» включается в целевые, если это настроено в параметрах компании.

Старые заявки в работе — заявки, созданные до начала выбранного периода, находящиеся в активных статусах (Проверка, Подбор, Бронь, Сделка в работе) на момент построения отчёта.

#Работа с отчётом

#Фильтры

Тип — тип недвижимости (Жилая, Коммерческая и др.).

Дата (с/по) — период отчёта. Заявки отбираются по дате создания.

Отдел продаж — отбор по отделу менеджера.

Менеджер — отбор по конкретному менеджеру.

Источники — отбор по рекламному источнику заявки.

Категория — отбор по категории объекта.

Звонок — отбор по характеристикам первого звонка по заявке: целевой / нецелевой, первичный / вторичный.

Скрыть столбцы — позволяет убрать из таблицы ненужные столбцы.

#Опции

Считать отдельно сделки в работе и завершены — разделяет столбец (14) на два: (12) Сделки в работе и (13) Сделок завершено. Добавляет столбец (19) Конверсия ЦЗ в завершённые сделки и меняет формулу в (23).

Считать конверсии за период — ограничивает числитель конверсий периодом отчёта: встречи и даты сделок также должны попадать в выбранный диапазон. Без этой опции встречи и сделки учитываются за всё время заявки.

Уникальные первичные обращения — учитывает только первичные заявки (не повторные обращения клиента).

С посредником / Без посредника — отбор по наличию агента в сделке. Если выбраны обе опции, фильтр не применяется.

Показать звонки — добавляет в таблицу столбец с количеством звонков менеджера за период.

#Структура отчёта

Каждая строка — один менеджер. В конце таблицы — строка «Итого».

(1) Менеджер — имя менеджера.

(2) Старых заявок в работе — заявки, созданные до начала периода и находящиеся в активных статусах на момент построения отчёта.

(3) Заявок за период — все заявки менеджера, попавшие в период по выбранной группировке (статус любой положительный).

(4) Целевые заявки — заявки из (3), находящиеся в целевых статусах на момент построения отчёта.

(5) В т.ч. Эксклюзивы — из (4): заявки с признаком «Эксклюзив».

(6) 1-х встреч в офисе / на объекте — первые состоявшиеся встречи по целевым заявкам периода: в офисе / на объекте. Значение кликабельно и ведёт в реестр встреч.

(7) Несостоявшиеся встречи в офисе / на объекте — встречи, не состоявшиеся по причине неявки клиента: в офисе / на объекте.

(8) Конверсия ЦЗ во встречи — доля целевых заявок, по которым состоялась первая встреча: ((6) офис + (6) объект) / (4) × 100%.

(9) Сейчас в брони — заявки периода с текущим статусом Бронь или Маркетинговый резерв.

(10) Поставлено броней — заявки периода, по которым фиксировался перевод в статус Бронь (в том числе если впоследствии статус изменился).

(11) Встречи → Брони — доля встреч, по которым была поставлена бронь: (10) / ((6) офис + (6) объект) × 100%. Значение может превышать 100%, если бронь поставлена по заявке без зафиксированной первой встречи.

(14) Сделки — заявки периода в статусах Сделка в работе и Сделка проведена. При включённой опции «Считать отдельно» делится на столбцы (12) Сделки в работе и (13) Сделок завершено.

(15) Среднее время завершения сделки, дн. — среднее количество дней от создания заявки до проведения сделки.

(16) Сделок завершено по эксклюзивам — из завершённых сделок: только по заявкам с признаком «Эксклюзив».

(17) Сред. срок эксклюзивов, дн. — среднее время завершения сделки по эксклюзивным заявкам.

(18) Сделок проведено за период — сделки, дата проведения которых попала в выбранный период (независимо от даты создания заявки).

(20) ЦЗ → Брони — конверсия целевых заявок в брони: (10) / (4) × 100%.

(21) Брони → Сделки — конверсия броней в завершённые сделки: сделок завершено / (10) × 100%.

(22) Конверсия ЦЗ в сделки — (14) / (4) × 100%.

(23) Конверсия встреч в сделки — (14) / ((6) офис + (6) объект) × 100%.

(24) Сумма проведённых сделок по данным заявкам, ₽ — сумма договоров по заявкам периода, сделки по которым проведены (в любое время).

(25) Сумма проведённых сделок за период — сумма договоров по сделкам, проведённым в выбранном периоде.

(26) Поступления за период от продажи недвиж. по данным сделкам, ₽ — фактически поступившие платежи в периоде по сделкам заявок этого же периода. Без учёта комиссий. Возвраты вычитаются.

(27) Всего от продаж недвиж.* — все поступления менеджера от продажи недвижимости за период, включая сделки прошлых периодов. Без учёта комиссий. Возвраты вычитаются.

(28) Всего комиссий собрано в период — сумма комиссионных платежей, поступивших в периоде.

* Из расчёта исключаются платежи по отдельным источникам финансирования (зачёты, платежи застройщика, завышения, удержания, облигации).

Кнопка → XLS выгружает отчёт в Excel.


#Технический паспорт отчёта

#Условия попадания в отчёт

Строка создаётся по каждому менеджеру компании. В расчёт заявок попадают записи, у которых:

  • type IN ('living', 'comm');
  • status > 0 (не удалены);
  • менеджер заявки совпадает с менеджером строки;
  • дата заявки (по выбранной группировке) попадает в период либо заявка создана до периода и активна сейчас (для столбца (2)), либо сделка проведена в периоде (для столбца (16)).

Набор статусов:

ГруппаКодыИспользование
Целевые4, 15, 20, 30, 50, 100Столбцы (4), (8), (20), (22)
Проверка (опционально)10Добавляется к целевым при настройке компании
Старые в работе10, 20, 30, 50Столбец (2)
Бронь / Маркетинговый резерв30, 32Столбец (9)
Сделки (все)50, 100Столбец (14)
Сделки завершены100Столбцы (15), (18), (21), (24), (25)

Атрибуция денег (столбцы (23), (24), (25)) — по ответственному менеджеру платежа (finances.respons_manager_id), а не по менеджеру заявки.

#Данные в системе

Отчёт строится из трёх независимых запросов, объединяемых по менеджеру.

Заявки — столбцы (2), (3), (4), (9), (10), (14), (15), (18), (20), (21), (22), (24), (25)

Принцип выбора данных в MacroData без учёта дополнительных фильтров:

SELECT
    eb.manager_id,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) < DATE('{{start_date}}')
        AND eb.status IN (10, 20, 30, 50), eb.estate_buy_id, NULL))             AS old_in_work,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status > 0, eb.estate_buy_id, NULL))                             AS buys_period,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status IN (4,15,20,30,50,100), eb.estate_buy_id, NULL))          AS target,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status IN (30, 32), eb.estate_buy_id, NULL))                     AS now_reserve,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND esl.estate_buy_id IS NOT NULL, eb.estate_buy_id, NULL))             AS set_reserve,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status IN (50, 100), eb.estate_buy_id, NULL))                    AS deals,
    COUNT(DISTINCT IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status = 100, eb.estate_buy_id, NULL))                           AS deals_done,
    COUNT(DISTINCT IF(
        ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status = 100, eb.estate_buy_id, NULL))                           AS deals_done_period,
    AVG(IF(
        eb.status = 100 AND ed.deal_date IS NOT NULL,
        ABS(DATEDIFF(ed.deal_date, DATE(eb.created_at))), NULL))                AS avg_deal_days,
    SUM(IF(
        DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status = 100, ed.deal_sum, NULL))                                AS deal_sum_by_buys,
    SUM(IF(
        ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
        AND eb.status = 100, ed.deal_sum, NULL))                                AS deal_sum_by_date
FROM estate_buys eb
LEFT JOIN estate_buys_statuses_log esl
    ON esl.estate_buy_id = eb.estate_buy_id
    AND esl.company_id = eb.company_id
    AND esl.status_to = 30
    AND esl.status_from < 30
LEFT JOIN estate_deals ed
    ON ed.estate_buy_id = eb.estate_buy_id
    AND ed.company_id = eb.company_id
    AND ed.deal_status IN (110, 150)
WHERE eb.company_id = {{company_id}}
    AND eb.type IN ('living', 'comm')
    AND eb.status > 0
GROUP BY eb.manager_id

В запросах замените {{company_id}} на числовой идентификатор компании, {{start_date}} и {{end_date}} — на даты периода в формате YYYY-MM-DD.

Встречи — столбцы (6), (7), (8), (11), (23)

Принцип выбора данных в MacroData без учёта дополнительных фильтров:

SELECT
    em.users_id                                                                AS manager_id,
    COUNT(IF(em.is_first_meeting = 1 AND em.no_meeting = 0
             AND em.meeting_type_place = 'meeting', em.id, NULL))             AS first_meetings_office,
    COUNT(IF(em.is_first_meeting = 1 AND em.no_meeting = 0
             AND em.meeting_type_place = 'meeting_house', em.id, NULL))       AS first_meetings_house,
    COUNT(IF(em.no_meeting = 1
             AND em.meeting_type_place = 'meeting', em.id, NULL))             AS no_meetings_office,
    COUNT(IF(em.no_meeting = 1
             AND em.meeting_type_place = 'meeting_house', em.id, NULL))       AS no_meetings_house
FROM estate_meetings em
WHERE em.company_id = {{company_id}}
    AND em.meeting_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
GROUP BY em.users_id

Деньги — столбцы (26), (27), (28)

Атрибуция по finances.respons_manager_id (ответственный менеджер платежа).

Принцип выбора данных в MacroData без учёта дополнительных фильтров:

SELECT
    f.respons_manager_id                                                       AS manager_id,
    SUM(IF(ft.is_commission = 0
           AND DATE(eb.created_at) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}'),
           IF(ft.is_income = 1, f.summa, -f.summa), 0))                       AS income_by_buys,
    SUM(IF(ft.is_commission = 0,
           IF(ft.is_income = 1, f.summa, -f.summa), 0))                       AS income_total,
    SUM(IF(ft.is_commission = 1, f.summa, 0))                                 AS commission_total
FROM finances f
JOIN finances_types ft
    ON ft.id = f.types_id
    AND ft.company_id = f.company_id
    AND 1 IN (ft.is_income, ft.is_income_lower, ft.is_commission)
LEFT JOIN estate_deals ed ON ed.deal_id = f.deal_id AND ed.company_id = f.company_id
LEFT JOIN estate_buys eb  ON eb.estate_buy_id = ed.estate_buy_id AND eb.company_id = f.company_id
WHERE f.company_id = {{company_id}}
    AND f.status = 1
    AND DATE(f.date_added) BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
GROUP BY f.respons_manager_id

В т.ч. Эксклюзивы (5), Сделок завершено по эксклюзивам (16), Сред. срок эксклюзивов (17)

Данные не выгружаются в MacroData.

#Расчётные данные

СтолбецФормула
(8) Конверсия ЦЗ во встречи(first_meetings_office + first_meetings_house) / target × 100
(11) Встречи → Брониset_reserve / (first_meetings_office + first_meetings_house) × 100
(15) Среднее время сделкиavg_deal_days из запроса заявок
(20) ЦЗ → Брониset_reserve / target × 100
(21) Брони → Сделкиdeals_done / set_reserve × 100
(22) Конверсия ЦЗ в сделкиdeals / target × 100
(23) Конверсия встреч в сделкиdeals / (first_meetings_office + first_meetings_house) × 100