Workflow N8N Template

Newsletter Automatica con n8n + Mailchimp/ConvertKit: Guida Pratica End‑to‑End

Vuoi trasformare contenuti sparsi (blog, prodotti, social) in una newsletter automatica n8n mailchimp che parte puntuale, personalizzata e approvata dal team? In questa guida costruirai un sistema completo: raccolta e arricchimento contenuti, deduplica, formattazione HTML, approvazione umana via Telegram, invio su Mailchimp o ConvertKit e report di performance. Il flusso si appoggia a nodi standard n8n — Cron, HTTP Request, Set, Code, Merge, Switch e Webhook Trigger — per orchestrare automazione email marketing con n8n in modo robusto e flessibile. Vedrai come sincronizzare iscritti/segmenti, gestire tag, impostare sequenze in ConvertKit, e applicare best practice su rate limit, retry, deliverability (SPF/DKIM/DMARC) e A/B test dell’oggetto. Il risultato: una pipeline low‑code che ti fa risparmiare ore ogni settimana, mantenendo controllo totale su contenuti e tempi di invio.

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

[IMG: Panoramica flusso: Cron → HTTP Request (raccolta) → Set/Code (normalize/HTML) → Telegram Approval (Webhook) → HTTP Request (Mailchimp/ConvertKit) → Report]


Perché automatizzare e cosa ti serve: benefici e prerequisiti

Automatizzare la newsletter con n8n significa coerenza, velocità e scalabilità. Con una newsletter automatica n8n mailchimp puoi:

  • Ridurre i tempi di preparazione da ore a minuti.
  • Mantenere standard di qualità con una checklist ripetibile (segmentazione contatti e gestione tag, merge fields e personalizzazione contenuti).
  • Scalare il numero di edizioni e segmenti senza moltiplicare il lavoro manuale.

Prerequisiti essenziali

  • Account n8n (Cloud o self‑host) e accesso all’editor.
  • Credenziali ESP: integrazione n8n con Mailchimp e/o integrazione n8n con ConvertKit via API.
  • Dominio di invio autenticato (deliverability SPF DKIM DMARC) e warm‑up per liste nuove.
  • Fonte contenuti: RSS/Blog/API, shop o fogli di calcolo; endpoint o file pronti alla lettura.
  • Template HTML responsive per newsletter (brand‑consistent, con fallback testuale).

Cosa copriremo

  • Orchestrazione dei contenuti con workflow n8n per newsletter: raccolta, arricchimento, deduplica e HTML.
  • Invio campagne Mailchimp (creazione, contenuto, send) e gestione contatti/segmenti in ConvertKit (iscritti, tag, sequenze email in ConvertKit).
  • Approvazione umana del contenuto via Telegram come human‑in‑the‑loop (HITL).
  • Stabilità: gestione rate limit delle API di Mailchimp e strategie di retry ed error handling in n8n.
  • Misura: metriche (open/click/unsubscribe) e feedback loop per migliorare l’engagement.

Architettura del flusso: raccolta, arricchimento, deduplica, HTML

Pianifica e innesca il flusso

  • Usa un trigger a orario per generare la tua newsletter automatica n8n mailchimp secondo calendario editoriale.

Esempio Cron (sintetico)

{
  "name": "Cron",
  "type": "n8n-nodes-base.cron",
  "typeVersion": 1,
  "parameters": {
    "mode": "everyWeek",
    "hours": [9],
    "daysOfWeek": ["monday"]
  }
}

Raccogli i contenuti

  • HTTP Request per recuperare articoli/prodotti da API interne o esterne.
{
  "name": "Fetch Articles",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://api.example.com/newsletter-items?date={{$now}}",
    "method": "GET",
    "responseFormat": "json",
    "jsonParameters": true
  }
}

Normalizza e arricchisci

  • Set per mappare campi coerenti (title, url, summary, image).
{
  "name": "Normalize Fields",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3,
  "parameters": {
    "keepOnlySet": true,
    "values": {
      "string": [
        { "name": "title", "value": "={{ $json.headline || $json.title }}" },
        { "name": "url", "value": "={{ $json.link || $json.url }}" },
        { "name": "summary", "value": "={{ $json.excerpt || $json.description }}" },
        { "name": "image", "value": "={{ $json.cover || $json.image }}" }
      ]
    }
  }
}

Deduplica e ordina

  • Code per rimuovere duplicati per URL e limitare il numero di item.
// Run Once For All Items
const seen = new Set();
const out = [];
for (const i of items) {
  const u = i.json.url;
  if (!u || seen.has(u)) continue;
  seen.add(u);
  out.push(i);
}
// Mantieni i top 6
return out.slice(0, 6);

Assembla l’HTML

  • Code per comporre il template HTML responsive usando i campi normalizzati.
// Run Once For All Items
function card(it) {
  return `
    <tr>
      <td style="padding:16px;border-bottom:1px solid #eee">
        ${it.image ? `<img src="${it.image}" alt="" style="max-width:100%;height:auto;border-radius:6px" />` : ``}
        <h3 style="font-family:Arial;margin:12px 0 6px">${it.title}</h3>
        <p style="font-family:Arial;color:#444;margin:0 0 8px">${it.summary || ''}</p>
        <a href="${it.url}" style="font-family:Arial;color:#0a66c2">Leggi</a>
      </td>
    </tr>`;
}
const rows = items.map(i => card(i.json)).join('');
const html = `
  <table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="max-width:640px;margin:auto">
    ${rows}
  </table>`;
return [{ json: { html } }];

[IMG: Editor n8n con nodi Cron → HTTP Request → Set → Code (HTML)]


Mailchimp: creazione campagna, contenuto HTML e invio via API

Integrazione n8n con Mailchimp via HTTP Request ti consente di creare una newsletter automatica n8n mailchimp senza dipendere da strumenti esterni. Il flusso tipico è:

  1. Creare la campagna (lista/segmento target, oggetto, from_name).

  2. Impostare il contenuto HTML.

  3. Inviare la campagna (o programmare l’invio).

1) Crea la campagna

{
  "name": "MC Create Campaign",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://<dc>.api.mailchimp.com/3.0/campaigns",
    "method": "POST",
    "responseFormat": "json",
    "jsonParameters": true,
    "options": { "bodyContentType": "json" },
    "bodyParametersJson": "={{ { type: 'regular', recipients: { list_id: $json.MC_LIST_ID, segment_opts: $json.MC_SEGMENT || undefined }, settings: { subject_line: $json.subject, from_name: $json.fromName, reply_to: $json.replyTo } } }}"
  },
  "credentials": {
    "httpHeaderAuth": { "name": "Mailchimp Header Auth" }
  }
}

Note: imposta l’header Authorization secondo le policy del tuo account (API key e data center).

2) Imposta il contenuto HTML

{
  "name": "MC Set Content",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://<dc>.api.mailchimp.com/3.0/campaigns/{{$json.id}}/content",
    "method": "PUT",
    "responseFormat": "json",
    "jsonParameters": true,
    "options": { "bodyContentType": "json" },
    "bodyParametersJson": "={{ { html: $json.html } }}"
  },
  "credentials": {
    "httpHeaderAuth": { "name": "Mailchimp Header Auth" }
  }
}

3) Invia (o programma) la campagna

{
  "name": "MC Send Campaign",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://<dc>.api.mailchimp.com/3.0/campaigns/{{$json.id}}/actions/send",
    "method": "POST",
    "responseFormat": "json"
  },
  "credentials": {
    "httpHeaderAuth": { "name": "Mailchimp Header Auth" }
  }
}

Best practice

  • Gestione rate limit delle API di Mailchimp: in caso di 429/5xx, instrada l’errore su un ramo di “retry” (Switch sullo status e piccolo delay prima di ripetere la richiesta).
  • Personalizzazione: merge fields e personalizzazione contenuti (es. FNAME) compilati a monte nel Code, così l’HTML è pronto per ogni segmento.
  • A/B test dell’oggetto: crea due campagne simili con subject diverso e invia a sotto‑segmenti; compara KPI e promuovi il vincitore nella prossima edizione.

[IMG: Ramo Mailchimp con nodi Create → Set Content → Send e gestione errori]


ConvertKit: iscritti, tag e sequenze, con invio broadcast via API

Quando preferisci un ESP focalizzato su creator, l’integrazione n8n con ConvertKit si realizza via HTTP Request.

Gestire iscritti e tag

  • Crea/aggiorna iscritto e applica tag per attivare automazioni (es. sequenze email in ConvertKit).
{
  "name": "CK Upsert Subscriber",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://api.convertkit.com/v3/subscribers",
    "method": "POST",
    "responseFormat": "json",
    "jsonParameters": true,
    "queryParametersUi": {
      "parameter": [
        { "name": "api_key", "value": "={{ $json.CK_API_KEY }}" }
      ]
    },
    "bodyParametersJson": "={{ { email: $json.email, first_name: $json.firstName || undefined } }}"
  }
}
  • Applica un tag (segmentazione contatti e gestione tag):
{
  "name": "CK Tag Subscriber",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://api.convertkit.com/v3/tags/{{$json.tag_id}}/subscribe",
    "method": "POST",
    "responseFormat": "json",
    "jsonParameters": true,
    "queryParametersUi": { "parameter": [ { "name": "api_key", "value": "={{ $json.CK_API_KEY }}" } ] },
    "bodyParametersJson": "={{ { email: $json.email } }}"
  }
}

Invio broadcast

  • ConvertKit consente di creare broadcast via API: prepara oggetto e HTML, poi pubblica. Se l’endpoint non è coperto da un nodo dedicato, usa HTTP Request come sopra con metodo/URL/payload richiesti.

Best practice

  • Se vuoi replicare l’alternativa a RSS‑to‑email con n8n, orchestri raccolta/HTML nel canvas e usi il broadcast ConvertKit come step finale.
  • In caso di rate limit, instrada su ramo di attesa e ripeti il tentativo.

[IMG: Ramo ConvertKit con Upsert → Tag → Broadcast]


Human‑in‑the‑loop: approvazione del contenuto via Telegram

Mantieni controllo editoriale della tua newsletter automatica n8n mailchimp con una semplice approvazione Telegram.

Invio anteprima all’editor

{
  "name": "Telegram Send Preview",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 1,
  "parameters": {
    "url": "https://api.telegram.org/bot{{$json.TG_TOKEN}}/sendMessage",
    "method": "POST",
    "responseFormat": "json",
    "jsonParameters": true,
    "bodyParametersJson": "={{ { chat_id: $json.TG_CHAT_ID, text: `Anteprima pronta: ${$json.previewUrl}\\nApprova con /approva o rifiuta con /rifiuta`, parse_mode: 'HTML' } }}"
  }
}

Ricezione comando di approvazione

  • Espone un endpoint con Webhook Trigger per ricevere update da Telegram (imposta il webhook del bot verso l’URL esposto).

Webhook Trigger (sintetico)

{
  "name": "Webhook Trigger",
  "type": "n8n-nodes-base.webhook",
  "typeVersion": 1,
  "parameters": {
    "httpMethod": "POST",
    "path": "telegram-approval",
    "responseMode": "lastNode"
  }
}
  • Switch per gestire testo “/approva” o “/rifiuta”; se approvato, prosegui verso l’invio su Mailchimp/ConvertKit, altrimenti notifica revisione.

Vantaggi

  • Eviti invii errati; inserisci check last‑minute (link rotti, copy).
  • Documenti audit di approvazioni nel log (Google Sheet o DB).

[IMG: Ramo HITL: Send Preview → Webhook → Switch (approve/reject)]


Best practice: deliverability, error handling e A/B test

Deliverability

  • Configura SPF/DKIM/DMARC sul dominio di invio (obbligatorio per recapito in inbox).
  • Warm‑up per domini/IP nuovi; inizia con segmenti engaged.
  • Mantieni liste pulite (unsubscribe/bounce): sincronizza la pulizia a valle.

Error handling e resilienza

  • Gestisci retry e backoff: se un HTTP Request fallisce (429/5xx), instrada su un ramo “retry” con un breve delay e riprova; in caso di nuovi errori, manda alert (Slack/Email).
  • Valida il contenuto: Code/Set per rimuovere item vuoti o link non validi prima dell’invio.
  • Logging centralizzato: salva in un log il subject, numero di item, target list/segment, ID campagna o broadcast e timestamp.

A/B test su oggetto e contenuto

  • Crea due varianti subject_line e inviale a sotto‑segmenti.
  • Usa un job successivo per recuperare open/click e determinare il vincitore.

[IMG: Rami di errore con Switch su statusCode e notifica finale]


Metriche e feedback loop: open, click, unsubscribe

  • Recupera i dati post‑invio via API (Mailchimp/ConvertKit) con HTTP Request: open rate, click rate, unsub.
  • Unisci dati a livello di campagna in un foglio o DB per trend mensili.
  • Chiudi il loop: se click su una categoria specifica sono alti, promuovi più contenuti simili nella prossima newsletter automatica n8n mailchimp.

Esempio Set per KPI consolidati

{
  "name": "Build KPI Row",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3,
  "parameters": {
    "keepOnlySet": true,
    "values": {
      "string": [
        { "name": "campaignId", "value": "={{ $json.campaign_id }}" },
        { "name": "subject", "value": "={{ $json.subject }}" }
      ],
      "number": [
        { "name": "openRate", "value": "={{ +$json.open_rate }}" },
        { "name": "clickRate", "value": "={{ +$json.click_rate }}" },
        { "name": "unsub", "value": "={{ +$json.unsubscribes }}" }
      ]
    }
  }
}

[IMG: Ramo “Insights” che scrive KPI in un datastore]


Quick Takeaways

  • Orchetra contenuti con Cron → HTTP Request → Set/Code → HTML; inserisci un passaggio di approvazione Telegram prima dell’invio.
  • Per Mailchimp: crea campagna, imposta HTML e invia con HTTP Request; gestisci rate limit con rami di retry.
  • Per ConvertKit: iscriviti/aggiorna contatti, applica tag e invia broadcast via API; attiva sequenze con tagging.
  • Cura deliverability: SPF/DKIM/DMARC, warm‑up e pulizia liste; misura open/click/unsub e chiudi il loop sui contenuti.
  • A/B test su oggetto: due varianti, segmenti piccoli, promuovi la migliore nella prossima edizione.
  • Logga tutto (subject, segmenti, item conteggiati, ID campagna) per audit e miglioramenti continui.

Conclusione

Con n8n trasformi il processo newsletter in una pipeline controllata e scalabile: dalla selezione dei contenuti alla formattazione HTML, dall’approvazione umana alla consegna su Mailchimp/ConvertKit. Basandoti su nodi standard (Cron, HTTP Request, Set, Code, Merge, Switch, Webhook Trigger) strutturi un flusso robusto che gestisce retry, rate limit, segmentazione e personalizzazione, riducendo il carico manuale e migliorando l’affidabilità. La tua newsletter automatica n8n mailchimp diventa così un asset operativo: puntuale, coerente e capace di apprendere dai risultati grazie a un feedback loop sano su open/click/unsub. Inizia in piccolo: un’unica fonte contenuti, una lista calda e un template semplice. Poi itera con approvazioni Telegram, A/B test dell’oggetto e segmenti mirati. In poche settimane avrai un sistema stabile che libera tempo al team e migliora i numeri in modo costante.


FAQ

  1. Posso sostituire un classico RSS‑to‑email con questo flusso?

Sì. Usa HTTP Request per recuperare i contenuti (dal tuo CMS o API), normalizza con Set/Code e genera HTML. Invia poi tramite integrazione n8n con Mailchimp o integrazione n8n con ConvertKit.

  1. Come gestisco segmenti e tag in pratica?

Applica segmentazione contatti e gestione tag prima dell’invio: in Mailchimp selezioni la lista/segmento quando crei la campagna; in ConvertKit tagghi il contatto via API per includerlo in sequenze email in ConvertKit o broadcast.

  1. Come evito errori con i limiti API?

Implementa strategie di retry ed error handling in n8n: se l’HTTP Request ritorna 429/5xx, instrada su un ramo di attesa e riprova. Logga gli errori e imposta alert al team.

  1. Posso personalizzare i contenuti con merge fields?

Sì. Prepara i merge fields e la personalizzazione contenuti nel Code/Set e inseriscili nell’HTML. Verifica compatibilità con il tuo ESP e testa con una lista di preview.

  1. Come misuro l’impatto delle newsletter?

Dopo l’invio, interroga le API del tuo ESP con HTTP Request per ottenere open/click/unsubscribe. Salva i dati in un foglio o DB e usa questi insight per A/B test su oggetto e contenuto.


Ci dai una mano?

Quale fonte contenuti userai per la prima automazione e preferisci inviare con Mailchimp o ConvertKit? Raccontacelo e condividi l’articolo con il tuo team: costruiamo insieme una pipeline di newsletter più veloce e intelligente!

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.