amoCRM интеграция · Make → amoCRM напрямую
TL;DR. Сейчас текущий
bp.karada.kz— Tilda + amoCRM через Tilda Form Services (service-id34b8...+7e32...). Мы переезжаем на свою воронку и хотим подключиться к amoCRM Карада напрямую через Make.com webhook, а не через Tilda. Этот документ — почему так правильно, что для этого нужно, и как выглядит итоговый поток.
⭐ Реализация — сайт → Make → amoCRM (актуально)
Сайт x5.karada.kz уже отправляет лиды. Источник правды по коду — src/conversion/.
Три оси — не путать «воронку» с «оффером»
| Ось | Поле payload | Значения |
|---|---|---|
| Лендинг | variant_id | home · vsl · guide · exclusive · kg-* |
| Форма | funnel_mechanism | quick-lead · registration · info-gather · qualification · application · lead-magnet |
| Оффер | tier | vip · exclusive · lead_magnet · (standard — даунселл, без лендинга) |
Раскладка офферов:
Оффер (tier) | Лендинги | Форма |
|---|---|---|
lead_magnet | /guide | lead-magnet |
vip | / · /vsl | quick-lead / registration |
exclusive | /exclusive | application |
standard | — только tier_interest в форме регистрации + даунселл | — |
Поток
Сайт собирает ОДИН JSON (buildLeadPayload) и делает один POST на Make-вебхук
(src/config/integration.ts). Make разветвляет через Router:
ConversionForm → Make webhook → Router ─┬→ Google Sheet (сырьё, append)
├→ Slack (алерт)
├→ FlowLeads (HTTP)
└→ amoCRM (HTTP → API v4)
Две формы payload’а на ОДИН вебхук: обычный лид и апсейл с /thank-you
(event_type: "upsell_click"). Make ветвится по event_type.
Срезы — что в какую ветку Make
Сайт шлёт ОДИН полный payload — его не урезаем. Стримлайн — на каждой ветке Make:
| Ветка | Что берём |
|---|---|
| 📊 Google Sheet | ВСЁ — сырой лог, append, каждое поле в свою колонку (бэкап + аналитика) |
| 💬 Slack | 1 строка: имя · телефон · tier · country · utm_source/utm_campaign |
| 🟦 amoCRM | срез: контакт + tier · tier_interest · country · lead_score · utm_* · fbclid/gclid/yclid · submission_id; answers → в примечание |
В amoCRM не тащим: session_id, form_id, funnel_step_reached,
experiment_id, referrer, touch, landing_path/page_path,
utm_term/content, весь meta — это только для Sheet.
amoCRM — через HTTP-модуль
Нативный коннектор Make «Kommo» принимает только домены *.kommo.com — для
аккаунта *.amocrm.ru не подходит. Используем HTTP-модуль + API v4:
HTTP → Make a request
URL: https://yusup.amocrm.ru/api/v4/leads/complex
Method: POST
Header: Authorization: Bearer {долгосрочный токен приватной интеграции}
Body: [ { "name": "...", "pipeline_id": 9111838,
"_embedded": { "contacts": [ { "name", "custom_fields_values":[PHONE] } ] } } ]
pipeline_id: 9111838 — воронка «Большие Продажи».
Атрибуты — что маппить
| Группа | Поля | В amoCRM |
|---|---|---|
| Конверт | submission_id (ключ дедупа), submitted_at, tier, country, funnel_mechanism | ✅ |
lead{} | name, phone, email, tier_interest, lead_score, qualified | ✅ контакт + сделка |
answers{} | role, niche, goal, budget, urgency… (зависит от формы) | ◽ в примечание |
attribution{} | variant_id, utm_*, gclid/fbclid/yclid | ✅ кастомные поля |
| Игнор для CRM | experiment_id (константа), meta.*, form_id, referrer, touch | ❌ только Sheet |
tier ≠ tier_interest: tier — оффер лендинга, tier_interest — что юзер
выбрал в форме. Дубли tier/country на верхнем уровне и в attribution —
намеренно, для роутинга Make.
Тест
bun run scripts/test-lead-flow.ts — шлёт по payload’у на каждый сценарий
(lead-magnet · home · vsl · exclusive · upsell). Тест-лиды помечены
utm_campaign=INTERNAL_TEST и именем «ТЕСТ — …» — фильтруются и удаляются легко.
--dry печатает payload’ы без отправки.
Исправленные рассинхроны
/(home) теперьtier=vip— страница продаёт групповой VIP-оффер./cohort(Cardone-вариант) удалён — VIP-воронки оставлены только/и/vsl.
Зачем нам прямая интеграция (чек-лист для созвона с клиентом)
🔴 Что мы теряем, если оставляем как есть (через Tilda)
Если оставить старую Tilda-форму и просто запретить рекламу вести на новый сайт — мы возвращаемся к воронке 2024 года. Никакого смысла строить новую архитектуру.
Если наша новая форма пишет в Tilda Form Service (даже если бы это было технически возможно):
- ❌ UTM теряются. Tilda не передаёт
utm_source/medium/campaign/content/termв amoCRM. Менеджер видит «лид» без понимания «откуда» - ❌ fbclid теряется — без него Conversion API не работает, реклама в Meta оптимизируется вслепую
- ❌ Tier не передаётся как структурное поле. Tilda знает только
«Стандарт / VIP / EXCLUSIVE» как имя формы; в amoCRM это уходит как
formname - ❌ Lead score (для Exclusive) не передаётся. Менеджер не видит «квалифицирован» / «не квалифицирован»
- ❌ Lead time (от перехода до submit) не передаётся. Не можем считать «горячие» vs «холодные» лиды
- ❌ Variant (A/B) не передаётся. Никаких выводов «какой лендинг работает»
- ❌ One-click upsell не работает. Tilda не знает про наши
event_type: upsell_clickсобытия — каждый апсейл придётся менеджеру разбирать руками
🟢 Что даёт прямая интеграция Make → amoCRM
| Что | Зачем менеджеру / маркетологу |
|---|---|
| Полные UTM в каждой сделке amoCRM | Видит «Facebook · cold · /vsl · ad-объявление-обработка-возражений» — сразу знает контекст разговора |
| fbclid и Conversion API | Реклама в Meta оптимизируется на реальные продажи, а не на «клики». ROAS в 2-3 раза выше |
| Tier как отдельное поле | Можно сегментировать pipeline: Стандарт → один менеджер, Exclusive → другой |
| Lead score + qualified | Топ-лиды Exclusive вверху списка, а не вперемешку |
| Туда же — апсейл-события | «Иван оставил Стандарт, а на /thank-you ткнул VIP» — менеджер звонит уже с VIP-предложением |
| Country (KZ / KG) | Маршрутизация на нужного менеджера. KZ-менеджер не звонит в KG в +6 часовой пояс |
| Variant + funnel_mechanism | Отчёт «какой лендинг и какой формат собирает больше платежей» |
| First/return-touch | Возвращающийся посетитель = горячий, менеджер видит сразу |
| Honeypot result + cooldown | Боты не доходят до менеджера — экономия времени, чистый pipeline |
Главное обоснование одной строкой: Tilda даёт «лид пришёл». Мы даём «вот лид с такой-то рекламы, такой-то теплоты, такой-то страны, готов на VIP — звони ему первым». Это разница в 30-50% к конверсии менеджерского звонка.
🟡 Что НЕ меняется для клиента (не нужно тратить нервы)
- amoCRM остаётся прежней — мы вписываемся в существующий pipeline
- Менеджеры работают как привыкли — звонят по тем же скриптам
- Tilda-форма продолжает работать параллельно (если есть органический
трафик на
bp.karada.kz) — мы не выключаем её, наша форма пишет рядом - Доступ к amoCRM остаётся у клиента — мы не создаём свой инстанс, а подключаемся к их аккаунту по их правам
Что мы просим у тех-специалиста Карада
Один созвон ~30 минут. Три вопроса — три ответа — и мы строим.
Вариант A · amoCRM Webhook (рекомендую)
Самый простой путь. amoCRM умеет принимать любой POST в виде «сделка».
От тех-спеца:
- amoCRM → Настройки → Интеграции → Входящий вебхук
- Создать вебхук на событие «Добавлена новая сделка»
- Прислать нам:
- URL вебхука (формат
https://{subdomain}.amocrm.ru/...) - Скрин/документ какие поля он принимает по умолчанию
- URL вебхука (формат
- (Опционально) Создать кастомные поля для UTM/tier/country — нам это нужно для отчётов, но без них вебхук всё-равно работает
Что мы делаем:
- Один HTTP-модуль в нашем Make сценарии → отправляет тот же payload, что идёт в Sheet/Slack
- За 1 час подключаем и тестируем
Вариант B · amoCRM API (если нужна тонкая настройка)
Если хочется заранее распихать поля по конкретным колонкам amoCRM, выбрать pipeline/status, добавить теги — лучше API.
От тех-спеца:
- Long-lived access token из интеграции amoCRM
- Subdomain (
{name}.amocrm.ru) - Pipeline ID — какая воронка принимает новых лидов
- Status ID — какой статус «новый лид»
- Custom field IDs — для UTM, tier, country (создать в amoCRM если их нет)
Что мы делаем:
- HTTP-модуль с Bearer токеном → POST
https://{subdomain}.amocrm.ru/api/v4/leads - Мапим наш payload на конкретные field_id в amoCRM
- За 2-3 часа подключаем + тестируем
Карта данных — что именно мы шлём в amoCRM
Этот блок — для тех-спеца: «какие поля вы хотите видеть в моей amoCRM».
Контактные данные (стандартные поля amoCRM)
| Наш payload | amoCRM поле |
|---|---|
lead.name | Имя контакта |
lead.phone | Телефон (формат +7... или +996...) |
lead.email |
Деловая информация (кастомные поля)
| Наш payload | amoCRM поле / тег |
|---|---|
tier | Tag или поле Тариф: standard · vip · exclusive · lead_magnet |
country | Tag или поле Страна: KZ · KG |
lead.qualified | Поле Квалифицирован (bool) — только для application mechanism |
lead.lead_score | Числовое поле Скор — от 0 до ~20 для application |
lead.tier_interest | Поле Желаемый тариф (что выбрал в форме регистрации) |
Реклама и атрибуция (новое для amoCRM)
| Наш payload | amoCRM поле |
|---|---|
attribution.utm_source | UTM Source |
attribution.utm_medium | UTM Medium |
attribution.utm_campaign | UTM Campaign |
attribution.utm_content | UTM Content (id креатива) |
attribution.utm_term | UTM Term (id ад-сета) |
attribution.fbclid | Meta Click ID (нужен для Conversion API) |
attribution.landing_path | Точка входа (/, /vsl, /exclusive…) |
attribution.touch | Касание (first-touch / second-touch) |
attribution.referrer | Referrer |
Техническое (для отладки)
| Наш payload | amoCRM поле |
|---|---|
submission_id | UUID — для дедупликации |
session_id | UUID сессии |
submitted_at | Время заявки (KZ timezone после Make форматирования) |
funnel_mechanism | Какой механик использовался |
meta.user_agent | Браузер |
meta.screen | Mobile vs Desktop |
→ Минимум для старта: имя + телефон + email + tier + utm_source + utm_campaign. Всё остальное — будет в payload автоматически, можно подключать по мере того как тех-спец создаёт поля.
Особый случай · Upsell события
Когда лид кликает «Да, добавить VIP» на /thank-you, мы шлём отдельный POST
с event_type: "upsell_click". Содержит original_submission_id —
указывает на исходную сделку.
В amoCRM это может быть:
Вариант 1 · Новая сделка с тегом (проще для менеджера)
- В amoCRM появляется отдельная сделка в pipeline «Апсейл» с тегом
upsell_from_lead_{uuid} - Менеджер видит как отдельную горячую задачу: «Иван хочет апгрейд VIP»
Вариант 2 · Обновление существующей сделки (чище для отчётов)
- Make делает GET на amoCRM API: «найди сделку с
submission_id= X» - Поднимает её этап на «Готов к апсейлу»
- Менеджер видит в той же карточке: лид стал тёплее
→ Какой выбрать — решает менеджер по продажам. Спросите на созвоне.
Что в Tilda сейчас НЕ передаётся (а мы будем)
| Поле | Tilda передаёт? | Make → amoCRM |
|---|---|---|
| Имя · телефон · email | ✅ | ✅ |
| Тариф | ⚠️ как formname | ✅ нативно tier |
| Сфера бизнеса | ✅ | ✅ через answers.niche |
| Город | ✅ | ✅ через answers.city |
| UTM × 5 (source/medium/campaign/content/term) | ❌ | ✅ все 5 |
| fbclid · gclid · yclid | ❌ | ✅ |
| Лендинг (path) | ❌ | ✅ |
| Tier как структурное поле | ❌ | ✅ |
| Lead score · qualified | ❌ | ✅ |
| First / return-touch | ❌ | ✅ |
| Variant (A/B) | ❌ | ✅ |
| Device type | ❌ | ✅ |
| Upsell события отдельным потоком | ❌ | ✅ |
| Honeypot / cooldown отметки | ❌ | ✅ — боты не доходят |
→ С нашей интеграцией amoCRM становится в 5-10 раз информативнее на каждый лид. Менеджер видит контекст за 5 секунд вместо 5 минут расспросов.
Диаграмма потока (когда подключим)
┌─────────────────────┐
│ Лид заполнил нашу │
│ форму │
└──────────┬──────────┘
│ POST JSON
▼
┌───────────────────┐
│ Make.com webhook │
│ (один URL, JSON) │
└────────┬──────────┘
│ fan-out (параллельно, не блокируется)
┌──────────┼──────────┬───────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌──────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐
│ Google │ │Slack │ │FlowLeads │ │ amoCRM │ │ Meta CAPI│
│ Sheet │ │alert │ │platform │ │ ⬅ NEW │ │ ⬅ NEW │
│append │ │msg │ │relay │ │ webhook │ │POST event│
└────────┘ └──────┘ └──────────┘ └────┬────┘ └──────────┘
│
▼
┌─────────────────┐
│ Существующая │
│ pipeline + tags │
│ Менеджер видит │
│ + UTM + tier + │
│ score + т.д. │
└─────────────────┘
Что от клиента списком на встречу
- Доступ amoCRM (вариант A — webhook) или API-token (вариант B)
- Подтверждение: Pipeline + Status, куда падают сделки
- Имя тех-спеца с правами — нам нужен 1 человек на связи
- Как обрабатывать upsell-события — новая сделка или апдейт существующей
- Готов ли тех-спец принять тестовый submit на тестовые данные (имя
QA Тест, телефон+7 700 000 0000) и удалить запись после проверки
Альтернатива на случай задержки
Если тех-спец недоступен на 1-2 недели — можно запустить рекламу без amoCRM:
- Лиды попадают в Google Sheet + Slack (уже работает)
- Менеджер Карада копирует горячие в amoCRM вручную
- НЕ долгосрочное решение — атрибуция в amoCRM не появляется, но рекламу можно крутить
→ Этот режим работает прямо сейчас. amoCRM можно подключить в любой момент без редеплоя сайта — добавляется один модуль в Make.