← Terug naar het helpcentrum

Elk platform koppelen via een webhook

De webhook is de generieke bestemming van Siggmund. U geeft een URL op, Siggmund stuurt elk goedgekeurd artikel ernaartoe en uw ontvanger publiceert — op het platform van uw keuze, via een automatiseringstool zoals n8n, Make of Zapier, of via uw eigen backend.

Er is geen plugin voor nodig, geen account om te koppelen en geen goedkeuring van een marktplaats.

Wat de webhook wel en niet doet

De webhook publiceert nieuwe inhoud. Het is een eenrichtingslevering: Siggmund stuurt u het artikel en bevraagt uw site nooit terug.

Hij kan dus geen pagina wijzigen die al online staat, en biedt ook geen automatische terugdraaiing. Beide mogelijkheden vragen een aanhaakpunt aan de kant van het platform, en dat biedt vandaag alleen de WordPress-connector.

Stap 1 — Uw URL opgeven

Voer via Koppelingen → Website / WordPress → Webhook (alle platforms) de URL in die de artikelen zal ontvangen. Ze moet openbaar zijn, via HTTPS bereikbaar zijn en rechtstreeks antwoorden — omleidingen worden geweigerd.

Siggmund toont dan een ondertekeningsgeheim (secret). Kopieer het: het wordt nooit meer getoond. Raakt u het kwijt, dan maakt de knop Het secret vernieuwen een nieuw aan en maakt het oude meteen ongeldig.

Stap 2 — Het verzoek ontvangen

Siggmund stuurt een POST-verzoek als application/json, met drie headers:

HeaderInhoud
X-Shoggo-DeliveryIdentificatie van de levering. Dit is uw deduplicatiesleutel.
X-Shoggo-TimestampUnix-timestamp in seconden, op het moment van verzending
X-Shoggo-Signaturesha256= gevolgd door de handtekening in hexadecimaal

De timeout is 10 seconden. Antwoord met 2xx zodra u het bericht hebt geaccepteerd; duurt uw verwerking lang, bevestig dan eerst de ontvangst en werk daarna verder.

Een 3xx-antwoord geldt als mislukt: Siggmund volgt geen omleidingen.

Stap 3 — De handtekening controleren

De handtekening is een HMAC-SHA256 van de tekenreeks <timestamp>.<ruwe body>, berekend met uw secret en weergegeven in hexadecimaal.

De ruwe body is de exacte ontvangen bytereeks — niet het resultaat van een JSON.parse gevolgd door een JSON.stringify, want die zou de sleutels herordenen en de handtekening ongeldig maken.

JavaScript
import crypto from "node:crypto";

function verifie(secret, rawBody, headers) {
  const timestamp = headers["x-shoggo-timestamp"];
  const recue = headers["x-shoggo-signature"];

  const attendue =
    "sha256=" +
    crypto.createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex");

  // Vergelijking in constante tijd: een `===` lekt de handtekening teken voor
  // teken naar een aanvaller die de responstijd meet.
  const a = Buffer.from(attendue);
  const b = Buffer.from(recue ?? "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) return false;

  // De timestamp maakt deel uit van de handtekening om replay te voorkomen.
  // Weiger wat te oud is — vijf minuten is een redelijke waarde.
  const ageSecondes = Math.abs(Date.now() / 1000 - Number(timestamp));
  return ageSecondes < 300;
}

De timestamp is juist daarom onderdeel van de ondertekende tekenreeks: hetzelfde verzoek mag niet eindeloos opnieuw afgespeeld kunnen worden. Wie de handtekening controleert zonder de leeftijd te controleren, laat die deur open.

De body van het verzoek

JSON
{
  "version": 1,
  "event": "craft.article.published",
  "deliveryId": "...",
  "clientId": "...",
  "runRef": "...",
  "attemptId": "...",
  "publishedAt": "2026-08-10T09:15:00.000Z",
  "article": {
    "slug": "...",
    "title": "...",
    "status": "...",
    "qcScore": 0,
    "blocks": [],
    "metaTitle": "...",
    "metaDescription": "...",
    "wordCount": 0,
    "thumbImage": null,
    "heroImage": null
  }
}

Twee punten die u niet moet verwarren:

  • deliveryId is de deduplicatiesleutel. Ontvangt u tweemaal dezelfde deliveryId, dan is het hetzelfde artikel: publiceer het slechts één keer.
  • attemptId verandert bij elke poging. Het dient alleen om bij support het verband met de logboeken van Siggmund te leggen. Gebruik het nooit om te dedupliceren.

Het veld version wordt verhoogd als de vorm van de body verandert. Controleer het als u liever vooraf over een wijziging van het contract wordt gewaarschuwd dan dat u die in productie ontdekt.

Uw ontvanger testen

Het koppelingsscherm biedt een knop Een testevent versturen, die een nepbezorging verstuurt, ondertekend met uw echte secret. Het is de snelste manier om uw handtekeningcontrole te valideren vóór het eerste echte artikel.

De koppeling verbreken

De knop Ontkoppelen verwijdert de URL en het secret aan de kant van Siggmund, onmiddellijk. U kunt ook zelf eenzijdig afsluiten, door niet meer te antwoorden op de URL of die te wijzigen: anders dan schrijftoegang geeft een ondertekeningsgeheim geen enkel recht op uw site.

Laatst bijgewerkt: · Eerste publicatie: