Manuale di n8n AI Email Marketing
Configura una sequenza di tre email con consenso, OpenAI, Google Sheets e Resend in n8n.
Per chi è: È pensato per chi usa n8n e dispone già di un sistema esterno che registra il consenso e può inviare dati a un webhook. Serve dimestichezza di base con credenziali n8n, Google Sheets, OpenAI e Resend.
Tempo di configurazione: Prima configurazione: variabile in base agli account e al dominio mittente
Cosa fa
- Riceve una richiesta POST sul percorso webhook new-subscriber e risponde al ricevimento della richiesta.
- Legge i dati dal corpo della richiesta quando presente, altrimenti dai dati in ingresso del nodo.
- Accetta un contatto solo se email non vuota, consenso booleano true oppure stringa true e unsubscribe_url non vuoto che inizia con http.
- Normalizza email, nome, fonte, URL di disiscrizione, dati del brand e dati dell'offerta prima di proseguire.
- Aggiunge il record accettato al foglio Google Sheets denominato Iscritti con mappatura automatica dei dati in ingresso.
- Dopo 1 giorno genera e invia un'email di benvenuto; dopo altri 3 giorni genera e invia un'email informativa; dopo altri 5 giorni genera e invia un'email sull'offerta.
- Usa il modello OpenAI gpt-4o-mini per richiedere HTML semplice e invia ogni messaggio con una richiesta HTTP POST all'API email di Resend.
- Aggiunge al corpo di ciascuna email il collegamento di disiscrizione ricevuto nel webhook.
Cosa non fa
- Non raccoglie il consenso e non verifica se il consenso sia giuridicamente valido: riceve soltanto il valore dal sistema esterno.
- Non crea né ospita una pagina di disiscrizione e non gestisce automaticamente liste di soppressione o richieste di disiscrizione.
- Non verifica il formato dell'indirizzo email oltre a controllare che il campo non sia vuoto, né verifica che gli URL del brand o dell'offerta siano raggiungibili.
- Non usa SMTP, Gmail o SendGrid e non include nodi per sostituire Resend con un altro provider.
- Non fornisce report, tracciamento, segmentazione, allegati, raccolta moduli o pubblicazione di offerte.
- Non è una certificazione di conformità legale, fiscale o di marketing.
Requisiti
- n8n: Un'istanza n8n Cloud o self-hosted nella quale puoi importare e attivare workflow.
- Google account e Google Sheets: Un account autorizzabile in n8n e un foglio di calcolo di destinazione che contenga il foglio denominato Iscritti.
- OpenAI: Un account con credenziale API OpenAI configurabile in n8n. Il pacchetto indica un costo a consumo; verifica le condizioni e il listino del provider.
- Resend: Un account Resend, una API key e un dominio mittente verificato. Il servizio può essere a pagamento: consulta il listino del provider.
- Sistema che invia il webhook: Un modulo, un'applicazione o un altro sistema capace di effettuare una richiesta POST al webhook solo quando il contatto ha fornito il consenso.
- Dati del contatto: Per ogni esecuzione servono email, consent e unsubscribe_url; sono inoltre previsti name, source, brand_name, brand_url, offer_name e offer_url.
Installazione passo passo
- Estrai il pacchetto e scegli la variante. Estrai lo ZIP in una cartella privata. Per destinatari italiani usa n8n-email-marketing-ai.json. Per destinatari inglesi usa n8n-email-marketing-ai.en.json. La variante inglese mantiene volutamente i nomi dei nodi in italiano e il nome del foglio Iscritti.
- Leggi le guide consegnate. Leggi README.md per la guida italiana. Le risorse in inglese sono README.en.md, n8n-email-marketing-ai.en.md, ENGLISH-WORKFLOW.en.md e n8n-email-marketing-ai.en.json. Il file n8n-email-marketing-ai.en.md è un riferimento di traduzione e non sostituisce alcun JSON.
- Importa il workflow in n8n. In n8n usa Workflows, poi Import from File, e seleziona il JSON scelto. Il workflow importato è denominato DigitalHub — AI Email Marketing con consenso e contiene 12 nodi collegati. Non attivarlo ancora.
- Collega Google Sheets. Apri il nodo Salva in Google Sheets e autorizza il tuo account Google. Sostituisci il valore documentId YOUR_SHEET_ID con l'identificativo del tuo foglio di calcolo. Nel file il nodo esegue append, usa il foglio Iscritti e la mappatura automatica dei dati in ingresso; verifica la configurazione e le colonne nel tuo foglio prima dell'attivazione.
- Collega la credenziale OpenAI. Nei nodi OpenAI: Email Benvenuto, OpenAI: Email Informativa e OpenAI: Email Offerta sostituisci il riferimento YOUR_OPENAI_CREDENTIAL con una credenziale OpenAI disponibile nella tua istanza n8n. I tre nodi usano la risorsa chat e il modello gpt-4o-mini.
- Configura l'invio Resend. Apri tutti e tre i nodi Invia Email tramite Resend. In ciascuno sostituisci YOUR_RESEND_API_KEY nell'intestazione Authorization e sostituisci YOUR_BRAND_NAME e YOUR_FROM_EMAIL nel campo from. Il mittente deve essere compatibile con il dominio verificato nel tuo account Resend.
- Prepara il sistema che chiama il webhook. Copia dalla configurazione n8n l'URL webhook di test o di produzione appropriato alla tua istanza. Il nodo Webhook: Nuovo Iscritto accetta il metodo POST sul percorso new-subscriber. Configura il tuo sistema esterno affinché invii il payload soltanto per contatti consenzienti.
- Invia un payload di prova completo. Usa un indirizzo controllato da te e un URL di disiscrizione funzionante. Il consenso può essere il valore booleano true o la stringa true. Se email, consenso valido o URL di disiscrizione valido mancano, il nodo Valida Iscritto restituisce nessun elemento e la sequenza si interrompe senza invio.
- Controlla registrazione e attese. Dopo la validazione riuscita, controlla che il record sia stato aggiunto al foglio Iscritti. Il workflow entra poi in Wait 1 giorno. L'email di benvenuto viene generata e inviata dopo 1 giorno, la seconda dopo ulteriori 3 giorni e la terza dopo ulteriori 5 giorni.
- Rivedi contenuto e attiva con prudenza. Prima di rendere disponibile il webhook di produzione, rivedi i contenuti generati, il mittente, i soggetti, il link di disiscrizione e le esecuzioni n8n con un destinatario controllato. I file indicano che la variante inglese ha superato controlli offline e strutturali soltanto; prova quindi entrambe le varianti con dati non produttivi prima dell'attivazione.
Uso quotidiano
Invia solo contatti con consenso
Fai chiamare il webhook soltanto dal processo che ha raccolto il consenso e conserva le informazioni necessarie nel tuo sistema. Il controllo tecnico consent non sostituisce la tua verifica degli obblighi applicabili.
Fornisci sempre i dati completi
Invia email, consent e unsubscribe_url a ogni richiesta. Invia anche name, brand_name, brand_url, offer_name e offer_url quando vuoi evitare i valori predefiniti presenti nel codice.
Controlla il foglio Iscritti
Verifica che ogni contatto accettato sia aggiunto al Google Sheet e che i dati normalizzati corrispondano a quanto inviato dal sistema a monte.
Segui le esecuzioni in attesa
Considera che ciascun contatto valido entra in tre nodi Wait: 1 giorno, poi 3 giorni aggiuntivi e poi 5 giorni aggiuntivi. Controlla le esecuzioni n8n quando verifichi una sequenza in corso.
Rivedi i testi generati
OpenAI riceve istruzioni per produrre HTML semplice, ma il contenuto generato richiede una revisione umana prima della pubblicazione o dell'uso su una lista reale.
Mantieni funzionante la disiscrizione
Poiché il workflow inserisce il valore unsubscribe_url nel corpo di ogni email senza creare la pagina né gestire la richiesta, assicurati che l'URL sia pertinente al singolo contatto e rimanga funzionante.
Casi pratici
Benvenuto dopo l'iscrizione a una newsletter
Un piccolo negozio online usa un modulo esterno che salva il consenso e può inviare un webhook dopo l'iscrizione volontaria alla newsletter.
- Il modulo registra il consenso secondo il processo scelto dal negozio.
- Il sistema invia email, consent true, un URL di disiscrizione e i dati del brand al webhook.
- Il workflow valida il record e lo aggiunge al foglio Iscritti.
- Dopo l'attesa prevista genera e invia il messaggio di benvenuto tramite Resend.
- Il negozio rivede l'esecuzione e il messaggio ricevuto sull'indirizzo di prova prima di usare il flusso su contatti reali.
Ottieni una prima email HTML generata dal workflow per un contatto che ha superato i controlli tecnici previsti.
Sequenza informativa per un brand di servizi
Un'attività di servizi vuole inviare un suggerimento pratico e un link al proprio sito ai nuovi iscritti che hanno fornito i dati richiesti.
- L'attività configura brand_name e brand_url nel payload inviato dal proprio sistema.
- Il workflow salva il record con la fonte nel Google Sheet.
- Dopo la prima email, il nodo Wait 3 giorni mantiene la sequenza in attesa.
- Il nodo OpenAI: Email Informativa richiede un'email breve in HTML coerente con il brand.
- Il nodo Resend invia il contenuto generato con il link di disiscrizione ricevuto.
Ottieni un passaggio informativo nella sequenza, con riferimento al sito fornito nel payload.
Presentazione controllata di un'offerta
Un'azienda che dispone già di un'offerta e della sua pagina desidera presentarla a nuovi iscritti senza far creare al workflow l'offerta o la pagina stessa.
- L'azienda fornisce offer_name e offer_url nel payload webhook.
- Il contatto valido attraversa i nodi di attesa e le prime due fasi della sequenza.
- Dopo ulteriori 5 giorni il nodo OpenAI: Email Offerta riceve nome e URL dell'offerta.
- Il workflow richiede una descrizione commerciale sobria senza inventare scarsità, sconti, numeri o risultati.
- Il terzo nodo Resend invia la terza email con il collegamento di disiscrizione.
Ottieni un messaggio dedicato all'offerta fornita dal tuo sistema, con la destinazione indicata nel payload.
Comunicazioni per destinatari inglesi
Un'attività usa gli stessi servizi ma vuole che i prompt e i contenuti rivolti ai destinatari siano in inglese.
- Importa n8n-email-marketing-ai.en.json invece del JSON italiano.
- Configura le stesse credenziali, il foglio Iscritti, l'indirizzo mittente e il webhook.
- Invia un payload completo a un destinatario di prova.
- Verifica i soggetti, il testo Unsubscribe e il contenuto HTML generato in inglese.
- Mantieni invariati i nomi di nodo e le espressioni salvo modifiche consapevoli e testate.
Ottieni la stessa sequenza tecnica con prompt e contenuti destinatario in inglese.
Consigli
- Tieni separati test e produzione: prova prima il webhook con un indirizzo controllato da te.
- Non inviare il payload finché non hai impostato il foglio Google, la credenziale OpenAI e tutti e tre i nodi Resend.
- Usa sempre un valore booleano true per consent quando puoi; è meno ambiguo della stringa true.
- Non rinominare senza attenzione i nodi citati nelle espressioni del workflow, perché i nodi di invio fanno riferimento ai nomi di Valida Iscritto e dei nodi OpenAI.
- Mantieni il foglio denominato Iscritti oppure aggiorna consapevolmente il campo sheetName se lo modifichi in n8n.
- Verifica che il campo from configurato in ogni nodo Resend usi un indirizzo consentito dal dominio verificato del tuo account.
- Rivedi i prompt e i soggetti prima di inviare a destinatari reali, soprattutto se personalizzi il workflow dopo l'importazione.
- Per comunicazioni in inglese importa direttamente n8n-email-marketing-ai.en.json invece di tradurre solo la guida; il JSON italiano chiede esplicitamente output in italiano.
- Proteggi le esportazioni del workflow configurato, perché contengono campi nei quali potresti avere inserito credenziali e indirizzi del tuo servizio.
- Controlla termini del servizio, privacy, consenso, link di disiscrizione e pratiche di invio prima di attivare comunicazioni commerciali.
Risoluzione dei problemi
Il webhook risponde, ma non viene inviata nessuna email.
Il nodo Webhook: Nuovo Iscritto è configurato per rispondere al ricevimento della richiesta e le email non vengono inviate subito: la prima attesa è di 1 giorno. Controlla l'esecuzione n8n, il record nel foglio Iscritti e lo stato del nodo Wait 1 giorno. Verifica che il payload abbia superato Valida Iscritto.
L'esecuzione termina subito dopo Valida Iscritto.
Il codice restituisce nessun elemento se email è vuota, consent non è true o la stringa true, oppure unsubscribe_url è vuoto o non inizia con http. Invia un payload completo, usa consent true e fornisci un URL di disiscrizione HTTP o HTTPS non vuoto.
Google Sheets non aggiunge il contatto.
Il riferimento YOUR_SHEET_ID può essere rimasto invariato, l'account Google potrebbe non essere autorizzato oppure il foglio Iscritti potrebbe non essere disponibile nel documento scelto. Apri Salva in Google Sheets, collega un account autorizzato, inserisci l'identificativo corretto del documento e verifica il foglio Iscritti e la mappatura automatica.
Un nodo OpenAI segnala una credenziale mancante o non valida.
I tre nodi contengono il segnaposto YOUR_OPENAI_CREDENTIAL. Seleziona o crea nella tua istanza n8n una credenziale OpenAI valida in OpenAI: Email Benvenuto, OpenAI: Email Informativa e OpenAI: Email Offerta, poi esegui una prova controllata.
Resend rifiuta la richiesta di invio.
La chiave nell'intestazione Authorization può essere un segnaposto, non valida o non autorizzata per il tuo account. Sostituisci YOUR_RESEND_API_KEY in tutti e tre i nodi Invia Email tramite Resend con la tua chiave e controlla le autorizzazioni nel provider senza condividere la chiave.
Il mittente non è accettato dal provider.
Il valore YOUR_FROM_EMAIL può non appartenere a un dominio mittente verificato in Resend. Aggiorna il campo from in tutti e tre i nodi con un mittente compatibile con il dominio verificato del tuo account Resend.
Il workflow italiano produce testo italiano quando vuoi comunicare in inglese.
Nel JSON originale tutti e tre i prompt di sistema richiedono espressamente email in italiano. Importa n8n-email-marketing-ai.en.json. La variante include prompt, soggetti e testo di disiscrizione in inglese, pur conservando etichette di nodi e foglio in italiano.
Il link di disiscrizione nell'email non porta a una pagina utile.
Il workflow inserisce il valore ricevuto in unsubscribe_url ma non crea la pagina né gestisce l'azione di disiscrizione. Correggi il sistema esterno affinché generi e invii un URL di disiscrizione funzionante e pertinente al contatto prima della chiamata webhook.
Le espressioni in un nodo di invio non trovano i dati attesi.
I nodi di invio fanno riferimento per nome a Valida Iscritto e ai nodi OpenAI; rinominare nodi senza aggiornare le espressioni può interrompere tali riferimenti. Ripristina i nomi originali oppure aggiorna in modo coerente tutte le espressioni interessate e testa con un contatto controllato.
Limiti da conoscere
- Il controllo di consent e unsubscribe_url è solo una condizione tecnica. Non dimostra la validità del consenso, non conserva una prova del consenso e non garantisce conformità a GDPR o ad altre regole applicabili.
- Prima di inviare email commerciali, verifica termini del servizio, informative privacy, base giuridica, gestione delle disiscrizioni, destinatari e requisiti locali. Inserisci e mantieni un link di disiscrizione funzionante.
- Il contenuto generato dall'AI può richiedere correzioni. Rivedilo sempre prima della pubblicazione o dell'invio a destinatari reali e non attribuirgli risultati, urgenze, sconti o affermazioni non verificabili.
- Il workflow invia richieste a servizi terzi solo quando lo esegui nella tua istanza; verifica permessi, costi, limiti e condizioni di OpenAI, Google, Resend e n8n nei rispettivi listini e documentazioni.
- La variante inglese dichiara controlli offline e strutturali, non un'importazione o un'esecuzione dal vivo con provider. Testa entrambe le varianti con dati non produttivi prima dell'attivazione.
- La sequenza usa tre attese fisse di 1, 3 e 5 giorni. Non verifica la consegna, la lettura o altre azioni del destinatario prima di procedere.
Domande frequenti
Quale file devo importare per una lista italiana?
Importa n8n-email-marketing-ai.json. I prompt di OpenAI, i soggetti e il testo di disiscrizione di questo workflow sono in italiano.
Quale file devo importare per una lista inglese?
Importa n8n-email-marketing-ai.en.json. Mantiene lo stesso grafo ma usa prompt, soggetti e testo Unsubscribe in inglese; i nomi dei nodi e il foglio Iscritti restano in italiano.
Quali campi sono obbligatori nel webhook?
Sono obbligatori email non vuota, consent impostato a true oppure alla stringa true e unsubscribe_url non vuoto che inizi con http. Se uno manca, non prosegue alcun nodo successivo.
Quando vengono inviate le tre email?
La prima viene generata dopo 1 giorno dal salvataggio del contatto. La seconda segue dopo altri 3 giorni e la terza dopo altri 5 giorni.
Il workflow crea una pagina di disiscrizione?
No. Riceve unsubscribe_url nel payload e lo aggiunge al corpo delle tre email. Devi predisporre esternamente una pagina o un processo di disiscrizione funzionante.
Posso usare Gmail, SMTP o SendGrid invece di Resend?
Non con i nodi consegnati. Il workflow usa tre richieste HTTP all'API Resend; per cambiare provider devi sostituire i tre nodi di invio.
Cosa viene salvato in Google Sheets?
Dopo una validazione riuscita, il nodo passa a Google Sheets email, name, source, unsubscribe_url, brand_name, brand_url, offer_name e offer_url e usa l'aggiunta con mappatura automatica nel foglio Iscritti.
Posso rivendere i file del pacchetto?
No. Il README consegnato consente l'uso personale e commerciale del workflow ma vieta la rivendita del file.