Guide

Il Nodo Schedule Trigger: come pianificare l’esecuzione automatica dei tuoi workflow

Vuoi inviare report ogni mattina, fare backup notturni e programmare sincronizzazioni senza toccare nulla? Lo Schedule Trigger (il “Cron” di n8n) è il modo più solido per farlo. Con il trigger n8n basato su orari e intervalli puoi orchestrare un job scheduler per automazioni affidabili: dagli aggiornamenti CRM alle estrazioni per la BI, fino agli alert su anomalie. In questa guida pratica impari a usare la pianificazione automatica dei workflow in n8n con impostazioni realmente funzionanti: intervalli di esecuzione programmata, configurazioni “at specific times”, esempi concreti di espressioni cron (in stile n8n), strategie per prevenire esecuzioni sovrapposte e pattern di idempotenza. Vedrai anche come impostare retry e gestione errori nei job schedulati con Error Trigger e avvisi Slack, oltre a suggerimenti per la gestione fuso orario e ora legale, rate limit e differenze operative tra cloud e self‑hosted. L’obiettivo: prendere decisioni una volta sola e automatizzare il resto, in modo che il tuo marketing funzioni ogni giorno all’ora giusta, senza sorprese.

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

Cos’è lo Schedule Trigger (Cron) e quando usarlo

Il nodo Cron (spesso chiamato Schedule Trigger) avvia i workflow su base temporale: ad orari specifici o a intervalli regolari. È ideale quando non hai un evento esterno (come un form o un webhook) ma vuoi che il flusso giri da solo secondo un calendario. In n8n il trigger n8n di tipo “Cron” non richiede input: quando scatta, fornisce un item vuoto e avvia il workflow, lasciandoti il pieno controllo di quello che accade dopo.

Per marketer, i casi d’uso più frequenti includono:

  • Report periodici e notifiche di stato (invio report KPI alle 9:00, recap campagne settimanale).
  • Backup e sincronizzazioni notturne con strumenti esterni (CRM, fogli dati, storage).
  • Data pipeline e housekeeping (pulizia dei dati obsoleti, rotazione log e archiviazione).
  • Monitoraggio di feed/API con intervalli di esecuzione programmata e avviso in caso di errore.

Differenza tra pianificazione a intervallo e pianificazione con cron

  • Intervallo (“Every X”): esecuzione ricorrente con cron-logic in n8n, es. ogni 15 minuti. Perfetto per polling e task ricorrenti con frequenza fissa.
  • Orari specifici (“At specific times”): esecuzione a orari determinati, anche multipli nello stesso giorno (es. 09:00 e 17:00). Ottimo per report e processi che devono partire a orari business.

Alternative: webhook, polling e trigger interni di n8n (quando preferirli)

  • Webhook: usa un trigger n8n HTTP quando l’evento arriva dall’esterno (lead, acquisti) e non vuoi attendere il prossimo slot pianificato.
  • Trigger di app/polling: se un’integrazione offre un “evento push” nativo, preferiscilo alla pianificazione; altrimenti fallback su intervalli brevi di polling.
  • Trigger interni (Error Trigger, ecc.): per orchestrare reazioni a stati del sistema (es. errori), poi combinati con il Cron per routine periodiche.

In sintesi: se il “quando” lo decidi tu, usa lo Schedule Trigger; se il “quando” lo decide un evento esterno, usa webhook o trigger specifici.

Configurazione rapida: impostazioni minime e casi d’uso comuni

Impostazioni minime per far partire un workflow ricorrente

  1. Aggiungi il nodo Cron (Schedule Trigger) all’inizio del workflow.

  2. Scegli la modalità: intervallo (Every X) oppure orari specifici (At specific times).

  3. Salva, attiva il workflow e verifica i run nei log.

Esempi pronti di pianificazione (funzionanti)

  1. Ogni 5 minuti (intervalli)
  • Node type: n8n-nodes-base.cron
  • Parametri:

{

“name”: “Every 5 Minutes”,

“type”: “n8n-nodes-base.cron”,

“typeVersion”: 1,

“parameters”: {

“mode”: “everyX”,

“value”: 5,

“unit”: “minutes”

}

}

Use case: controlli frequenti (es. polling di un endpoint con HTTP Request), con attenzione a limitazioni e rate limit delle API.

  1. Ogni notte alle 02:30 (orari specifici)
  • Parametri:

{

“name”: “Nightly 02:30”,

“type”: “n8n-nodes-base.cron”,

“typeVersion”: 1,

“parameters”: {

“triggerTimes”: {

“item”: [

{ “hour”: 2, “minute”: 30 }

]

}

}

}

Use case: pianificazione notturna dei processi (backup, generazione report, sincronizzazioni massive).

  1. Giorni lavorativi alle 09:00
  • Parametri:

{

“name”: “Weekdays 09:00”,

“type”: “n8n-nodes-base.cron”,

“typeVersion”: 1,

“parameters”: {

“triggerTimes”: {

“item”: [

{

“hour”: 9,

“minute”: 0,

“weekday”: [“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”]

}

]

}

}

}

Use case: invio report giornalieri al team marketing e vendite.

  1. Il primo giorno del mese alle 08:00
  • Parametri:

{

“name”: “Monthly 1st 08:00”,

“type”: “n8n-nodes-base.cron”,

“typeVersion”: 1,

“parameters”: {

“triggerTimes”: {

“item”: [

{

“hour”: 8,

“minute”: 0,

“dayOfMonth”: [1]

}

]

}

}

}

Use case: report periodici e consolidati, chiusure di periodo, snapshot costi/ricavi.

Tips operativi

  • Impostazioni minime: bastano hour/minute per gli orari fissi, oppure mode/value/unit per gli intervalli. Aggiungi weekday o dayOfMonth per filtrare.
  • Attivazione e pausa dei workflow pianificati: abilita/disabilita il workflow quando vuoi fermare o riprendere i job schedulati (ad es. durante deploy o manutenzione).

Gestire fusi orari e ora legale (DST)

Le configurazioni del Cron in n8n si basano su campi orari (hour/minute e filtri come weekday/dayOfMonth). Nelle fonti tecniche di riferimento non sono esposti parametri di timezone direttamente nel nodo. Considera quindi queste linee guida pragmatiche:

  • Imposta una singola timezone “di riferimento” per l’istanza (spesso UTC in ambienti server). Programmare in UTC riduce gli scostamenti legati all’ora legale.
  • Se il tuo team opera in più fusi, aggiungi una fase di calcolo offset nel workflow (es. calcolare l’ora locale per la notifica) invece di cambiare l’orario del trigger n8n.
  • Per processi critici all’ora locale (es. 09:00 ora Italia tutto l’anno), pianifica un orario “di sicurezza” (es. 08:55 UTC ≈ 09:55 CEST) e gestisci i 5 minuti di offset downstream, oppure aggiorna la programmazione in concomitanza dei passaggi a DST.
  • Documenta in Note il fuso orario atteso, così collaboratori e stakeholder leggono subito l’assunzione.

In assenza di un parametro di “timezone per schedule”, la migliore pratica è standardizzare su UTC lato server e convertire dove serve nel flusso. Se monitori KPI sensibili all’ora legale, aggiungi un controllo di data nel workflow per evitare duplicazioni o salti nei giorni di cambio orario.

Prevenire esecuzioni sovrapposte e garantire idempotenza

Alcuni job possono durare più dell’intervallo tra due run, causando overlap. Le fonti tecniche non documentano un blocco di concorrenza nativo del Cron; usa quindi pattern applicativi:

Pattern “Run Key” (idempotenza)

  • Idea: genera una chiave univoca per il run (es. la data del giorno) e usala in tutte le scritture downstream (upsert, append controllati).
  • Code node di esempio (crea runKey giornaliero):

return [{

json: {

runKey: new Date().toISOString().slice(0,10) + “-report-v1”

}

}];

  • Usa runKey come unique identifier nei sistemi di destinazione (es. report giornaliero), così un secondo run non duplica l’output.

Pattern “Soft Lock” esterno

  • Prima di partire, verifica via HTTP Request l’esistenza di un lock in una tabella/archivio (KV store, DB, foglio).
  • Se esiste, esci con Stop and Error o salta con IF.
  • Alla fine, rimuovi/aggiorna il lock. Questo riduce le esecuzioni sovrapposte senza funzioni speciali del trigger n8n.

Batch e finestra operativa

  • Se l’intervallo è breve, ma il lavoro è pesante, passa a orari specifici (At specific times) durante finestre off‑peak.
  • Usa SplitInBatches per rispettare limitazioni e rate limit delle API, evitando colli di bottiglia che allungano il run.

Monitoraggio overlap

  • Logga in output l’ora di inizio/fine job e confrontale in un cruscotto: se vedi run che si toccano, amplia l’intervallo o riduci il carico per run.

Error handling, retry e alerting

Error Trigger centralizzato

  • Crea un workflow separato con Error Trigger per intercettare gli errori di tutti i workflow (inclusi quelli schedulati).
  • Aggiungi un nodo Slack (Send Message) per notifiche automatiche in un canale #alerts con dettagli del run e del nodo che ha fallito.

Esempio messaggio Slack (campo text):

Fallito run pianificato: {{ $json.workflow.name }} alle {{ new Date().toISOString() }}. Nodo: {{ $json.node.name }}. Errore: {{ $json.error.message }}

Gestione errori nel workflow schedulato

  • continueOnFail: abilitalo sui nodi “fragili” per non interrompere l’intero job; gestisci poi via IF i record falliti per logging/ritentativi.
  • Stop and Error: se rilevi condizioni critiche (es. nessun dato entro le 9:10), interrompi esplicitamente e avvisa via Error Trigger.
  • Retry applicativo: non esiste un retry automatico documentato sul nodo Cron; implementa retry mirati (es. ri-processa solo il sottoinsieme fallito) con loop controllati o re-run programmati ravvicinati.

Notifiche e monitoraggio esecuzioni

  • Invia un messaggio “Job OK” a fine workflow con conteggio record processati e durata totale.
  • Conserva un item di log aggregato (Aggregate → All Item Data) a fine run per audit e diagnosi.

Best practice per cloud vs self‑hosted, scalabilità e rate limit

Cloud

  • Stabilità e aggiornamenti gestiti: ottimo per pianificazione automatica dei workflow in n8n senza manutenzione.
  • Mantieni intervalli conservativi su job intensivi; usa orari notturni della tua audience (non del data center).
  • Abilita notifiche su fallimenti per reagire rapidamente.

Self‑hosted

  • Scalabilità degli scheduler in self‑hosted: dimensiona CPU/RAM e storage per carichi intensivi e parallelismi interni.
  • Esegui l’istanza con timezone UTC per gestire meglio DST; documenta l’assunzione nel repository del team.
  • Pensa a una coda esterna o a job “shardati” in più workflow per distribuire i carichi.

Limitazioni e rate limit delle API

  • Preferisci At specific times per job voluminosi (finestra notturna).
  • Usa SplitInBatches, rispetta finestre di backoff e limita la concorrenza logica.
  • Evita polling troppo aggressivi: bilancia frequenza (Every X) e costi/limiti.

Attivazione e pausa dei workflow pianificati

  • Disattiva temporaneamente i workflow in periodi di manutenzione o durante deploy importanti; riattiva quando il sistema è stabile.

Casi d’uso di valore: report, backup e data pipeline

Report periodici e notifiche di stato

  • Pianifica Weekdays 09:00 → estrai KPI → genera sommario → invia su Slack/Email.
  • Aggiungi un log aggregato e invia un “risultato OK” con conteggi e durata.

Backup e sincronizzazioni notturne con strumenti esterni

  • Nightly 02:30 → esporta dataset da CRM/BI → carica su storage (S3, GDrive) → scrivi un checksum nel log.
  • Usa idempotenza con runKey mensile/giornaliero per evitare duplicati di snapshot.

Data pipeline e housekeeping

  • 1° del mese 08:00 → ruota log, archivia dati vecchi, ripulisci duplicati.
  • Pre‑calcolo di segmenti (VIP, churn risk) per campagne automatiche mattutine.

Integrazione con backup e report periodici

  • Due schedule: uno giornaliero “operativo” e uno mensile “contabile”.
  • Mantieni template di workflow schedulati riutilizzabili per processi simili.

Troubleshooting: problemi comuni e soluzioni rapide

Il workflow non parte all’orario previsto

  • Verifica che il workflow sia attivo.
  • Controlla parametri del Cron: hour/minute corretti? weekday/dayOfMonth coerenti?
  • Considera la timezone dell’istanza: se l’orario effettivo non coincide, verifica la configurazione del server/ambiente.

Esecuzioni duplicate o saltate

  • Overlap: il run precedente non è finito quando scatta il successivo. Aumenta l’intervallo, sposta a orari specifici, o applica un soft‑lock.
  • Carichi elevati: riduci payload per run, usa SplitInBatches e ottimizza chiamate esterne.
  • Risorse: monitora CPU/RAM; se sature, riduci parallelismo logico o potenzia l’host.

Rispettare i rate limit delle API e pianificare backoff

  • Riduci frequenza (Every X più alto) o usa At specific times in orari di bassa contesa.
  • Implementa backoff applicativo (es. ritenta in un run successivo, non subito).
  • Logga errori 429 per rilevare i pattern e adattare la schedulazione.

Quick Takeaways

  • Il trigger n8n “Cron” avvia workflow a orari fissi (triggerTimes) o a intervalli (mode: everyX).
  • Usa weekday/dayOfMonth per applicare filtri sui giorni e creare schedule business-ready.
  • Standardizza su UTC a livello di istanza e gestisci l’ora locale a valle per mitigare DST.
  • Prevenire esecuzioni sovrapposte: runKey per idempotenza e soft‑lock esterno.
  • Error Trigger + Slack: alert rapidi su fallimenti, con continueOnFail/Stop and Error dove serve.
  • Per rate limit, preferisci batch e orari notturni; evita polling eccessivo.

Conclusione

Lo Schedule Trigger è il cuore della pianificazione automatica dei workflow in n8n: con pochi parametri fai girare processi chiave in modo predicibile, liberi tempo e riduci gli errori manuali. Hai visto come usare intervalli (Every X) e orari specifici (triggerTimes), filtrare per weekday o dayOfMonth, e come organizzare processi reali di marketing: report periodici, backup notturni, sync verso CRM o data warehouse. Con pratiche di idempotenza e prevenzione delle sovrapposizioni mantieni i run puliti; con Error Trigger e notifiche Slack ottieni visibilità e risposta rapida ai problemi. Infine, una strategia consapevole di fusi orari/DST, rate limit e scalabilità (cloud vs self‑hosted) rende le automazioni robuste e pronte a crescere.

Il prossimo passo? Scegli un processo ripetitivo ad alto impatto (report KPI, segmenti CRM o backup) e trasformalo in un workflow schedulato: configura il trigger n8n, definisci idempotenza con un runKey, aggiungi alert e log finali. In poche iterazioni avrai un job affidabile che lavora per te, ogni giorno, all’ora giusta.

FAQ

  1. Qual è la differenza tra intervallo e orari specifici nello Schedule Trigger?
  • Intervallo (mode: “everyX”, value, unit) esegue il workflow a cadenza regolare (es. ogni 15 minuti). Orari specifici usano parameters.triggerTimes.item con campi hour/minute (e filtri weekday/dayOfMonth) per correre a orari determinati. Entrambe le modalità sono ideali per job scheduler per automazioni ripetitive.
  1. Posso impostare giorni lavorativi o il primo del mese?
  • Sì. Aggiungi weekday (es. [“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”]) o dayOfMonth (es. [1]) dentro triggerTimes.item insieme a hour/minute. È perfetto per report periodici e pianificazione notturna dei processi.
  1. Come gestisco i fusi orari e l’ora legale (DST)?
  • Le impostazioni del nodo non espongono un parametro di timezone. Pratica consigliata: esegui l’istanza in UTC e gestisci la conversione nel workflow. Documenta il fuso “di riferimento” e verifica gli orari nei giorni di cambio DST.
  1. Come evito esecuzioni sovrapposte e duplicazioni?
  • Non c’è un blocco di concorrenza nativo documentato. Usa idempotenza (runKey per run giornaliero/settimanale), soft‑lock esterno (verifica/crea lock via HTTP Request) e pianifica in finestre con spazio sufficiente. Riduci la frequenza o sposta a orari specifici se i run si accavallano.
  1. Come gestisco errori e retry nei job schedulati?
  • Centralizza con un Error Trigger che invia notifiche (es. Slack). Usa continueOnFail per non bloccare l’intero run e Stop and Error per terminare in modo esplicito se una condizione critica si verifica. Per retry, re‑schedula in un run successivo o implementa una logica di ripetizione mirata nel workflow.

Ti è stata utile questa guida? Dimmi quale job pianificato vuoi automatizzare per primo con il trigger n8n e condividila con chi nel tuo team lotta ogni giorno con task ripetitivi: che processo trasformerete in un run notturno affidabile?

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.