Интеграции форм
Каждый лендинг из @layero включает форму. Куда уходят данные, юзер выбирает в третьем квизе.
Telegram
Заявки приходят в чат или группу через бот.
Что нужно от юзера:
- Токен бота от
@BotFather - ID чата куда слать (через
@RawDataBot— пишет любое сообщение, бот отвечает с chat_id)
Что делает плагин:
- Создаёт мини-relay на FastAPI (
forms-relay/main.py) - Деплоит его как Layero runtime-приложение
- Прописывает env-vars
TELEGRAM_BOT_TOKENиTELEGRAM_CHAT_ID - Подставляет URL relay'а в
<form action>лендинга
Юзеру не нужно настраивать CORS, держать своё API или поднимать сервер — Layero делает это в одно действие.
Google Sheets
Заявки — новая строка в Google-таблице. Без своего бэкенда.
Что нужно от юзера:
- Создать пустой Spreadsheet
- Меню Расширения → Apps Script → вставить код (плагин его сгенерирует под нужные поля)
- Развернуть → Веб-приложение → Доступ: все → скопировать URL
- Вернуть URL в чат
Что делает плагин:
- Генерирует Apps Script под колонки формы (timestamp, name, email, message, …)
- Вписывает Web App URL в
<form action> - Добавляет небольшой JS для thank-you-state без перезагрузки
CORS не нужен — Apps Script принимает application/x-www-form-urlencoded без preflight.
Custom webhook / Notion / HubSpot / своё API
Если у юзера есть собственный endpoint или сервис (Notion, HubSpot, ConvertKit, Airtable, свой backend), плагин действует по схеме:
| Что у юзера | Что делает плагин |
|---|---|
| Webhook URL | Прописывает <form action> → готово |
| Public form embed (Mailchimp, HubSpot, etc.) | Извлекает action URL из embed-кода + дублирует field names |
| API-ключ от сервиса | Поднимает Layero relay (как Telegram), хранит ключ в env-vars, форвардит payload |
| Свой backend | Один вопрос: «какие поля он ожидает?» → подставляет имена |
Когда intergration = skip
Юзер может явно пропустить выбор интеграции. В этом случае <form action> ставится в плейсхолдер {{FORM_ACTION}}, и юзер настраивает интеграцию позже (повторным вызовом @layero add-integration ...).