Torna al Blog
Tutorial

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.

Team n8n.it- Specialisti in Automazione30 marzo 20269 min read
n8n e WooCommerce: guida completa all'automazione e-commerce

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:

  1. Vai su Credenziali > Aggiungi credenziale
  2. Seleziona "WooCommerce API"
  3. Inserisci l'URL del tuo sito, Consumer Key e Consumer Secret
  4. 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

MetricaTargetCome misurarla
Ordini processati/giorno100% automaticiCounter nel workflow
Tasso recupero carrelli5-10%Ordini recuperati / carrelli abbandonati
Recensioni ottenute15-20% dei clientiRecensioni / ordini completati
Errori sync inventario< 1%Log errori / sync totali
Tempo risparmiato2+ ore/giornoStima basata su operazioni automatizzate

Consigli per la produzione

  1. Error handling: ogni workflow deve avere un nodo Error Trigger che notifica il team in caso di fallimento
  2. Idempotenza: progetta i workflow in modo che ri-eseguirli non crei duplicati
  3. Rate limiting: rispetta i limiti API di WooCommerce (default: 25 richieste/secondo)
  4. Testing: testa ogni workflow con ordini di prova prima di attivarlo in produzione
  5. 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.

T

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