Time-based automation is one of the most powerful features in any workflow engine. Whether you need to send a daily sales report, run a nightly database cleanup, or fire a weekly newsletter, the Cron Trigger node in n8n handles all of these scenarios elegantly.
Understanding Cron Expressions
A cron expression is a compact string of 5 space-separated fields that specify when a job should run:
* * * * *
β β β β βββ Day of week (0β7, where 0 and 7 = Sunday)
β β β βββββ Month (1β12)
β β βββββββ Day of month (1β31)
β βββββββββ Hour (0β23)
βββββββββββ Minute (0β59)
Common Cron Patterns
Here are the most-used scheduling patterns you will configure in n8n:
Configuring the Cron Trigger in n8n
Adding a scheduled trigger is simple:
- Add a Schedule Trigger node to your canvas.
- Click the node to open settings.
- Choose Custom (Cron) from the Trigger Rules dropdown.
- Paste your cron expression or use the visual picker.
β±οΈ Timezone Tip: Always set the GENERIC_TIMEZONE environment variable in your Docker container (e.g., Asia/Kolkata) to ensure scheduled triggers fire at the correct local time and not UTC.
Real-World Example: Weekly Summary Email
A common use case: send a weekly business summary every Monday at 9 AM. Here is the complete flow structure:
[Schedule Trigger: 0 9 * * 1] β [Fetch Data: Google Sheets] β [Code Node: Format Summary] β [Gmail: Send Report]
The Code Node can aggregate totals, format HTML email templates, and include dynamic bar-chart text representations before handing the payload over to the Gmail or SendGrid email node.
Avoiding Missed Executions
If your server reboots or the n8n container restarts, any scheduled trigger that was supposed to fire during the downtime will be skipped. To mitigate this in high-availability requirements:
- Enable Queue Mode using Redis to store and replay pending executions.
- Set the container restart policy to
alwaysin Docker Compose. - Monitor execution history inside n8n's Execution Log panel to quickly spot missed runs.