Torna al Blog
Guida

Email marketing automatizzato con n8n: guida completa

Come costruire campagne email marketing automatiche con n8n, integrando Mailchimp, Brevo e altri servizi. Segmentazione, trigger comportamentali e campagne drip senza costi eccessivi.

Marco Ferri- Automation Architect28 marzo 202611 min read
Email marketing automatizzato con n8n: guida completa

Perché automatizzare l'email marketing con n8n

L'email marketing rimane il canale digitale con il ROI più alto: per ogni euro investito, il ritorno medio è compreso tra 36 e 42 euro. Tuttavia, gestire manualmente liste di contatti, segmenti, campagne e trigger comporta un dispendio di tempo significativo, soprattutto per le PMI italiane che spesso non hanno un team marketing dedicato.

Le piattaforme di email marketing tradizionali (Mailchimp, Brevo, ActiveCampaign) offrono automazioni interne, ma con limiti: piani costosi per volumi medi, logiche rigide, difficoltà di integrazione con sistemi custom. n8n supera questi limiti permettendoti di costruire automazioni email personalizzate al 100%, connesse a qualsiasi fonte dati.

In questa guida vedremo come costruire un sistema di email marketing automatizzato completo con n8n, confrontando l'approccio nativo con l'integrazione di servizi esterni.

Architettura del sistema

Un sistema di email marketing automatizzato con n8n si compone di quattro strati:

  1. Raccolta dati: webhook, moduli, CRM, e-commerce - ogni punto di contatto con il cliente genera dati
  2. Elaborazione: segmentazione, scoring, pulizia - n8n trasforma i dati grezzi in liste pronte per l'invio
  3. Invio: tramite provider SMTP dedicato o API di servizi email
  4. Analisi: tracciamento aperture, click, conversioni - feedback loop per migliorare le campagne

Approccio 1: invio diretto con SMTP (niente costi ricorrenti)

La soluzione più economica usa un server SMTP dedicato (Postmark, SendGrid, Mailgun) con il nodo Email di n8n.

Configurazione SMTP

Per utilizzare un provider SMTP professionale, configura le credenziali in n8n:

{
  "parameters": {
    "host": "smtp.postmarkapp.com",
    "port": 587,
    "secure": false,
    "userId": "<POSTMARK_USERNAME>",
    "password": "<POSTMARK_PASSWORD>"
  },
  "type": "n8n-nodes-base.smtp",
  "name": "Postmark SMTP"
}

Template email con nodo Code

Per gestire template email riutilizzabili, usa un nodo Code che genera l'HTML:

const data = $input.first().json;

const templateBenvenuto = (nome, azienda) => `
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style>
    body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f5f5f5; margin: 0; padding: 20px; }
    .container { max-width: 600px; margin: 0 auto; background: #ffffff; border-radius: 8px; overflow: hidden; }
    .header { background: #1a73e8; padding: 30px; text-align: center; }
    .header h1 { color: #ffffff; margin: 0; font-size: 24px; }
    .content { padding: 30px; line-height: 1.6; color: #333333; }
    .button { display: inline-block; background: #1a73e8; color: #ffffff; padding: 12px 30px; text-decoration: none; border-radius: 6px; margin: 20px 0; }
    .footer { background: #f5f5f5; padding: 20px; text-align: center; font-size: 12px; color: #999999; }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">
      <h1>Benvenuto in ${azienda}</h1>
    </div>
    <div class="content">
      <p>Ciao ${nome},</p>
      <p>Grazie per esserti iscritto alla nostra newsletter. Siamo felici di averti con noi.</p>
      <p>Per iniziare, ecco alcune risorse che potrebbero esserti utili:</p>
      <ul>
        <li>La nostra guida completa ai prodotti</li>
        <li>I casi studio dei nostri clienti</li>
        <li>Le offerte esclusive per i nuovi iscritti</li>
      </ul>
      <p style="text-align: center;">
        <a href="https://tuo-sito.it/offerta-benvenuto" class="button">Scopri l'offerta</a>
      </p>
      <p>Se hai domande, rispondi a questa email: siamo qui per aiutarti.</p>
      <p>A presto,<br>Il team di ${azienda}</p>
    </div>
    <div class="footer">
      <p>${azienda} - Via Roma 123, Milano</p>
      <p>
        <a href="https://tuo-sito.it/unsubscribe?email=${data.email}">Cancellati dalla newsletter</a>
      </p>
    </div>
  </div>
</body>
</html>`;

return [{
  json: {
    ...data,
    html_email: templateBenvenuto(data.nome || 'Amico', data.azienda || 'Tua Azienda'),
    subject: `Benvenuto, ${data.nome || 'Amico'}! Ecco la tua offerta esclusiva`
  }
}];

Invio con tracciamento

Per tracciare le aperture e i click, puoi aggiungere un pixel di tracciamento e link con parametri UTM al template:

// Aggiungi pixel di tracciamento
const trackingPixel = `<img src="https://tuo-sito.it/api/track/open?email=${encodeURIComponent(email)}&campaign=${campaignId}" width="1" height="1" alt="" />`;

// Aggiungi UTM ai link
const addUTM = (url, campaign) => {
  const sep = url.includes('?') ? '&' : '?';
  return `${url}${sep}utm_source=newsletter&utm_medium=email&utm_campaign=${campaign}`;
};

Nota sulla deliverability: per una deliverability elevata, usa sempre un provider SMTP dedicato (Postmark, SendGrid) anziché il SMTP del tuo server. I provider dedicati gestiscono la reputazione IP, il DKIM, il SPF e il DMARC automaticamente.

Approccio 2: integrazione con Mailchimp

Se preferisci usare Mailchimp come motore di invio e sfruttare le sue funzionalità di template editor e analytics, n8n puo' gestire la logica di automazione mentre Mailchimp si occupa dell'invio effettivo.

Creazione campagna via API

{
  "parameters": {
    "method": "POST",
    "url": "https://<DC>.api.mailchimp.com/3.0/campaigns",
    "authentication": "genericCredentialType",
    "genericAuthType": "httpHeaderAuth",
    "sendHeaders": true,
    "headerParameters": {
      "parameters": [
        {
          "name": "Authorization",
          "value": "apikey <MAILCHIMP_API_KEY>"
        }
      ]
    },
    "sendBody": true,
    "contentType": "json",
    "body": "={{ JSON.stringify({ type: 'regular', recipients: { list_id: '<LIST_ID>' }, settings: { subject_line: 'Nuovi prodotti disponibili - Settimana 13', from_name: 'Tuo Negozio', reply_to: 'info@tuo-sito.it', title: 'Newsletter Prodotti ' + new Date().toISOString().split('T')[0] } }) }}"
  },
  "type": "n8n-nodes-base.httpRequest",
  "name": "Crea Campagna Mailchimp"
}

Aggiornamento segmento con tag dinamici

Invece di creare segmenti manualmente in Mailchimp, usa n8n per aggiornare i tag dei contatti in base al comportamento:

{
  "parameters": {
    "method": "POST",
    "url": "=https://<DC>.api.mailchimp.com/3.0/lists/<LIST_ID>/members/{{ md5($json.email.toLowerCase()) }}/tags",
    "authentication": "genericCredentialType",
    "genericAuthType": "httpHeaderAuth",
    "sendHeaders": true,
    "headerParameters": {
      "parameters": [
        {
          "name": "Authorization",
          "value": "apikey <MAILCHIMP_API_KEY>"
        }
      ]
    },
    "sendBody": true,
    "contentType": "json",
    "body": "={{ JSON.stringify({ tags: [{ name: $json.tag, status: 'active' }] }) }}"
  },
  "type": "n8n-nodes-base.httpRequest",
  "name": "Aggiungi Tag Contatto"
}

Approccio 3: integrazione con Brevo (ex Sendinblue)

Brevo è popolare tra le aziende italiane per il rapporto qualità-prezzo. L'integrazione con n8n segue lo stesso pattern delle altre API REST.

Invio email transazionale con Brevo

{
  "parameters": {
    "method": "POST",
    "url": "https://api.brevo.com/v3/smtp/email",
    "authentication": "genericCredentialType",
    "genericAuthType": "httpHeaderAuth",
    "sendHeaders": true,
    "headerParameters": {
      "parameters": [
        {
          "name": "api-key",
          "value": "<BREVO_API_KEY>"
        }
      ]
    },
    "sendBody": true,
    "contentType": "json",
    "body": "={{ JSON.stringify({ sender: { name: 'Tuo Negozio', email: 'noreply@tuo-sito.it' }, to: [{ email: $json.email, name: $json.nome }], subject: $json.subject, htmlContent: $json.html_email, headers: { 'X-Mailin-custom': 'campaign-' + $json.campaign_id } }) }}"
  },
  "type": "n8n-nodes-base.httpRequest",
  "name": "Invia con Brevo"
}

Segmentazione automatica avanzata

La segmentazione è la chiave per campagne email efficaci. Con n8n puoi creare segmenti dinamici basati su dati comportamentali, demografici e transazionali.

Workflow di segmentazione

Schedule Trigger (ogni notte alle 2:00)
  -> PostgreSQL (leggi tutti i contatti con attività recente)
  -> Code (calcola segmento per ogni contatto)
  -> PostgreSQL (aggiorna tabella segmenti)
  -> IF (segmenti cambiati?)
    -> true: Slack (notifica al team marketing)

Logica di segmentazione

const items = $input.all();
const now = new Date();
const trentaGiorniFa = new Date(now - 30 * 24 * 60 * 60 * 1000);
const sessantaGiorniFa = new Date(now - 60 * 24 * 60 * 60 * 1000);
const novantaGiorniFa = new Date(now - 90 * 24 * 60 * 60 * 1000);

const segmentati = items.map(item => {
  const c = item.json;
  const ultimaAcquisto = c.ultima_acquisto ? new Date(c.ultima_acquisto) : null;
  const ultimaApertura = c.ultima_apertura_email ? new Date(c.ultima_apertura_email) : null;
  const totaleSpeso = parseFloat(c.totale_speso || 0);
  const numOrdini = parseInt(c.numero_ordini || 0);

  let segmento = 'freddo';
  let punteggio = 0;

  // Segmentazione RFM (Recency, Frequency, Monetary)
  if (ultimaAcquisto && ultimaAcquisto > trentaGiorniFa) {
    punteggio += 3;
  } else if (ultimaAcquisto && ultimaAcquisto > sessantaGiorniFa) {
    punteggio += 2;
  } else if (ultimaAcquisto) {
    punteggio += 1;
  }

  if (numOrdini >= 5) punteggio += 3;
  else if (numOrdini >= 2) punteggio += 2;
  else if (numOrdini >= 1) punteggio += 1;

  if (totaleSpeso >= 500) punteggio += 3;
  else if (totaleSpeso >= 200) punteggio += 2;
  else if (totaleSpeso >= 50) punteggio += 1;

  if (ultimaApertura && ultimaApertura > trentaGiorniFa) punteggio += 2;

  // Assegnazione segmento
  if (punteggio >= 8) segmento = 'vip';
  else if (punteggio >= 5) segmento = 'attivo';
  else if (punteggio >= 3) segmento = 'potenziale';
  else if (punteggio >= 1) segmento = 'a_rischio';
  else segmento = 'freddo';

  return {
    json: {
      contact_id: c.id,
      email: c.email,
      segmento_precedente: c.segmento,
      segmento_nuovo: segmento,
      punteggio_rfm: punteggio,
      totale_speso: totaleSpeso,
      numero_ordini: numOrdini
    }
  };
});

return segmentati;

Campagne drip automatiche

Le campagne drip (a goccia) sono sequenze di email inviate automaticamente nel tempo, basate su trigger specifici. Ecco come costruire una sequenza di onboarding in n8n.

Sequenza di benvenuto (5 email in 14 giorni)

Webhook (nuova iscrizione newsletter)
  -> PostgreSQL (salva contatto + data iscrizione)
  -> Wait (0 giorni - immediato)
  -> Email 1: Benvenuto + guida introduttiva
  -> Wait (2 giorni)
  -> IF (ha aperto l'email 1?)
    -> true: Email 2: Approfondimento prodotto
    -> false: Email 2B: Versione più breve + oggetto più accattivante
  -> Wait (3 giorni)
  -> IF (ha cliccato un link?)
    -> true: Email 3: Offerta personalizzata basata sugli interessi
    -> false: Email 3B: Testimonianze e casi studio
  -> Wait (4 giorni)
  -> Email 4: Risorse gratuite (ebook, webinar)
  -> Wait (5 giorni)
  -> Email 5: Offerta finale + invito all'azione

Implementazione del nodo Wait per il drip

{
  "parameters": {
    "amount": 2,
    "unit": "days"
  },
  "type": "n8n-nodes-base.wait",
  "name": "Attendi 2 giorni"
}

Nota importante: il nodo Wait in n8n funziona solo se il workflow è attivo (toggled on). Se l'istanza n8n viene riavviata, i workflow in attesa potrebbero riprendere o perdere lo stato. Per la produzione, valuta l'uso del database come scheduler: salva la data di invio programmata e usa un Schedule Trigger per verificare le email da inviare.

Trigger comportamentali

Gli eventi comportamentali sono i trigger più potenti per l'email marketing: reagiscono alle azioni reali dell'utente.

Carrello abbandonato

Webhook (evento carrello abbandonato da e-commerce)
  -> PostgreSQL (controlla se esiste già una notifica recente)
  -> IF (nessuna notifica nelle ultime 24 ore)
    -> true: Code (genera email con prodotti nel carrello)
      -> SMTP (invia email di recupero)
      -> PostgreSQL ( registra notifica inviata)
    -> Wait (24 ore)
    -> IF (carrello ancora abbandonato?)
      -> true: SMTP (seconda email con sconto extra)

Email di ri-engagement per contatti inattivi

Schedule Trigger (ogni lunedì alle 9:00)
  -> PostgreSQL (contatti senza apertura email da 60+ giorni)
  -> Loop Over Items
    -> Code (genera email personalizzata con "ti manchiamo")
    -> SMTP (invia email ri-engagement)
    -> IF (risposta entro 7 giorni?)
      -> true: aggiorna segmento a "riattivato"
      -> false: sposta in lista "inattivi - non contattare"

Confronto con piattaforme dedicate

Tabella comparativa

Caratteristican8n + SMTPMailchimpBrevoActiveCampaign
Costo per 10.000 email/mese~20 EUR (SMTP)~75 EUR~39 EUR~49 EUR
Segmentazione avanzataCompleta (custom)Base/AvanzataBase/AvanzataAvanzata
Automazioni complesseIllimitate1500 contatti (free)300 workflow (piano Business)Illimitate (Enterprise)
Integrazioni esterneQualsiasi API300+ native150+ native900+ native
Template editorHTML customDrag-and-dropDrag-and-dropDrag-and-drop
Analytics avanzateCustom (da costruire)BuoneBuoneEccellenti
DeliverabilityDipende dal providerAltaAltaAlta
Curva di apprendimentoMediaBassaBassaMedia

Quando scegliere n8n per l'email marketing

n8n è la scelta migliore quando:

  • Hai integrazioni custom (CRM proprietario, ERP, database legacy)
  • Le logiche di automazione sono complesse e non rientrano nei template predefiniti
  • Vuoi evitare il vendor lock-in e mantenere il pieno controllo
  • Hai competenze tecniche in casa (anche un solo sviluppatore)
  • Il budget è limitato ma il volume di email è significativo

Quando preferire una piattaforma dedicata

Una piattaforma dedicata è più adatta quando:

  • Il team marketing è non tecnico e ha bisogno di un'interfaccia visuale
  • La creazione di template è un'attività frequente e il drag-and-drop è essenziale
  • Non hai risorse tecniche per mantenere le automazioni
  • Le integrazioni native della piattaforma coprono tutti i tuoi strumenti

Best practice per la deliverability

Indipendentemente dall'approccio scelto, segui queste regole per massimizzare la percentuale di email che arrivano nella casella "In arrivo" dei destinatari:

  1. Autenticazione SPF, DKIM, DMARC: configura correttamente i record DNS del tuo dominio
  2. Double opt-in: chiedi conferma dopo la registrazione per evitare spam trap
  3. Lista pulita: rimuovi regolarmente gli indirizzi inattivi (soft bounce, non aperti da 90+ giorni)
  4. Frequency capping: non inviare più di 2-3 email a settimana per lista
  5. Oggetto rilevante: l'oggetto deve corrispondere al contenuto dell'email
  6. Unsubscribe chiaro: il link di cancellazione deve essere visibile in ogni email
  7. Test A/B: testa sempre oggetto, mittente e call-to-action prima dell'invio massivo

Conformità GDPR

In Italia, il trattamento dei dati per l'email marketing deve rispettare il GDPR. Con n8n puoi implementare facilmente la conformità:

  • Consenso esplicito: salva la data e l'IP di accettazione per ogni iscritto
  • Diritto di cancellazione: implementa un webhook /unsubscribe che rimuova il contatto da tutte le liste
  • Diritto di accesso: crea un endpoint che restituisca tutti i dati associati a un'email
  • Data retention: automatizza la cancellazione dei dati dopo 24 mesi di inattività

Conclusione

n8n offre un livello di personalizzazione e flessibilità per l'email marketing che le piattaforme dedicate non possono eguagliare. Sebbene richieda un investimento iniziale maggiore in termini di configurazione, il risparmio a lungo termine e il controllo totale sulle automazioni ripagano ampiamente lo sforzo.

Il consiglio pratico è iniziare con un approccio ibrido: usa n8n per le automazioni complesse e i trigger comportamentali, e affida a un provider email dedicato l'invio effettivo e le analytics. Questa combinazione offre il meglio di entrambi i mondi.

M

Marco Ferri

Automation Architect

Specialista in workflow automation e integrazioni enterprise. Oltre 15 anni di esperienza in architetture IT per PMI italiane.

Articoli correlati