Lobsite-Webhooks è lo user agent dei webhook che Lobsite invia. Un sito Lobsite con un modulo può inviare ogni invio a un indirizzo webhook che il proprietario ha impostato in lobsite.toml, e queste richieste sono quelle consegne. Se lo vedi nei tuoi log, qualcuno ha puntato il webhook di un modulo al tuo server: di solito tu stesso, dal tuo sito Lobsite.
Com'è fatta una richiesta
Ogni invio accettato e non spam è un POST con un 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"
}
I webhook vanno solo a indirizzi https:// che non risolvono verso reti private o interne.
Verifica che una richiesta venga davvero da Lobsite
Lo user agent si può falsificare; la firma no. X-Lobsite-Signature contiene un timestamp t e v1, l'HMAC-SHA256 esadecimale di "<t>.<raw body>" con il secret del webhook del modulo, mostrato una sola volta nella dashboard di Lobsite. Calcola lo stesso valore dal corpo grezzo, confronta in tempo costante e rifiuta un t più vecchio di 5 minuti.
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));
}
Nuovi tentativi
Una risposta 2xx entro 10 secondi conta come consegnata. Qualsiasi altra cosa viene ritentata 5 volte: dopo 1 minuto, 5 minuti, 30 minuti, 2 ore e 12 ore. X-Lobsite-Delivery resta lo stesso tra un tentativo e l'altro, quindi puoi saltare una consegna già gestita.
Domande frequenti
Come fermo queste richieste?
Se il sito è tuo, rimuovi webhook dal modulo in lobsite.toml e pubblica. Se non lo è, rispondi con un errore: ogni invio viene tentato 6 volte in tutto e poi scartato. Se continuano ad arrivare, segnalale sulla pagina Segnala un abuso con il valore di X-Lobsite-Delivery e ce ne occuperemo.
Quali piani inviano webhook?
I webhook fanno parte del piano Standard. I siti del piano gratuito ricevono invece notifiche via email. Vedi la documentazione dei moduli.
Perché ricevo lo stesso invio due volte?
Il tuo server ha risposto troppo lentamente o con un errore la prima volta, quindi è stato ritentato. Salta le consegne il cui X-Lobsite-Delivery hai già visto.