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.
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.
2) 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).
3) 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.
4) 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.
2) 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.
3) 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.
4) 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.
5) 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?
Scopri la consulenza →

