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.

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?

Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →