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

H3: 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"]
  }
}

H3: 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
  }
}

H3: 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 }}" }
      ]
    }
  }
}

H3: 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);

H3: 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).

H3: 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).

H3: 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" }
  }
}

H3: 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.

H3: 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 } }}"
  }
}

H3: 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.

H3: 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' } }}"
  }
}

H3: 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.

2) 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.

3) 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.

4) 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.

5) 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!

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