Перейти к основному содержимому

Заявки с сайта на Tilda в таблицу

Каждая заявка с формы на сайте Tilda сразу появляется строкой на листе «Заявки с сайта», а ответственный получает сообщение в Telegram. Своего сервера не нужно: Tilda отправляет заявку на адрес вебхука скрипта.

Что понадобится:

  • таблица Coverse на тарифе «Бизнес» или выше;
  • сайт на Tilda с формой;
  • 10 минут.

1. Создайте скрипт​

  1. Откройте таблицу и панель скриптов, создайте пустой скрипт.
  2. Вставьте код:
const SHEET = "Заявки с сайта";
const CHAT_ID = 0;

function onWebhook(event) {
if (!event) return;

const data = event.form || event.json || {};
if (data.test === "test") {
console.log("Проверочный запрос Tilda");
return;
}

const sheet = Coverse.table.getSheetByName(SHEET) || Coverse.table.insertSheet(SHEET);
if (sheet.getLastRow() === 0) {
sheet.appendRow(["Дата", "Имя", "Телефон", "Email", "Форма", "ID заявки"]);
}

const id = String(data.tranid || "");
if (id !== "") {
const known = sheet.getRange(1, 6, sheet.getLastRow(), 1).getValues().map((row) => String(row[0]));
if (known.includes(id)) {
console.log("Заявка уже записана:", id);
return;
}
}

const name = data.Name || "";
const phone = data.Phone || "";
sheet.appendRow([new Date(), asText(name), asText(phone), asText(data.Email), asText(data.formid), asText(id)]);

if (CHAT_ID !== 0) {
Telegram.send(CHAT_ID, "Новая заявка с сайта: " + name + ", " + phone);
}
}

function asText(value) {
const text = String(value === undefined || value === null ? "" : value);
return text.charAt(0) === "=" ? "'" + text : text;
}
  1. Сохраните скрипт.

Форма на сайте открыта всем, поэтому значения записываются через asText: текст, который начинается с =, иначе стал бы формулой в вашей таблице. Функция ставит перед таким значением апостроф, и оно записывается текстом. Телефон вида +79991234567 таблица сохраняет числом: в ячейке он виден так, как его ввели, а getValues вернёт число без «+». Если скрипт дальше работает с телефоном как с текстом, приводите его через String(...).

Если в форме есть другие поля, добавьте их в заголовки и в appendRow. Tilda передаёт каждое поле под его именем переменной из настроек формы: по умолчанию с заглавной буквы, например Name, Phone, Email. Чтобы увидеть точные имена, отправьте тестовую заявку и посмотрите событие в журнале запуска.

2. Создайте адрес вебхука​

  1. В редакторе скрипта откройте вкладку «Триггеры» и нажмите «Добавить триггер».
  2. Выберите «По вебхуку» и функцию onWebhook.
  3. Скопируйте адрес вида https://app.coverse.team/api/hooks/scripts/whs_…. Секрет уже входит в адрес, поэтому не публикуйте его.

Подробнее о настройках: Вебхуки.

3. Подключите адрес в Tilda​

  1. В Tilda откройте настройки сайта, раздел «Формы», и выберите приёмщик данных Webhook.
  2. Вставьте адрес вебхука из Coverse и сохраните.
  3. Откройте страницу с формой, в настройках блока формы отметьте этот приёмщик и опубликуйте страницу.

Сразу после подключения Tilda отправляет проверочный запрос с полем test=test. Coverse отвечает на него 200 OK, а скрипт выше узнаёт такой запрос и ничего не записывает. Подробнее о приёмщике — в справке Tilda.

4. Проверьте​

  1. Отправьте заявку с опубликованной страницы.
  2. Через несколько секунд на листе «Заявки с сайта» появится строка.
  3. На вкладке «Журнал» скрипта виден запуск по вебхуку и полученное событие.

Чтобы получать сообщения в Telegram, сохраните токен бота в секрет TELEGRAM_BOT_TOKEN и замените CHAT_ID на идентификатор чата. Как узнать идентификатор, описано в статье Внешние сервисы.

Как это защищено от повторов​

Tilda повторяет отправку, если не получила ответ за 5 секунд. Coverse отвечает сразу, но если запрос всё же придёт дважды, скрипт найдёт номер заявки tranid в столбце «ID заявки» и не запишет её второй раз.

Если заявки не приходят​

СимптомПричинаЧто сделать
в журнале скрипта нет запусковадрес вставлен с ошибкой или приёмщик не отмечен в блоке формыпроверьте адрес и настройки блока, переопубликуйте страницу
заявки перестали приходить к концу днязакончилась норма минут скриптов: Coverse отклоняет запросы с кодом 429, скрипт не запускаетсяпроверьте расход в панели скриптов, см. Лимиты
поле записалось пустымимя переменной поля в Tilda другоепосмотрите событие в журнале и поправьте имя в коде
строка не появилась, в журнале «Ошибка»ошибка в коде после правоктекст ошибки и номер строки — в журнале

Coverse отвечает Tilda 200 OK до запуска скрипта. Если скрипт упадёт с ошибкой или запуск не состоится (в журнале статус «Не запустился», например запуск слишком долго ждал очереди или закончилась норма минут), Tilda не будет отправлять заявку повторно. Поэтому после правок кода проверяйте журнал. Сами заявки остаются и в разделе «Заявки» в Tilda.

Частые вопросы​

Как принимать заявки с Tilda в таблицу?​

Укажите адрес вебхука скрипта Coverse как приёмщик Webhook в настройках форм Tilda. Скрипт запишет каждую заявку строкой.

Будут ли дубли заявок?​

Нет. Скрипт проверяет номер заявки tranid и не записывает её второй раз.

Можно ли получать уведомление о заявке в Telegram?​

Да: укажите идентификатор чата в коде и сохраните токен бота в секрет TELEGRAM_BOT_TOKEN.

Что дальше​