Как отследить отправку формы Тильда и отправить собственный запрос на свой обработчик на другом сайте

Тильда (Tilda) — популярный конструктор сайтов, который используется не только для лендингов, но и для корпоративных сайтов с формами обратной связи. Стандартный механизм обработки форм Тильды отправляет данные на собственные серверы Tilda и уведомляет вас по email. Но что если нужно:

  • Отправлять данные в CRM или собственную базу данных
  • Регистрировать пользователей автоматически через API
  • Передавать данные в Битрикс24 или amoCRM без посредников
  • Фиксировать конверсию в Яндекс Метрике или Google Analytics

В таких случаях необходимо перехватить отправку формы и отправить собственный AJAX-запрос на свой обработчик. Именно это мы и разберём в этой статье.

Как работает событие в Тильде: tildaform:aftersuccess

Тильда предоставляет специальное событие tildaform:aftersuccess, которое срабатывает после того, как форма успешно прошла валидацию и была отправлена через стандартный механизм Тильды. Это не событие submit браузера — это кастомное событие DOM, которое генерирует сам JavaScript Тильды.

Важно правильно инициализировать обработчик. Поскольку формы Тильды рендерятся динамически, нужно убедиться, что DOM уже готов перед навешиванием обработчиков. Используем проверку document.readyState:

Полный пример кода для перехвата формы Тильда

Объяснение ключевых частей кода

Сбор данных формы: Мы итерируемся по form.elements — это стандартная HTMLCollection всех полей формы. Для radio-кнопок проверяем input.checked, чтобы не захватить невыбранные варианты. Результат — объект obj, где ключи соответствуют атрибуту name каждого поля.

Имена полей в Тильде: В настройках каждого поля формы в редакторе Тильды можно задать переменную (Variable). Именно это значение попадает в атрибут name и становится ключом в объекте obj. По умолчанию Тильда использует имена вроде Name, Email, Phone.

Пример PHP-обработчика на своём сервере

Как обойти CORS если домены разные

Если ваш обработчик находится на другом домене, чем сайт Тильды, браузер заблокирует запрос из-за политики CORS. Решения:

  • Заголовки CORS на сервере — добавьте в PHP-обработчик заголовок Access-Control-Allow-Origin: https://your-tilda-site.com. Не используйте * для запросов с авторизацией.
  • Proxy на сервере Тильды — если Тильда размещена на вашем домене (не на tilda.ws), можно использовать прокси на том же домене.
  • JSONP — устаревший способ, не рекомендуется.

Отслеживание конверсии через Яндекс Метрику

После успешной отправки формы логично зафиксировать цель в Яндекс Метрике. Добавьте вызов в функцию mySuccessFunction:

Замените XXXXXXXX на номер вашего счётчика Яндекс Метрики, а form_submit — на идентификатор цели, настроенной в интерфейсе Метрики.

Итог

Механизм tildaform:aftersuccess — правильный способ перехватить отправку формы Тильды без вмешательства в стандартный механизм. Данные уже прошли валидацию Тильды, поэтому вы получаете только корректно заполненные формы. Подключите jQuery (если его нет), добавьте скрипт в блок «HTML» или в пользовательский JS сайта, укажите правильные имена полей — и интеграция с любым внешним сервисом будет работать.