lobsite! Se connecter S'inscrire

Les robots de Lobsite /

Lobsite-Webhooks

Les requêtes de Lobsite-Webhooks/1 livrent les envois de formulaires d'un site Lobsite à l'adresse de son propriétaire. Comment les vérifier et les arrêter.

User agent Lobsite-Webhooks/1

Lobsite-Webhooks est le user agent des webhooks que Lobsite envoie. Un site Lobsite doté d’un formulaire peut envoyer chaque réponse à une adresse de webhook que son propriétaire a définie dans lobsite.toml, et ces requêtes sont ces envois. Si vous le voyez dans vos journaux, quelqu’un a fait pointer le webhook d’un formulaire vers votre serveur : en général vous-même, depuis votre propre site Lobsite.

À quoi ressemble une requête

Chaque réponse acceptée et non considérée comme spam donne un POST avec un corps 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"
}

Les webhooks ne partent que vers des adresses https:// qui ne pointent pas vers des réseaux privés ou internes.

Vérifier qu’une requête vient vraiment de Lobsite

Le user agent peut être usurpé ; la signature, non. X-Lobsite-Signature contient un horodatage t et v1, le HMAC-SHA256 hexadécimal de "<t>.<raw body>" avec le secret de webhook du formulaire, affiché une seule fois dans le tableau de bord Lobsite. Calculez la même valeur à partir du corps brut, comparez en temps constant et rejetez un t vieux de plus de 5 minutes.

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));
}

Nouvelles tentatives

Une réponse 2xx en moins de 10 secondes vaut livraison. Tout le reste est retenté 5 fois : après 1 minute, 5 minutes, 30 minutes, 2 heures et 12 heures. X-Lobsite-Delivery reste le même d’une tentative à l’autre : vous pouvez ignorer un envoi déjà traité.

Questions fréquentes

Comment arrêter ces requêtes ?

Si le site est à vous, retirez webhook du formulaire dans lobsite.toml et déployez. Sinon, répondez par une erreur : chaque réponse est tentée 6 fois au total, puis abandonnée. Si elles continuent, signalez-les sur la page Signaler un abus avec la valeur de X-Lobsite-Delivery, et nous examinerons la situation.

Quelles offres envoient des webhooks ?

Les webhooks font partie de l’offre Standard. Les sites de l’offre gratuite reçoivent à la place des notifications par e-mail. Voir la documentation des formulaires.

Pourquoi est-ce que je reçois deux fois la même réponse ?

Votre serveur a répondu trop lentement ou par une erreur la première fois, donc l’envoi a été retenté. Ignorez les envois dont vous avez déjà vu le X-Lobsite-Delivery.

Autres user agents de Lobsite