Единый клиент workspace
Сводная CRM-карточка — лиды + заказы + брони одного человека под одним профилем. Merge, теги, заметки, LTV.
Единый клиент workspace
Один и тот же человек обычно появляется в системе несколькими разными «следами»:
- оставил заявку через форму на сайте — попал в
project_collection; - оплатил заказ через агента — попал в
commerce_order; - записался на услугу — попал в
booking; - спросил в Telegram — попал в чат-сессию агента.
Чтобы это не превращалось в три карточки одного и того же Коли, Framix сводит их в единого клиента workspace (workspace_client).
Где смотреть
/account/crm → вкладка «Клиенты» (она же главная). Поиск по имени / email / телефону, фильтр по источнику. Для каждого клиента видно:
- основные контакты (имя, email, телефон);
- агрегаты: количество лидов, заказов, броней;
- LTV — сумма всех оплаченных заказов;
- последняя активность.
Клик по строке открывает drawer-карточку с таймлайном событий из всех трёх источников.
Что делает merge
Иногда один человек попадает в систему дважды:
- первый раз — оставил только email;
- второй раз — заполнил форму только с телефоном.
Тогда workspace_client создаются два. На вкладке «Клиенты» нажмите «Объединить» в карточке → выберите второго клиента → подтвердите.
После merge:
- лиды, заказы и брони обоих переезжают на одну карточку;
- email/phone объединяются;
- история событий сшивается по времени.
API: POST /api/crm/clients/merge.
Что заполняется автоматически
Запись workspace_client создаётся (или обновляется) при любом событии-источнике через upsert по (workspaceId, email) или (workspaceId, phone):
| Источник | Где создаётся клиент |
|---|---|
| Форма сайта | forms/collection.post — лид в CRM с автозаполнением клиента |
| Заказ через сайт или агента | createCommerceOrder |
| Бронь услуги | createBooking |
| Чат-агент (захват lead-контакта) | captureLeadFromMessage |
Email хранится в нормализованной форме (lower-case), телефон —
'+' + digits. Это позволяет однозначно сопоставить «Kolya@example.com», «kolya@example.com» и+7 999 .../8 (999) ...как один клиент.
Что можно править вручную
В drawer-карточке клиента — поля:
- Имя (если автозаполнение поставило что-то корявое);
- Email и телефон (добавить дополнительный);
- Owner — какой member workspace «ведёт» этого клиента;
- Теги — произвольные ярлыки (
#VIP,#оптовик); - Заметки — длинный текстовый блок для контекста.
Эти поля переживают новые автозаливы из лидов/заказов — система не перетирает их, только добавляет историю.
Где ещё всплывает карточка клиента
/account/commerce(заказы) → клик по покупателю в карточке заказа → открывается CRM-drawer прямо в commerce (без перехода в/account/crm)./account/bookings→ клик по клиенту в карточке брони → тот же drawer./account/crm→ deep-link?client=<id>открывает drawer;?lead=<id>— конкретный лид;?tab=leads— инбокс лидов.
Это нужно, чтобы из ленты заказов или броней можно было быстро посмотреть всю историю клиента, а не только текущий заказ.
Источники событий в таймлайне
В таймлайне drawer'а сверху-вниз показано всё, что было с этим клиентом:
- лиды формы (вместе с данными формы);
- заказы товаров (со статусом и суммой);
- брони услуг (со статусом и временем);
- ручные заметки.
Каждое событие можно открыть в источнике («Открыть лид», «Открыть заказ», «Открыть бронь»).