Guide

Webhook in n8n: guida pratica al nodo Webhook per attivare workflow da servizi esterni

Quando vuoi far scattare un’automazione all’arrivo di un evento (un ordine, un form, un alert SaaS), i webhook sono il grilletto istantaneo che sostituisce il polling. Con il nodo webhook n8n puoi esporre un endpoint personalizzato per eventi esterni, ricevere payload JSON e file, validare header e autenticazione, e restituire risposte su misura, fino allo streaming. In questa guida esploriamo come configurare correttamente il Webhook node (URL di test e di produzione, metodi HTTP supportati, path e query), le opzioni di sicurezza (CORS, whitelist IP, JWT, Basic, Raw Body, verifica firma HMAC), le modalità di risposta (immediata vs asincrona vs “Respond to Webhook” e streaming) e un set di ricette reali per marketer. Troverai esempi e snippet pronti, parametri con i loro nomi esatti e best practice per evitare errori comuni (401/403, 404, 413). Al termine, avrai un blueprint operativo per costruire endpoint robusti con il nodo webhook n8n e rispondere in modo affidabile con il nodo Respond to Webhook.

📚 Nuovo a n8n? Parti dalla guida completa: cos’è n8n e come funziona.


Perché usare i webhook (e non il polling) per il marketing operativo

Il polling spreca risorse e introduce latenza: interroghi un servizio a intervalli e rischi di perdere il “momento giusto”. I webhook ribaltano il paradigma: è la piattaforma esterna a chiamare il tuo endpoint appena succede qualcosa. Risultato: notifiche più veloci, costi minori, UX migliore.

Scenari tipici per marketer che vogliono migliorare la produttività:

  • Notifiche in tempo reale: nuovo ordine, pagamento fallito, iscrizione a newsletter.
  • Form e lead capture: il form invia direttamente al tuo workflow, che arricchisce e instrada.
  • Eventi SaaS: CRM, e‑commerce, advertising, analytics ti pingano quando cambiano stati o metriche chiave.
  • Generazione di asset on‑demand: l’endpoint riceve parametri e produce un report/creativo da restituire come file binario.

Con il nodo webhook n8n crei un trigger HTTP in pochi minuti, definendo l’endpoint personalizzato per eventi esterni, configurando intestazioni HTTP e Content-Type e scegliendo come rispondere (codice di stato 2xx/4xx/5xx, payload JSON, file, redirect, o nessun body). E grazie al nodo Respond to Webhook puoi controllare la risposta dopo aver completato l’elaborazione, utile per API “sincrone” di front‑end o partner.


Configurare il Webhook node: URL, metodi, path, query

Il Webhook node espone due URL distinti, mostra opzioni di metodo e path, e fornisce parametri avanzati per gestire il flusso end‑to‑end.

  • Webhook URLs
  • Test URL e Production URL: n8n espone entrambi in cima al pannello del nodo. Il Test URL si registra quando selezioni “Listen for Test Event” o esegui il workflow non attivo. Il Production URL si registra quando attivi il workflow. Usa la produzione per integrazioni reali; in test, n8n mostra i dati in tempo reale nell’editor.
  • Nota operativa: se chiami il Production URL con workflow disattivo, riceverai un 404 con messaggio “The requested webhook … is not registered”. Attiva sempre il workflow per la produzione.
  • HTTP Method
  • Scegli tra metodi HTTP supportati (GET, POST, PUT, PATCH, DELETE) secondo la sorgente. POST/PUT/PATCH sono i più usati per payload JSON e form‑data.
  • Path
  • Imposta un percorso leggibile, ad esempio /orders/created. Puoi usare query string (es. ?source=store) e leggere parametri/route/query nell’output del Webhook node (headers, query, body, params).
  • Intestazioni e Content-Type
  • Il nodo accetta content-type comuni come application/json e multipart/form-data. Puoi leggere e validare intestazioni HTTP e Content-Type a valle con IF/Code node.

Suggerimento: definisci naming coerente per i path (versioni, ambienti), ad esempio /v1/events/checkout.completed, e documenta la differenza tra Test URL e Production URL nel tuo handover al team/produttori di eventi.


Formati del payload e limiti di dimensione

I webhook reali non sono solo JSON: spesso trasportano form‑data e file.

  • Payload JSON e form‑data
  • JSON: il body è disponibile nel campo json dell’item in n8n. Valida sempre i campi attesi prima di procedere.
  • form‑data: quando invii campi + file, n8n separa parti testuali e binarie. Imposta correttamente il Content-Type nel client che invia.
  • File binari in ingresso/uscita
  • Binary Property (Webhook node): disponibile quando il metodo è POST, PUT o PATCH. Serve a gestire file binari in ingresso in modo strutturato (selezionando il campo binario dove n8n deve collocare il file).
  • Respond to Webhook: puoi rispondere con “Binary File” per restituire un file (PDF, PNG, CSV) direttamente al chiamante.
  • Limite dimensione payload
  • In ambienti self‑hosted, il limite è configurabile tramite la variabile di ambiente N8NPAYLOADSIZE_MAX. Se vedi 413 (payload troppo grande), aumenta il limite in modo ragionato e assicurati che eventuali reverse proxy (Nginx/Cloud) accettino upload più grandi.

Best practice:

  • Imposta controlli di dimensione e tipo file a monte (IF) per bloccare upload non desiderati.
  • Per allegati molto grandi, considera uno storage esterno (S3/GCS) e passaggio via URL presignata invece che “inline” nel webhook.

Sicurezza e accesso: autenticazione, CORS, whitelist IP, HMAC

Il nodo webhook n8n include più livelli di protezione; combinane diversi per un perimetro robusto.

  • Authentication (inbound)
  • Authentication: None, Basic Auth, Header Auth, JWT.
  • Basic: definisci user/password e verifica lato n8n.
  • Header Auth: richiedi un header statico (es. X-API-Key) e confrontalo.
  • JWT: valida un token firmato (ad esempio emesso da un tuo IdP). Ideale per partner o front‑end autenticati.
  • CORS e sicurezza lato client
  • Allowed Origins (CORS): limita le origini consentite per chiamate browser. Imposta domini noti (https://app.example.com) per evitare richieste cross‑origin indesiderate.
  • Whitelist di indirizzi IP
  • IP(s) Whitelist: accetta solo chiamate da IP elencati; tutte le altre ricevono 403. Utile per integrare SaaS con IP statici o tunnel.
  • Raw Body
  • Raw Body: attiva se devi ricevere dati “raw” (JSON, XML) per calcoli di firma HMAC o parsing custom. Così puoi leggere il body esatto così come inviato.
  • Verifica firma HMAC (esempio)
  • Molti SaaS inviano un header con firma (es. X-Signature). Usa un Code node per verificare:
// Esempio: HMAC-SHA256 con secret condiviso
const crypto = require('crypto');
const secret = $env.SECRET_HMAC;        // imposta via variabili d’ambiente
const raw = $json.rawBody;              // abilita Raw Body nel Webhook node e passa rawBody
const sent = $json.headers['x-signature'];
const calc = 'sha256=' + crypto.createHmac('sha256', secret).update(raw).digest('hex');
if (calc !== sent) {
  throw new Error('Invalid signature');
}
return $input.all();

Consiglio: combinalo con IP(s) Whitelist e Authentication per difesa in profondità. Documenta nei contratti d’integrazione algoritmo, header e formato.


Modalità di risposta: immediata, ultimo nodo, “Respond to Webhook”, streaming

Come risponde il tuo endpoint è cruciale per UX e timeouts del chiamante.

  • Respond (Webhook node)
  • Immediately: risposta istantanea (es. 200 con “Workflow got started”). Ideale per processi lunghi asincroni.
  • When Last Node Finishes: il Webhook node restituisce l’output dell’ultimo nodo eseguito. Puoi personalizzare il Response Code. Opzione “Property Name” per restituire un sotto‑campo specifico (ad esempio solo data.result).
  • Using “Respond to Webhook” Node: delega la risposta al nodo “Respond to Webhook” posizionato a valle (consigliato quando devi comporre payload, header e codice in base ai risultati).
  • Respond to Webhook (parametri chiave)
  • Respond With: All Incoming Items, First Incoming Item, JSON, Text, Binary File, JWT Token, Redirect, No Data.
  • Options: Response Code, Response Headers, Put Response in Field (con All/First), Enable Streaming.
  • Esempio di risposta JSON:
{
  "status": "ok",
  "received": "order.created",
  "id": "{{ $json.id }}"
}
  • Esempio di header personalizzato: X-Request-Id, Content-Type: application/json.
  • Streaming della risposta
  • Abilita “Enable Streaming” nel Respond to Webhook e imposta il Webhook node in modalità di risposta “Streaming”. Utile per inviare output progressivo (dataset grandi, SSE-like) senza attendere la fine completa del job.

Regola d’oro:

  • Se vuoi customizzare corpo, header e status dopo l’elaborazione, imposta Respond > Using “Respond to Webhook” Node. In caso contrario, il Webhook node risponderà prima che il tuo “Respond to Webhook” venga raggiunto.

Debug e problemi comuni (e come risolverli)

  • 401/403 Unauthorized/Forbidden
  • Authentication errata (Basic/Auth Header/JWT), IP non in whitelist, bot o client non abilitati.
  • Soluzione: verifica credenziali, header richiesti, IP(s) Whitelist, origini CORS.
  • 404 del path o Production URL non registrato
  • Workflow non attivo o percorso sbagliato.
  • Soluzione: attiva il workflow per usare il Production URL; ricontrolla path/URL copiato; in ambienti cloud verifica che l’istanza sia raggiungibile.
  • 413 payload troppo grande
  • Soluzione: aumenta N8NPAYLOADSIZEMAX e configura il reverse proxy (clientmaxbodysize su Nginx). Valuta approcci con storage esterno e presigned URL.
  • Response errata o doppia
  • Se usi “Respond to Webhook”, imposta nel Webhook node Respond > Using “Respond to Webhook” Node. Evita di rispondere due volte con modalità confliggenti.
  • Content-Type/parse mode
  • Se restituisci JSON, imposta Response Headers corretti (Content-Type: application/json). Per HTML, usa “Text” e header text/html; non includere script non sicuri.

Suggerimento operativo:

  • Logga X-Request-Id in ingresso e restituiscilo in uscita per tracciare end‑to‑end richieste e risposte durante il debug.

Tre ricette pronte: Slack/Telegram, data enrichment, file in uscita

  1. Endpoint Slack/Telegram “fire-and-forget”
  • Webhook (Respond: Immediately) → valida e registra l’evento → invia messaggio su Slack/Telegram → termina senza bloccare il chiamante.
  • Parametri: HTTP Method=POST, Path=/alerts/incoming, Authentication=Header Auth con X-API-Key.
  • Vantaggio: latenza minima per chi chiama; orchestrazione asincrona affidabile.
  1. Arricchimento e risposta JSON sincrona
  • Webhook (Respond: Using “Respond to Webhook”) → HTTP Request al tuo CRM → trasformazione → Respond to Webhook (Respond With: JSON, Response Code: 200).
  • Esempio body risposta:
{
  "lead": "{{ $json.leadId }}",
  "score": "{{ $('CRM').item.json.score }}",
  "next_action": "follow_up"
}
  • Vantaggio: il client ottiene subito il risultato dell’arricchimento (no polling).
  1. Upload file e link di ritorno
  • Webhook (POST, Binary Property configurato) → salva su S3/Drive → genera link → Respond to Webhook (Text/JSON con URL).
  • Sicurezza: valida estensione/tipo MIME, dimensione e applica antivirus dove richiesto.

Quick Takeaways

  • Il nodo webhook n8n espone Test URL e Production URL: usa il primo per debug e attiva il workflow per il secondo.
  • Scegli il metodo adatto (GET/POST/PUT/PATCH/DELETE) e un Path chiaro; leggi body, query, headers con facilità.
  • Proteggi l’endpoint: Authentication (Basic/Header/JWT), Allowed Origins (CORS), IP(s) Whitelist, Raw Body per firme HMAC.
  • Controlla la risposta: Immediately, When Last Node Finishes o Using “Respond to Webhook” (con JSON/Text/Binary/JWT/Redirect) e, se serve, streaming.
  • Gestisci file e limiti: Binary Property per upload; se 413, regola N8NPAYLOADSIZE_MAX e proxy; preferisci storage esterno per file grandi.
  • Risolvi velocemente: 404 se workflow non attivo; 401/403 per auth/whitelist; 400/415 per Content-Type errato.

Conclusione

I webhook sono la via maestra per attivare workflow al momento giusto, senza ritardi o sprechi. Con il nodo webhook n8n crei un trigger HTTP robusto, differenziando tra Test e Production URL, scegliendo metodi, path e Content-Type, e applicando controlli granulari di sicurezza (Authentication, CORS, IP whitelist, Raw Body per HMAC). La gestione delle risposte è altrettanto flessibile: immediata per processi lunghi, “When Last Node Finishes” per esiti sintetici, oppure “Respond to Webhook” quando vuoi pieno controllo su body, header, codice e perfino streaming. A ciò si aggiunge la capacità di accettare e restituire file binari, scalare con storage esterni e tenere a bada i limiti tramite configurazioni mirate. Se sei un/una marketer che vuole imparare ad usare n8n per migliorare la produttività, inizia creando un endpoint focalizzato su un solo caso d’uso (alert ordini o lead), valida sicurezza e risposta, poi estendi con arricchimenti e integrazioni multi‑canale. Un piccolo webhook ben fatto sblocca un ecosistema di automazioni che riducono tempi, errori e costi.


FAQ

  1. Cos’è un trigger HTTP nel contesto del nodo webhook n8n?

È l’attivatore del workflow che reagisce a una richiesta HTTP su un tuo endpoint personalizzato per eventi esterni. Quando un servizio chiama l’URL del Webhook node, n8n avvia l’esecuzione passando body, query, headers e (se configurato) file.

  1. Qual è la differenza tra URL di test e di produzione?

Il Test URL funziona mentre sei in fase di sviluppo (“Listen for Test Event” o esecuzione non attiva) e mostra i dati in editor. Il Production URL richiede il workflow attivo e non mostra i dati live nell’editor: è quello da usare in integrazioni reali.

  1. Posso limitare chi può chiamare l’endpoint?

Sì: usa Authentication (Basic/Header/JWT), Allowed Origins (CORS) per richieste browser, e IP(s) Whitelist per ammettere solo IP specifici. Puoi anche verificare una firma HMAC con Raw Body per convalidare l’integrità del payload.

  1. Come scelgo la modalità di risposta più adatta?
  • Immediately: rispondi subito (asincrono).
  • When Last Node Finishes: restituisci l’output dell’ultimo nodo.
  • Using “Respond to Webhook” Node: risposta completamente personalizzata (JSON/Text/Binary/JWT/Redirect), con Response Code/Headers e possibilità di streaming.
  1. Come gestisco payload grandi e file binari?

Abilita Binary Property (POST/PUT/PATCH) per ricevere file. Se vedi 413, aumenta N8NPAYLOADSIZE_MAX e configura il reverse proxy. Per file molto grandi, usa storage esterni e URL presignate; rispondi con un JSON che contenga il link.


Ci dai una mano?

Ti è stata utile questa guida sul nodo webhook n8n? Dicci quale endpoint vuoi creare per primo e condividi l’articolo con chi può beneficiarne. Quale evento esterno attiverebbe l’automazione più preziosa nel tuo stack?

Articoli correlati

Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →

Partiamo da un processo che oggi vi costa ore

Su WhatsApp risponde una persona, di solito in giornata. Se preferisci scrivere con calma, c’è il modulo qui sotto.

Scrivici su WhatsApp

Raccontaci cosa vuoi automatizzare

Ti rispondiamo noi, di solito in giornata.

Raccontaci cosa vi fa perdere tempo

Due righe bastano. Vi diciamo se si automatizza, come, e quanto costa. Se non conviene, lo diciamo.