Lobsite-Webhooks — это user agent вебхуков, которые отправляет Lobsite. Сайт в Lobsite с формой может отправлять каждую заявку на адрес вебхука, который владелец указал в lobsite.toml, и эти запросы — как раз такие доставки. Если вы видите его в логах, значит, кто-то направил вебхук формы на ваш сервер — обычно вы сами, со своего сайта в Lobsite.
Как выглядит запрос
Каждая принятая заявка, не признанная спамом, — это один POST с телом в JSON:
POST /hooks/contact HTTP/1.1
Content-Type: application/json
User-Agent: Lobsite-Webhooks/1
X-Lobsite-Event: form.submission
X-Lobsite-Delivery: dlv_3m9q…
X-Lobsite-Signature: t=1760372438,v1=5257a869…
{
"type": "form.submission",
"id": "sub_8x2k…",
"site": "quiet-fox-4821",
"form": "contact",
"data": { "email": "ana@example.com", "message": "Hi!" },
"created_at": "2026-10-13T16:20:38Z"
}
Вебхуки отправляются только на адреса https://, которые не указывают на частные или внутренние сети.
Как проверить, что запрос действительно от Lobsite
User agent можно подделать, подпись — нет. X-Lobsite-Signature содержит метку времени t и v1 — HMAC-SHA256 в шестнадцатеричном виде от "<t>.<raw body>" с секретом вебхука формы, который один раз показывается в панели Lobsite. Вычислите то же значение по сырому телу, сравните за постоянное время и отклоняйте t старше 5 минут.
import { createHmac, timingSafeEqual } from "node:crypto";
function verified(secret, header, rawBody) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return v1?.length === expected.length && timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}
Повторные попытки
Ответ 2xx в течение 10 секунд считается доставкой. Всё остальное повторяется ещё 5 раз: через 1 минуту, 5 минут, 30 минут, 2 часа и 12 часов. X-Lobsite-Delivery не меняется между попытками, так что доставку, которую вы уже обработали, можно пропустить.
Частые вопросы
Как остановить эти запросы?
Если сайт ваш, уберите webhook из формы в lobsite.toml и задеплойте. Если нет, отвечайте ошибкой: каждая заявка пробуется всего 6 раз, а потом отбрасывается. Если запросы продолжаются, сообщите о них на странице Сообщить о нарушении, указав значение X-Lobsite-Delivery, и мы разберёмся.
На каких тарифах отправляются вебхуки?
Вебхуки входят в тариф Standard. Сайты на бесплатном тарифе вместо этого получают уведомления по почте. См. документацию по формам.
Почему одна и та же заявка приходит дважды?
В первый раз ваш сервер ответил слишком медленно или с ошибкой, поэтому была повторная попытка. Пропускайте доставки, X-Lobsite-Delivery которых вы уже видели.