Заявки с форм Tilda попадают в Kommo напрямую через webhook - без Zapier, без Make, без промежуточных сервисов. Tilda отправляет POST-запрос на ваш endpoint, endpoint вызывает POST /api/v4/leads/complex в Kommo и создаёт сделку с контактом за один запрос. UTM-метки с лендинга уходят в кастомные поля сделки. Дедупликация идёт по email и телефону.
По наблюдениям Exceltic.dev из интеграционных проектов, половина компаний, которые использовали Zapier для связки Tilda + Kommo, сталкивались с одним из двух сценариев: либо Zapier начинал пропускать заявки при превышении task-лимита тарифа, либо маппинг полей ломался после обновления формы на стороне Tilda - и менеджеры узнавали об этом через несколько дней, когда лиды уже остыли. Кастомный webhook решает оба сценария: нет промежуточного сервиса - нет его ограничений.
Эта статья разбирает архитектуру прямой интеграции: как Tilda отправляет данные, как /leads/complex создаёт сделку с контактом за один запрос, и как сохранить UTM-параметры в карточке сделки.
Если вы уже настраивали воронку в Kommo и подключали формы через Zapier, этот материал покажет, почему прямой webhook дешевле и надёжнее в production.
Как Tilda отправляет данные форм
Tilda передаёт данные из форм через webhook - HTTP POST-запрос на URL, который вы указываете в настройках. Путь в интерфейсе: «Настройки сайта -> Формы -> Webhook». Там указывается один URL для всех форм сайта.
Webhook - механизм, при котором сервис сам отправляет данные на ваш endpoint в момент события, без опроса с вашей стороны.
Формат запроса - application/x-www-form-urlencoded (не JSON). Поля формы передаются как параметры POST. Стандартные поля имеют фиксированные имена: Name, Email, Phone. Кастомные поля получают имена, которые вы задали в настройках блока. Вместе с полями формы Tilda автоматически добавляет два технических поля: tranid (уникальный ID заявки) и formid (ID блока формы на странице).
Пример payload при заполнении формы:
Name=Ivan+Petrov&Email=ivan%40company.com&Phone=%2B79991234567&tranid=123456789&formid=rec123456
Если вы передаёте UTM-метки через скрытые поля формы, они придут отдельными параметрами: utm_source, utm_medium, utm_campaign.
Retry-поведение: если ваш endpoint не ответил кодом 200 за 5 секунд, Tilda делает два повторных запроса с интервалом в одну минуту. После третьей неудачной попытки заявка считается недоставленной. При первом подключении webhook Tilda отправляет тестовый запрос test=test - ваш endpoint должен вернуть 200 OK.
Идемпотентность: поле tranid уникально для каждой заявки. Это ключ для дедупликации на стороне вашего endpoint - если Tilda повторно отправила запрос из-за сетевой ошибки, вы можете проверить, не создавали ли уже сделку с этим tranid.
Что реализуется: прямой webhook без посредников
Схема интеграции выглядит так: Tilda -> ваш middleware-endpoint -> Kommo API. Никаких Zapier, Make или n8n в этой цепочке нет.
Ваш endpoint принимает POST от Tilda, парсит поля, и вызывает POST https://{subdomain}.kommo.com/api/v4/leads/complex. Этот endpoint Kommo создаёт сделку и контакт за один запрос - не нужно сначала создавать контакт, получать его ID, и потом привязывать к сделке.
Тело запроса к /leads/complex:
[{
"name": "Заявка с Tilda - Ivan Petrov",
"pipeline_id": 12345,
"status_id": 67890,
"custom_fields_values": [
{
"field_id": 111001,
"values": [{"value": "google"}]
},
{
"field_id": 111002,
"values": [{"value": "cpc"}]
}
],
"_embedded": {
"contacts": [{
"name": "Ivan Petrov",
"custom_fields_values": [
{
"field_id": 264911,
"values": [{"value": "+79991234567", "enum_code": "WORK"}]
},
{
"field_id": 264913,
"values": [{"value": "[email protected]", "enum_code": "WORK"}]
}
]
}]
}
}]
Поля field_id для телефона и email в Kommo не универсальны - их нужно получить через GET /api/v4/contacts/custom_fields для вашего аккаунта. pipeline_id и status_id - аналогично через GET /api/v4/leads/pipelines.
UTM-параметры в кастомные поля. Если в форме Tilda настроены скрытые поля utm_source, utm_medium, utm_campaign, они придут в payload и их можно записать в кастомные поля сделки через тот же custom_fields_values. Так в карточке сделки будет виден источник: какая кампания, какой канал привёл лида.
Дедупликация по email и телефону. Kommo проверяет при создании контакта через /leads/complex, есть ли в базе контакт с таким же телефоном или email. Если есть - новая сделка привязывается к существующему контакту, дубль не создаётся. Это поведение встроено в endpoint и не требует отдельной логики на вашей стороне.
Аутентификация в Kommo API - OAuth 2.0. Access token передаётся в заголовке Authorization: Bearer {token}. Токен действует 24 часа, обновляется через refresh token.
Пошаговая схема интеграции
Вот как выглядит процесс реализации от начала до запуска в production.
Шаг 1. Настройка скрытых полей UTM в Tilda.
В настройках блока формы добавьте скрытые поля: utm_source, utm_medium, utm_campaign, utm_term, utm_content. Tilda умеет автоматически подставлять значения из URL-параметров в скрытые поля - активируйте эту опцию в настройках формы.
Шаг 2. Разработка middleware-endpoint.
Endpoint принимает POST от Tilda, парсит application/x-www-form-urlencoded, проверяет tranid на дубль (кэш или БД), формирует тело запроса для Kommo, вызывает /leads/complex, возвращает 200 OK не позже чем через 4 секунды (с запасом перед таймаутом Tilda в 5 секунд).
Шаг 3. Подключение webhook в Tilda.
Настройки сайта -> Формы -> Webhook -> указать URL вашего endpoint. Tilda отправит тестовый запрос test=test. Endpoint должен вернуть 200 OK на любой запрос, включая тестовый.
Шаг 4. Маппинг field_id в Kommo. Получить актуальные ID полей для вашего аккаунта:
GET /api/v4/contacts/custom_fields- поля контактов (телефон, email)GET /api/v4/leads/custom_fields- поля сделок (UTM-поля)GET /api/v4/leads/pipelines- ID воронки и этапа
Шаг 5. Тестирование на staging. Заполнить форму с тестовыми данными, проверить: создалась ли сделка в нужной воронке, привязался ли контакт, записались ли UTM-значения, не создался ли дубль контакта при повторной отправке.
Шаг 6. Мониторинг retry-запросов.
Добавьте логирование tranid и HTTP-статусов ответов. Если видите повторные tranid - значит Tilda делала retry из-за медленного ответа endpoint. Оптимизируйте время ответа: основной сценарий должен укладываться в 1-2 секунды.
Реальный кейс
Типичный сценарий из проектов Exceltic.dev: компания с несколькими лендингами на Tilda и воронкой продаж в Kommo. До интеграции менеджеры проверяли входящие заявки вручную в почте и копировали данные в CRM. Средняя задержка между заявкой и созданием сделки составляла 2-4 часа в рабочее время и до 12 часов в нерабочее.
После внедрения прямого webhook:
- Сделка в Kommo появляется в течение 3-5 секунд после отправки формы
- UTM-поля заполняются автоматически - менеджер видит источник лида без дополнительных вопросов
- Дубли контактов при повторных заявках от одного клиента не создаются - новая сделка привязывается к существующему контакту
- Ручной ввод данных исключён полностью
В одном из проектов - компания в сфере B2B-услуг с 3 активными лендингами - за первую неделю после запуска интеграции время реакции менеджера на заявку сократилось с нескольких часов до 15-20 минут: сделка уже была в CRM с заполненными полями, оставалось только позвонить.
Zapier в аналогичных сценариях давал задержку 5-15 минут (polling-интервал на базовом тарифе) плюс регулярные сбои при исчерпании task-лимита. Прямой webhook работает в режиме реального времени и не зависит от тарифных ограничений третьего сервиса.
Для кого подходит эта интеграция
Решение актуально для компаний на Kommo, у которых Tilda - основной или один из основных источников входящих лидов. Чаще всего это компании с 15-50 сотрудниками, где есть выделенный отдел продаж и несколько лендингов под разные продукты или кампании.
Если вы уже используете Kommo как основу воронки и хотите разобраться, какие ещё возможности платформы не задействованы, читайте полный обзор Kommo CRM.
Прямой webhook особенно полезен в трёх ситуациях:
- Zapier или Make уже исчерпывают task-лимит или обходятся дороже, чем хотелось бы
- Требуется передача UTM-параметров в Kommo - нативные интеграции это не поддерживают в нужном объёме
- Нужен контроль над дедупликацией контактов: несколько форм, один клиент может заполнить несколько
Аналогичный подход - прямой webhook без посредников - применяется и в других интеграциях Kommo: например, в интеграции Kommo + Stripe, где платёжные события записываются в карточку сделки через webhook Stripe.
Если ваш стек шире Kommo и включает платные каналы трафика, стоит посмотреть как UTM-данные из CRM замыкаются на реальную стоимость сделки - это решает Prooflytics, которым пользуются команды, работающие с Kommo и несколькими рекламными каналами одновременно.
Часто задаваемые вопросы
Нужен ли Zapier или Make для интеграции Tilda с Kommo?
Нет. Tilda поддерживает отправку данных формы напрямую на любой URL через webhook (POST-запрос). Kommo принимает данные через REST API. Вам нужен только middleware-endpoint - небольшой скрипт или serverless-функция, которая принимает запрос от Tilda и вызывает Kommo API. Никакие платные автоматизационные сервисы в этой цепочке не нужны.
Что произойдёт, если мой endpoint будет недоступен в момент отправки формы?
Tilda сделает два повторных запроса с интервалом одну минуту. Если все три попытки провалились - заявка будет потеряна. Чтобы этого избежать: используйте надёжный хостинг с uptime выше 99.9%, настройте мониторинг endpoint, добавьте алерты при ошибках. Для критических форм можно добавить резервный канал - например, дублировать данные в таблицу или очередь при неудаче запроса к Kommo.
Как передать UTM-метки с лендинга в карточку сделки Kommo?
Добавьте в форму Tilda скрытые поля с именами utm_source, utm_medium, utm_campaign. В настройках формы включите автоподстановку значений из URL-параметров - Tilda умеет это из коробки. Скрытые поля придут в webhook payload вместе с остальными данными. На стороне middleware записывайте их в кастомные поля сделки через custom_fields_values в запросе к /leads/complex.
Как избежать дублей, если один человек заполнит форму дважды?
Kommo при создании контакта через /leads/complex проверяет базу на совпадение по email и телефону. Если контакт с такими данными уже есть - новая сделка привязывается к существующему контакту, а не создаётся второй контакт. Дополнительно используйте поле tranid от Tilda как ключ идемпотентности на стороне endpoint: храните обработанные tranid и игнорируйте повторные запросы с тем же ID.
Какие данные из формы Tilda можно передать в Kommo?
Любые поля формы: имя, email, телефон, текстовые поля, выпадающие списки, чекбоксы. Плюс скрытые поля - UTM-метки, ID страницы, любые другие данные, которые вы хотите передать. Технически ограничений по набору полей нет - всё, что отправляет Tilda в webhook payload, доступно в middleware и может быть записано в стандартные или кастомные поля Kommo.
Итог
Прямой webhook Tilda -> Kommo - это надёжнее и дешевле, чем любой автоматизационный сервис посередине:
- Заявка попадает в CRM в течение нескольких секунд, а не минут
- UTM-данные сохраняются в полях сделки без ручного ввода
- Дедупликация контактов работает через встроенную логику Kommo
- Нет зависимости от тарифных лимитов Zapier или Make
Если у вас уже есть Tilda и Kommo и вы хотите настроить прямую передачу заявок - опишите вашу форму и текущий стек команде Exceltic.dev. Разберём архитектуру, предложим решение под ваш объём трафика и набор полей.
Title tag: Kommo + Tilda: заявки с форм в воронку без Zapier Meta description: Прямой webhook Tilda -> Kommo без Zapier и Make. Как настроить передачу заявок с форм в сделки Kommo с UTM-метками и дедупликацией контактов. LSI-запросы: tilda kommo интеграция, tilda webhook crm, kommo api leads complex, заявки tilda в crm, utm метки kommo Slug: /blog/kommo-tilda-forma-v-sdelku