lobsite! Anmelden Registrieren

Die Bots von Lobsite /

Lobsite-Webhooks

Anfragen von Lobsite-Webhooks/1 liefern Formulareinsendungen einer Lobsite-Website an eine vom Inhaber gewählte Adresse. So prüfst und stoppst du sie.

User-Agent Lobsite-Webhooks/1

Lobsite-Webhooks ist der User-Agent der Webhooks, die Lobsite sendet. Eine Lobsite-Website mit einem Formular kann jede Einsendung an eine Webhook-Adresse schicken, die ihr Inhaber in lobsite.toml festgelegt hat, und diese Anfragen sind genau diese Zustellungen. Siehst du ihn in deinen Logs, hat jemand den Webhook eines Formulars auf deinen Server gerichtet: meist du selbst, von deiner eigenen Lobsite-Website.

Wie eine Anfrage aussieht

Jede angenommene Einsendung, die kein Spam ist, ist ein POST mit JSON-Body:

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 gehen nur an https://-Adressen, die nicht in private oder interne Netzwerke auflösen.

Prüfen, ob eine Anfrage wirklich von Lobsite kommt

Der User-Agent lässt sich fälschen, die Signatur nicht. X-Lobsite-Signature enthält einen Zeitstempel t und v1, den hexadezimalen HMAC-SHA256 von "<t>.<raw body>" mit dem Webhook-Secret des Formulars, das im Lobsite-Dashboard einmal angezeigt wird. Berechne denselben Wert aus dem rohen Body, vergleiche in konstanter Zeit und lehne ein t ab, das älter als 5 Minuten ist.

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

Wiederholungen

Eine 2xx-Antwort innerhalb von 10 Sekunden gilt als zugestellt. Alles andere wird 5-mal erneut versucht: nach 1 Minute, 5 Minuten, 30 Minuten, 2 Stunden und 12 Stunden. X-Lobsite-Delivery bleibt über die Wiederholungen gleich, du kannst also eine Zustellung überspringen, die du schon verarbeitet hast.

Häufige Fragen

Wie stoppe ich diese Anfragen?

Ist die Website deine, entferne webhook beim Formular in lobsite.toml und deploye. Ist sie es nicht, antworte mit einem Fehler: Jede Einsendung wird insgesamt 6-mal versucht und dann verworfen. Kommen sie weiter, melde sie auf der Seite Missbrauch melden mit dem Wert von X-Lobsite-Delivery, und wir sehen uns das an.

Welche Tarife senden Webhooks?

Webhooks gehören zum Standard-Tarif. Websites im kostenlosen Tarif bekommen stattdessen E-Mail-Benachrichtigungen. Siehe die Formular-Doku.

Warum bekomme ich dieselbe Einsendung zweimal?

Dein Server hat beim ersten Mal zu langsam oder mit einem Fehler geantwortet, also wurde es erneut versucht. Überspringe Zustellungen, deren X-Lobsite-Delivery du schon gesehen hast.

Weitere User-Agents von Lobsite