Відкривається в новій вкладці
UK
Увійти

Google Forms → Sviteya: запуск воронки після заповнення форми

Ви зібрали заявки, реєстрації чи опитування в Google Forms — і хочете, щоб бот одразу відреагував: подякував, надіслав матеріал, поставив тег, записав відповіді у змінні контакта. У Google Forms немає вбудованих вебхуків — станом на 2026 рік Google їх так і не додав. Але задача розв’язується двома способами: без коду (через сервіс-посередник) і безплатно (вбудованим скриптом Google). Обидва описані нижче. Перед початком прочитайте базову інструкцію «Вхідні вебхуки» — звідти вам знадобиться адреса вебхука вашої воронки.

Що знадобиться

  1. Воронка з тригером «Вхідний вебхук», опублікована, і скопійована адреса вигляду https://app.sviteya.ai/api/hooks/whk_....
  2. Google-форма, яку ви можете редагувати.
  3. Telegram ID людини у формі — це головна складність, і саме з неї починаємо.

Крок 1. Навчіть форму знати, хто її заповнює

Sviteya має зрозуміти, якому саме контакту відповідати. Google Forms сама по собі про Telegram нічого не знає, тому ID треба передати у форму наперед, у самому посиланні.

1.1. Додайте у форму технічне питання

У формі створіть питання типу «Коротка відповідь» з назвою tgid. В описі питання напишіть щось на кшталт «Технічне поле, не змінюйте».

Справжніх прихованих полів у Google Forms немає. Людина побачить це поле і теоретично може стерти значення — тоді бот просто не відповість їй. Для більшості сценаріїв це прийнятно; якщо ні, дивіться розділ «Якщо технічне поле заважає» нижче.

1.2. Отримайте заповнене посилання

У формі: ⋮ (три крапки вгорі) → «Отримати заповнене посилання». Відкриється форма — впишіть у поле tgid будь-що (наприклад, тест) і натисніть «Отримати посилання» внизу, далі «Копіювати посилання».

Ви отримаєте адресу приблизно такого вигляду:

https://docs.google.com/forms/d/e/1FAIpQL.../viewform?entry.123456789=тест

Число entry.123456789 — це технічний номер вашого питання tgid. Він у кожної форми свій.

1.3. Роздавайте форму лише через це посилання

У воронці, де ви даєте людині кнопку чи посилання на форму, підставте замість тест системну змінну Telegram ID (у тексті чи в адресі кнопки її вставляє кнопка «поле», і виглядає вона як {{field:fld_telegram_id}}):

https://docs.google.com/forms/d/e/1FAIpQL.../viewform?entry.123456789={{field:fld_telegram_id}}

Тепер кожна людина, яка перейде з бота, відкриє форму з уже вписаним у поле tgid своїм ID — і він повернеться разом із відповідями.

Якщо ви даєте посилання на форму деінде (в рекламі, на сайті), для тих людей tgid буде порожній, і бот їм не відповість — Telegram не дозволяє ботам писати першими. Це нормально: вебхук працює лише для тих, хто вже є у вашому боті.

Крок 2. Спосіб А (без коду): Zapier, Make або n8n

Найшвидший шлях, якщо у вас уже є підписка на один із цих сервісів.

  1. Створіть новий сценарій.
  2. Тригер: Google Forms → «New Form Response» (у Make — Google Forms «Watch Responses», у n8n — Google Forms Trigger). Підключіть свій Google-акаунт і оберіть форму.
  3. Дія: «Webhooks → POST» (Make: «HTTP → Make a request», n8n: «HTTP Request»).
    • URL — ваша адреса /api/hooks/...
    • Метод — POST
    • Тип даних — JSON
    • Поля — telegramId = відповідь на питання tgid, плюс усе інше, що вам потрібно (email, ім’я, вибраний тариф).
  4. Увімкніть сценарій і надішліть тестову відповідь на форму.

Мінуси способу: це платна підписка, а на безплатних тарифах посередники перевіряють нові відповіді раз на 5–15 хвилин — бот відповість не миттєво.

Крок 3. Спосіб Б (безплатно): вбудований скрипт Google

Працює миттєво, нічого не коштує, налаштовується один раз. Код вставляється готовий — розбиратися в програмуванні не треба.

3.1. Відкрийте редактор скриптів

У формі: ⋮ (три крапки вгорі) → Розширення → Apps Script. Відкриється вкладка з порожнім файлом і текстом function myFunction() {}. Виділіть усе, що там є, і видаліть.

3.2. Вставте код

const HOOK = 'https://app.sviteya.ai/api/hooks/whk_ВАШ_ТОКЕН';

function sendToSviteya(e) {
  const answers = {};
  e.response.getItemResponses().forEach(r => {
    answers[r.getItem().getTitle()] = r.getResponse();
  });

  const payload = {
    event_id: e.response.getId(),
    telegramId: String(answers['tgid'] || '').trim(),
    email: answers['Ваш email'] || '',
    name: answers['Як вас звати'] || ''
  };

  UrlFetchApp.fetch(HOOK, {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  });
}

Що виправити у своєму випадку:

  • у першому рядку — вставте свою адресу вебхука;
  • у блоці payload праворуч, у лапках, — точні назви питань вашої форми, буква в букву ('Ваш email', 'Як вас звати');
  • ліворуч (email, name) — назви, які ви пропишете в мапінгу тригера «Вхідний вебхук». Їх ви обираєте самі; краще латиницею, без пробілів.

Рядків можна додати скільки завгодно — по одному на кожне питання, яке хочете забрати у воронку. Рядок telegramId не чіпайте, він обов’язковий. Рядок event_id теж залиште: це унікальний номер відповіді, завдяки йому Sviteya не сприйме повторну відповідь з тими самими даними за дубль (див. розділ «Повторні запити» в інструкції «Вхідні вебхуки»).

Натисніть значок дискети (Зберегти).

3.3. Увімкніть тригер

У редакторі скриптів зліва — значок годинника («Тригери») → кнопка «Додати тригер» внизу праворуч. У вікні виберіть:

Поле Значення
Функція для запуску sendToSviteya
Джерело події З форми
Тип події Надсилання форми

Збережіть. Google попросить дозвіл: оберіть свій акаунт, далі на екрані «Google не перевірив цей додаток» натисніть «Додатково» → «Перейти до…» і дайте дозвіл. Це нормально — додаток ваш власний, він нікуди не публікується.

3.4. Перевірте

Заповніть форму самі — перейшовши з бота, за посиланням із кроку 1.3, щоб tgid заповнився автоматично. Далі перевірте:

  • у редакторі воронки на блоках з’явилися лічильники проходів;
  • у картці вашого контакта записалися значення полів;
  • бот надіслав те, що мав.

Якщо не спрацювало

Симптом Причина Що робити
Нічого не відбувається Тригер не увімкнено Перевірте розділ «Тригери» — там має бути рядок із sendToSviteya
Нічого не відбувається, тригер є Не дано дозвіл Відкрийте «Виконання» в редакторі скриптів — там буде помилка авторизації; перезбережіть тригер і дайте дозвіл
Воронка не запускається для конкретної людини Порожній або чужий tgid Людина відкрила форму не за посиланням із бота, або стерла технічне поле
Воронка не запускається ні для кого Воронку не опубліковано Натисніть «Опублікувати» в редакторі воронок
Повторна відповідь нічого не запустила Сервіс відсікає запити з однаковим тілом протягом 24 годин Переконайтеся, що в коді є рядок event_id
Воронка запускається, але поля порожні Назви питань у коді не збігаються з формою Звірте текст у лапках із назвою питання буква в букву

Журнал усіх спрацювань скрипта — у редакторі скриптів, розділ «Виконання» зліва. Там видно кожну спробу і текст помилки. Що отримала сама Sviteya, видно в «Інтеграції» → «Журнал вебхуків»: кожен запит позначено як «прийнято», «дубль» або «відхилено» з причиною.

Якщо технічне поле заважає

Варіанти, коли показувати tgid у формі незручно:

  • Замініть форму на міні-лендинг Sviteya. Якщо форма потрібна лише для збору кількох відповідей, простіше зібрати їх питаннями прямо у воронці або міні-лендингом — тоді Telegram ID відомий сам собою, і жодних скриптів не потрібно.
  • Замініть Google Forms на конструктор із підтримкою прихованих полів (наприклад, Typeform або Jotform) — там приховане поле передається в посиланні і людина його не бачить.
  • Прив’язуйте за email. Якщо ви вже зберігали email людини в полі контакта, у блоці «Вхідний вебхук» у розділі «кого шукати» вкажіть ключ запиту (наприклад email) і поле контакта з поштою. Тоді telegramId у запиті не потрібен. Якщо за поштою знайдеться кілька людей, сервіс нікому не напише, а причину («кілька збігів») покаже в журналі вебхуків.

Часті питання

Чи можна прив’язати скрипт до таблиці відповідей, а не до форми?

Так, тоді тригер створюється в Apps Script таблиці, тип події — «Під час надсилання форми», а відповіді читаються з e.namedValues. Спосіб через форму простіший, тому в інструкції описаний саме він.

Скільки таких форм можна підключити?

Скільки завгодно. Кожна форма — свій скрипт і, як правило, своя воронка зі своєю адресою вебхука. Одна адреса приймає до 300 запитів на хвилину.

Чи безпечно вставляти адресу вебхука в скрипт?

Так: код бачите тільки ви й ті, кому ви дали доступ до форми. Не викладайте цей код у відкритий доступ — адреса вебхука рівносильна ключу.

Google обмежує кількість викликів?

Так, у безплатних акаунтах Apps Script має добові квоти на зовнішні запити (порядку 20 тисяч на день) — для форм із заявками це на порядки більше, ніж потрібно.

Інтерфейс сервісу зараз оновлюється, тож деякі назви кнопок і екранів можуть відрізнятися від описаних.

Знайшли неточність? Напишіть у нашу групу в Telegram — виправимо.