Lobsite-Webhooks é o user agent dos webhooks que o Lobsite envia. Um site no Lobsite com um formulário pode enviar cada envio para um endereço de webhook que o dono definiu no lobsite.toml, e essas requisições são essas entregas. Se você o vê nos seus logs, alguém apontou o webhook de um formulário para o seu servidor: geralmente você mesmo, a partir do seu próprio site no Lobsite.
Como é uma requisição
Cada envio aceito que não é spam vira um POST com corpo 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"
}
Webhooks só vão para endereços https:// que não apontam para redes privadas ou internas.
Confira se uma requisição vem mesmo do Lobsite
O user agent pode ser falsificado; a assinatura, não. X-Lobsite-Signature traz um carimbo de tempo t e v1, o HMAC-SHA256 em hexadecimal de "<t>.<raw body>" com o segredo do webhook do formulário, mostrado uma vez no painel do Lobsite. Calcule o mesmo valor a partir do corpo bruto, compare em tempo constante e rejeite um t com mais de 5 minutos.
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));
}
Novas tentativas
Uma resposta 2xx em até 10 segundos conta como entregue. Qualquer outra coisa é tentada de novo 5 vezes: depois de 1 minuto, 5 minutos, 30 minutos, 2 horas e 12 horas. X-Lobsite-Delivery continua igual entre as tentativas, então você pode pular uma entrega que já tratou.
Perguntas frequentes
Como paro essas requisições?
Se o site é seu, remova webhook do formulário no lobsite.toml e publique. Se não é, responda com um erro: cada envio é tentado 6 vezes no total e depois descartado. Se continuarem chegando, denuncie na página Denunciar abuso com o valor de X-Lobsite-Delivery e vamos verificar.
Quais planos enviam webhooks?
Webhooks fazem parte do plano Standard. Sites no plano gratuito recebem notificações por e-mail no lugar. Veja a documentação de formulários.
Por que recebo o mesmo envio duas vezes?
Seu servidor respondeu devagar demais ou com erro na primeira vez, então houve nova tentativa. Pule entregas cujo X-Lobsite-Delivery você já viu.