2026-01-10
Primo workflow in n8n in 30 minuti: form → Google Sheet → Slack
Tutorial passo-passo: ricevere un lead da webhook, scrivere una riga in Google Sheet e avvisare il team su Slack. Senza ROI inventati: solo cosa cliccare e come verificare.
Problema che risolvi: qualcuno invia un form sul sito e tu vuoi una riga nel foglio e una notifica Slack senza copiare a mano.
Cosa fai in 30 minuti: un workflow in n8n (self-hosted o cloud) che risponde a un POST, appende dati a Google Sheets e posta su Slack.
Come sai che funziona: con curl invii un JSON finto e vedi riga nuova + messaggio Slack.
Make e Zapier possono fare lo stesso con meno codice; qui usiamo n8n perché è riproducibile gratis (self-hosted) e il flusso è identico negli altri tool (stessi trigger/credenziali).
Prerequisiti
- Account n8n (n8n.io cloud o installazione self-hosted).
- Progetto Google Cloud con Google Sheets API abilitata e OAuth client (tipo “Desktop” o “Web” secondo la doc n8n per Google).
- Slack: crea un’app con Incoming Webhook su un canale di test (o OAuth bot se preferisci).
Documentazione ufficiale n8n per i nodi: Google Sheets, Slack, Webhook.
Passo 1 — Webhook in ingresso
- Crea un nuovo workflow.
- Aggiungi il nodo Webhook, metodo
POST, path es.lead-ingest. - Attiva il workflow e copia l’URL Production (non “Test” se vuoi chiamate da form esterni).
- In Options → Response Mode:
Using Respond to Webhookse vuoi rispondere200con un JSON{ "ok": true }(nodo Respond to Webhook dopo la catena).
Payload atteso (esempio minimo):
{
"email": "lead@example.com",
"name": "Mario Rossi",
"message": "Vorrei un preventivo"
}
Passo 2 — Google Sheet
- Crea un foglio con intestazioni in riga 1:
timestamp,email,name,message. - Aggiungi il nodo Google Sheets → operazione Append (o “Append row”).
- Collega le credenziali OAuth e seleziona documento + foglio.
- Mappa i campi dall’output del Webhook, es.
{{ $json.body.email }}(il path esatto dipende se usi “Webhook” raw o un nodo Set che normalizza i campi).
Suggerimento: inserisci un nodo Set subito dopo il Webhook con chiavi fisse email, name, message così non rompi il foglio se il client cambia struttura.
Passo 3 — Slack
- Nodo Slack → Post Message (con credenziale OAuth) oppure nodo HTTP Request verso l’URL del webhook Incoming (body JSON
{"text": "..."}). - Testo tipo:
Nuovo lead: {{ $json.email }} — {{ $json.message }}.
Passo 4 — Verifica con curl
curl -sS -X POST 'https://<tuo-n8n>/webhook/lead-ingest' \
-H 'Content-Type: application/json' \
-d '{"email":"test@example.com","name":"Test","message":"Hello"}'
Controlla: nuova riga nel foglio, messaggio nel canale Slack. Se fallisce, apri l’esecuzione in n8n e leggi l’errore del nodo (401 Google = credenziali; 403 Slack = webhook revocato).
Zapier e Make (stesso problema, altra UI)
- Zapier: Trigger “Webhooks by Zapier” (Catch Hook) → Google Sheets “Create Spreadsheet Row” → Slack “Send Channel Message”.
- Make: Webhook module → Google Sheets “Add a row” → Slack “Create a message**.
La logica è identica: una riga idempotente lato sheet non è automatica — se ti serve non duplicare lo stesso lead, aggiungi deduplica (es. chiave email+giorno in un nodo Code o tabella intermedia).
Limiti da tenere a mente
- Rate limit dei provider (Slack, Google).
- Secret sul Webhook: in produzione aggiungi header
Authorization: Bearer <token>e verificalo con un nodo IF prima di scrivere sul foglio. - Self-hosted n8n: aggiornamenti e backup del database delle credenziali sono tua responsabilità.
Sintesi
- Webhook POST → 2. (opzionale) Set normalizza JSON → 3. Append Sheet → 4. Slack.
- Verifica con
curl. - Stesso schema su Make/Zapier se preferisci SaaS gestito.
Non serve un “ROI percentuale” per sapere se l’automazione ha valore: se oggi copi i lead a mano e questo flusso ti toglie quel lavoro, il problema è risolto in modo misurabile (tempo per lead = 0 dopo il deploy).