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.
[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!
Scopri la consulenza →

