← Torna al centro assistenza

Collegare qualsiasi piattaforma con un webhook

Il webhook è la destinazione generica di Siggmund. Voi fornite un URL, Siggmund vi invia ogni articolo approvato e è il vostro ricevitore a pubblicare — sulla piattaforma che preferite, tramite uno strumento di automazione come n8n, Make o Zapier, oppure tramite il vostro backend.

Non richiede alcun plugin, alcun account da collegare né alcuna approvazione da parte di un marketplace.

Cosa fa il webhook e cosa non fa

Il webhook pubblica contenuti nuovi. È un invio a senso unico: Siggmund vi trasmette l'articolo e non interroga mai il vostro sito in risposta.

Non può quindi modificare una pagina già online, né offrire un ripristino automatico. Entrambe le funzioni richiedono un punto di aggancio lato piattaforma, che oggi offre soltanto il connettore WordPress.

Passo 1 — Dichiarare il vostro URL

Da Connessioni → Sito web / WordPress → Webhook (tutte le piattaforme), inserite l'URL che riceverà gli articoli. Deve essere pubblico, in HTTPS, e rispondere direttamente — i reindirizzamenti vengono rifiutati.

Siggmund mostra allora un segreto di firma (secret). Copiatelo: non verrà mai più mostrato. Se lo perdete, il pulsante Rigenera il segreto ne crea uno nuovo e invalida subito il vecchio.

Passo 2 — Ricevere la richiesta

Siggmund invia una richiesta POST in application/json, con tre header:

HeaderContenuto
X-Shoggo-DeliveryIdentificativo della consegna. È la vostra chiave di deduplicazione.
X-Shoggo-TimestampTimestamp Unix in secondi, al momento dell'invio
X-Shoggo-Signaturesha256= seguito dalla firma in esadecimale

Il timeout è di 10 secondi. Rispondete con 2xx appena avete accettato il messaggio; se la vostra elaborazione è lunga, confermate prima la ricezione e lavorate dopo.

Una risposta 3xx è trattata come un errore: Siggmund non segue i reindirizzamenti.

Passo 3 — Verificare la firma

La firma è un HMAC-SHA256 della stringa <timestamp>.<corpo grezzo>, calcolato con il vostro secret e restituito in esadecimale.

Il corpo grezzo è esattamente la sequenza di byte ricevuta — non il risultato di un JSON.parse seguito da un JSON.stringify, che riordinerebbe le chiavi e invaliderebbe la firma.

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

  // Confronto a tempo costante: un `===` rivela la firma carattere per
  // carattere a un attaccante che misura il tempo di risposta.
  const a = Buffer.from(attendue);
  const b = Buffer.from(recue ?? "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) return false;

  // Il timestamp entra nella firma per impedire il replay. Rifiutate ciò che
  // è troppo vecchio — cinque minuti è un valore ragionevole.
  const ageSecondes = Math.abs(Date.now() / 1000 - Number(timestamp));
  return ageSecondes < 300;
}

Il timestamp fa parte della stringa firmata proprio perché la stessa richiesta non possa essere riprodotta all'infinito. Verificare la firma senza verificare l'età lascia aperta questa porta.

Il corpo della richiesta

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

Due punti da non confondere:

  • deliveryId è la chiave di deduplicazione. Se ricevete due volte lo stesso deliveryId, si tratta dello stesso articolo: pubblicatelo una sola volta.
  • attemptId cambia a ogni tentativo. Serve solo a collegarsi ai log di Siggmund in caso di assistenza. Non usatelo mai per deduplicare.

Il campo version viene incrementato se cambia la forma del corpo. Verificatelo se preferite essere avvisati di un'evoluzione del contratto piuttosto che scoprirla in produzione.

Testare il vostro ricevitore

La schermata di connessione offre un pulsante Invia un evento di test che invia una consegna fittizia, firmata con il vostro vero secret. È il modo più rapido per convalidare la vostra verifica della firma prima del primo articolo reale.

Interrompere la connessione

Il pulsante Disconnetti elimina subito l'URL e il secret lato Siggmund. Potete anche interrompere unilateralmente dal vostro lato, smettendo di rispondere all'URL o cambiandolo: a differenza di un accesso in scrittura, un segreto di firma non dà alcun diritto sul vostro sito.

Ultimo aggiornamento: · Prima pubblicazione: