lobsite! Entrar Criar conta

Os robôs do Lobsite /

Lobsite-Webhooks

As requisições do Lobsite-Webhooks/1 entregam envios de formulários de um site no Lobsite a um endereço definido pelo dono. Como verificá-las e interrompê-las.

User agent Lobsite-Webhooks/1

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.

Outros user agents do Lobsite