n8n e WooCommerce: guida completa all'automazione e-commerce
Automatizza il tuo e-commerce WooCommerce con n8n: gestione ordini, inventario, notifiche clienti, carrelli abbandonati, recensioni e sincronizzazione contabile.

Perché automatizzare WooCommerce con n8n
Se gestisci un e-commerce con WooCommerce, sai quanto tempo consumano le attività ripetitive: aggiornare lo stato degli ordini, inviare notifiche ai clienti, sincronizzare l'inventario, sollecitare le recensioni, esportare i dati per il commercialista. Ogni giorno, queste operazioni manuali rubano ore che potresti dedicare a far crescere il business.
n8n permette di automatizzare tutto questo con workflow visivi, senza limiti di esecuzioni (in self-hosted) e con il pieno controllo sui dati dei tuoi clienti.
In questa guida costruiamo 6 automazioni pratiche che coprono l'intero ciclo di vita di un ordine e-commerce.
Prerequisiti
Prima di iniziare, assicurati di avere:
- n8n funzionante (self-hosted o cloud)
- WooCommerce con le API REST attive
- Chiavi API WooCommerce: vai su WooCommerce > Impostazioni > Avanzate > REST API e crea una coppia di chiavi con permessi di lettura/scrittura
Per configurare le credenziali in n8n:
- Vai su Credenziali > Aggiungi credenziale
- Seleziona "WooCommerce API"
- Inserisci l'URL del tuo sito, Consumer Key e Consumer Secret
- Testa la connessione
Automazione 1: gestione ordini e notifiche in tempo reale
Il problema
Quando arriva un nuovo ordine, devi: verificare il pagamento, aggiornare lo stato, notificare il magazzino, inviare conferma al cliente. Tutto manualmente.
Il workflow
Webhook WooCommerce (nuovo ordine)
-> Verifica stato pagamento
-> IF pagamento confermato:
-> Aggiorna stato ordine a "In lavorazione"
-> Notifica Slack/Telegram al team magazzino
-> Invia email di conferma personalizzata al cliente
-> Registra in Google Sheets per il tracking
-> ELSE:
-> Log pagamento in attesa
-> Notifica al team amministrativo
Configurazione passo-passo
Nodo 1 - Webhook WooCommerce: configura il webhook in WooCommerce (Impostazioni > Avanzate > Webhook) con topic "Order created" e URL del webhook n8n.
Nodo 2 - IF (verifica pagamento):
// Condizione: stato pagamento
$input.first().json.body.status === 'processing'
Nodo 3 - Notifica Telegram al magazzino:
Nuovo ordine #{{ $json.body.number }}
Cliente: {{ $json.body.billing.first_name }} {{ $json.body.billing.last_name }}
Prodotti:
{{ $json.body.line_items.map(item => `- ${item.name} x${item.quantity}`).join('\n') }}
Totale: {{ $json.body.total }} EUR
Spedizione: {{ $json.body.shipping.city }}, {{ $json.body.shipping.postcode }}
Nodo 4 - Email personalizzata: usa il nodo Send Email o un servizio come Brevo (ex SendinBlue) per inviare una conferma personalizzata con tracking e informazioni utili.
Risultato
Ogni nuovo ordine viene processato in meno di 5 secondi: il team magazzino riceve la notifica istantanea, il cliente ha la conferma personalizzata e i dati vengono registrati automaticamente.
Automazione 2: sincronizzazione inventario multi-canale
Il problema
Vendi su WooCommerce, su Amazon e in un negozio fisico. L'inventario deve essere sincronizzato in tempo reale per evitare vendite di prodotti esauriti.
Il workflow
Trigger: ogni 5 minuti (Schedule Trigger)
-> Leggi inventario WooCommerce
-> Leggi inventario Amazon (via API)
-> Calcola differenze
-> IF quantità cambiata:
-> Aggiorna WooCommerce
-> Aggiorna Amazon
-> Aggiorna foglio Google Sheets (master)
-> Notifica se stock sotto soglia minima
Nodo chiave: calcolo differenze
// Nel nodo Code
const wooProducts = $input.first().json;
const amazonProducts = $('Amazon Inventory').first().json;
const updates = [];
for (const wooProduct of wooProducts) {
const amazonMatch = amazonProducts.find(
a => a.sku === wooProduct.sku
);
if (amazonMatch) {
const totalStock = wooProduct.stock_quantity;
const amazonSold = amazonMatch.pending_orders || 0;
const newStock = totalStock - amazonSold;
if (newStock !== wooProduct.stock_quantity) {
updates.push({
sku: wooProduct.sku,
name: wooProduct.name,
old_stock: wooProduct.stock_quantity,
new_stock: newStock,
source: 'amazon_sync'
});
}
}
}
return updates.map(u => ({ json: u }));
Alert stock basso
Aggiungi un nodo IF che controlla la soglia minima:
$json.new_stock <= $json.reorder_point
Se la soglia è raggiunta, invia un'email al responsabile acquisti con la lista dei prodotti da riordinare.
Automazione 3: recupero carrelli abbandonati
Il problema
In media, il 70% dei carrelli e-commerce viene abbandonato. Anche recuperare il 5-10% di questi rappresenta un aumento significativo del fatturato.
Il workflow
Schedule Trigger (ogni ora)
-> Query WooCommerce: ordini in stato "pending" da più di 1 ora
-> Filtra: escludi ordini già sollecitati
-> Per ogni carrello abbandonato:
-> Attendi 1 ora (Wait node)
-> Verifica se l'ordine è stato completato nel frattempo
-> IF non completato:
-> Invia email 1: promemoria gentile
-> Attendi 24 ore
-> Verifica di nuovo
-> IF ancora non completato:
-> Invia email 2: offri sconto 10%
-> Attendi 48 ore
-> IF ancora non completato:
-> Invia email 3: ultima chance con sconto 15%
-> Registra come "perso" nel tracking
Email di recupero efficaci
Email 1 (dopo 1 ora) - Promemoria:
Oggetto: Hai dimenticato qualcosa nel carrello
Ciao {{ firstName }},
abbiamo notato che hai lasciato alcuni articoli nel carrello.
Li abbiamo conservati per te:
{{ productList }}
Completa l'ordine qui: {{ checkoutUrl }}
Email 2 (dopo 24 ore) - Con incentivo:
Oggetto: Uno sconto del 10% sui tuoi articoli
Ciao {{ firstName }},
i tuoi articoli sono ancora disponibili e abbiamo un'offerta per te:
usa il codice TORNO10 per uno sconto del 10%.
{{ productList }}
Completa l'ordine: {{ checkoutUrl }}?coupon=TORNO10
Email 3 (dopo 72 ore) - Urgenza:
Oggetto: Ultima possibilità - 15% di sconto
Ciao {{ firstName }},
è l'ultima volta che ti scriviamo per questi articoli.
Usa il codice ULTIMACHANCE per uno sconto del 15%.
La disponibilità è limitata.
Vai al checkout: {{ checkoutUrl }}?coupon=ULTIMACHANCE
Generazione coupon automatica
// Nodo Code: crea coupon WooCommerce via API
const couponCode = `RECUPERO_${$json.order_id}_${Date.now()}`;
return [{
json: {
code: couponCode,
discount_type: 'percent',
amount: '10',
individual_use: true,
usage_limit: 1,
date_expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000)
.toISOString()
}
}];
Automazione 4: richiesta recensioni post-acquisto
Il problema
Le recensioni sono fondamentali per le conversioni (i prodotti con recensioni convertono fino al 270% in più), ma pochissimi clienti le lasciano spontaneamente.
Il workflow
Webhook: ordine completato (consegnato)
-> Attendi 7 giorni (tempo di prova del prodotto)
-> Verifica che il cliente non abbia aperto un reso
-> IF nessun reso:
-> Invia email richiesta recensione
-> Attendi 14 giorni
-> Verifica se ha lasciato recensione
-> IF nessuna recensione:
-> Invia secondo promemoria con incentivo
Template email recensione
Oggetto: Come ti trovi con {{ productName }}?
Ciao {{ firstName }},
sono passati 7 giorni dal tuo acquisto di {{ productName }}.
Come ti trovi? La tua opinione è preziosa per noi e per gli
altri clienti.
Lascia una recensione (bastano 2 minuti):
{{ reviewUrl }}
Come ringraziamento, riceverai un coupon del 5% sul prossimo acquisto.
Grazie,
Il team di {{ shopName }}
Automazione 5: sincronizzazione contabile
Il problema
Ogni mese, esportare ordini, fatture e dati di pagamento per il commercialista è un lavoro tedioso e soggetto a errori.
Il workflow
Schedule Trigger (ogni giorno alle 23:00)
-> Recupera ordini completati del giorno
-> Per ogni ordine:
-> Estrai dati fiscali (ragione sociale, P.IVA, CF)
-> Formatta per il gestionale
-> Aggiungi riga a Google Sheets "Registro vendite"
-> A fine mese (1 del mese):
-> Genera riepilogo mensile
-> Crea file CSV per il commercialista
-> Invia email con allegato
Formattazione dati fiscali
// Nodo Code: estrai e formatta dati fiscali
const order = $json;
const fiscalData = {
numero_ordine: order.number,
data: order.date_created.split('T')[0],
cliente: `${order.billing.first_name} ${order.billing.last_name}`,
azienda: order.billing.company || '',
partita_iva: order.meta_data.find(m => m.key === '_billing_vat')?.value || '',
codice_fiscale: order.meta_data.find(m => m.key === '_billing_cf')?.value || '',
pec: order.meta_data.find(m => m.key === '_billing_pec')?.value || '',
codice_sdi: order.meta_data.find(m => m.key === '_billing_sdi')?.value || '',
imponibile: (parseFloat(order.total) - parseFloat(order.total_tax)).toFixed(2),
iva: parseFloat(order.total_tax).toFixed(2),
totale: order.total,
metodo_pagamento: order.payment_method_title
};
return [{ json: fiscalData }];
Integrazione con fatturazione elettronica
Se usi un servizio di fatturazione elettronica (Fatture in Cloud, Aruba, TeamSystem), puoi aggiungere un nodo HTTP Request per creare automaticamente la fattura:
// Chiamata API a Fatture in Cloud (esempio)
{
"method": "POST",
"url": "https://api-v2.fattureincloud.it/c/{{ companyId }}/issued_documents",
"headers": {
"Authorization": "Bearer {{ $credentials.fattureincloud.token }}"
},
"body": {
"data": {
"type": "invoice",
"entity": {
"name": "{{ $json.cliente }}",
"vat_number": "{{ $json.partita_iva }}"
},
"items_list": "{{ $json.items }}"
}
}
}
Automazione 6: monitoraggio prezzi competitor
Il problema
Vuoi mantenere i tuoi prezzi competitivi, ma controllare manualmente i siti dei competitor richiede ore.
Il workflow
Schedule Trigger (ogni 6 ore)
-> Per ogni prodotto monitorato:
-> HTTP Request: scarica pagina competitor
-> Estrai prezzo con HTML Extract/Code
-> Confronta con il tuo prezzo
-> IF differenza > 10%:
-> Notifica con suggerimento prezzo
-> Opzionale: aggiorna prezzo WooCommerce automaticamente
-> Registra storico in Google Sheets
Estrazione prezzo
// Nodo Code: estrai prezzo dalla pagina HTML
const html = $json.data;
// Esempio: cerca il prezzo in un selettore comune
const priceMatch = html.match(
/class="price"[^>]*>.*?(\d+[.,]\d{2})/s
);
const competitorPrice = priceMatch
? parseFloat(priceMatch[1].replace(',', '.'))
: null;
const myPrice = $('My Products').first().json.price;
const difference = ((myPrice - competitorPrice) / myPrice * 100).toFixed(1);
return [{
json: {
product: $json.product_name,
my_price: myPrice,
competitor_price: competitorPrice,
difference_percent: difference,
action_needed: Math.abs(difference) > 10
}
}];
Metriche e dashboard
Per monitorare l'impatto delle automazioni, crea un workflow che genera un report settimanale:
Schedule Trigger (lunedi alle 9:00)
-> Recupera metriche della settimana:
- Ordini processati automaticamente
- Carrelli recuperati (e fatturato generato)
- Recensioni ottenute
- Errori di sincronizzazione
- Tempo risparmiato stimato
-> Genera report
-> Invia email/Slack al team
KPI da monitorare
| Metrica | Target | Come misurarla |
|---|---|---|
| Ordini processati/giorno | 100% automatici | Counter nel workflow |
| Tasso recupero carrelli | 5-10% | Ordini recuperati / carrelli abbandonati |
| Recensioni ottenute | 15-20% dei clienti | Recensioni / ordini completati |
| Errori sync inventario | < 1% | Log errori / sync totali |
| Tempo risparmiato | 2+ ore/giorno | Stima basata su operazioni automatizzate |
Consigli per la produzione
- Error handling: ogni workflow deve avere un nodo Error Trigger che notifica il team in caso di fallimento
- Idempotenza: progetta i workflow in modo che ri-eseguirli non crei duplicati
- Rate limiting: rispetta i limiti API di WooCommerce (default: 25 richieste/secondo)
- Testing: testa ogni workflow con ordini di prova prima di attivarlo in produzione
- Logging: registra le azioni importanti in un foglio Google Sheets o database dedicato
Risultati attesi
Con queste 6 automazioni attive, una PMI e-commerce tipica può aspettarsi:
- 2-4 ore risparmiate al giorno in operazioni manuali
- 5-10% di fatturato recuperato dai carrelli abbandonati
- 3x più recensioni grazie alla richiesta automatica
- Zero errori di inventario grazie alla sincronizzazione in tempo reale
- Contabilità sempre aggiornata senza inserimenti manuali
Il tempo di setup per tutte e 6 le automazioni è di circa 2-3 giorni per una persona con competenze n8n base.
Vuoi implementare queste automazioni nel tuo e-commerce? Contattaci per una consulenza personalizzata.
Team n8n.it
Specialisti in Automazione
Siamo un team di esperti n8n focalizzati sull'automazione dei processi aziendali e la sicurezza delle implementazioni self-hosted.
Articoli correlati

Audit di sicurezza n8n: checklist per proteggere la tua istanza
Checklist pratica e completa per mettere in sicurezza la tua istanza n8n: reverse proxy, SSL, autent...
Leggi di più
Il costo reale di n8n self-hosted: server, manutenzione e tempo
n8n è gratuito, ma il self-hosting ha costi nascosti. Analizziamo il TCO reale: server, SSL, backup,...
Leggi di più
I 7 errori più comuni con n8n in produzione (e come evitarli)
Errori reali che abbiamo visto in decine di installazioni n8n in produzione: nessun error handling, ...
Leggi di più