Webhook

Un webhook invia ogni nuova risposta di un modulo a un indirizzo a vostra scelta, per esempio un software gestionale o uno strumento di automazione.

Configurare il webhook

  1. Aprite lo Studio del modulo, scheda Automazioni.
  2. Nel blocco Webhook, inserite l'URL che riceverà le chiamate (indirizzo https:// pubblico).
  3. Inserite un segreto HMAC, una lunga stringa casuale che conservate anche dalla vostra parte.
  4. Salvate e verificate che l'automazione sia attiva.

Quando parte la chiamata

La chiamata parte a ogni nuova risposta, qualunque sia la provenienza: link pubblico, pagina integrata, app mobile, API o sessione condivisa. Viene inviata in background: l'invio del modulo non aspetta il vostro server.

Cosa riceve il vostro server

Una richiesta POST di tipo application/json:

{
  "submission_id": 1234,
  "form_slug": "ispezione-cantiere",
  "data": { "...": "le risposte, domanda per domanda" },
  "date_submitted": "2026-10-16T08:42:11+00:00"
}

L'intestazione X-Formsbuilder-Signature contiene sha256= seguito dalla firma HMAC-SHA256 del corpo grezzo, calcolata con il vostro segreto.

Verificare la firma

import hashlib, hmac

def firma_valida(corpo: bytes, intestazione: str, segreto: str) -> bool:
    atteso = "sha256=" + hmac.new(segreto.encode(), corpo, hashlib.sha256).hexdigest()
    return hmac.compare_digest(atteso, intestazione)

Calcolate la firma sul corpo esatto ricevuto, prima di qualsiasi conversione JSON.

Errori e nuovi tentativi

Il vostro server deve rispondere entro 10 secondi. In caso di errore di rete o di risposta 5xx, la chiamata viene ripetuta fino a tre volte, a un minuto di distanza; una risposta 4xx non viene ripetuta. Gli indirizzi interni (rete privata, localhost) sono rifiutati.