/
Cloud Scheduler

Azure Functions Timer Trigger Guide

Azure Functions' Timer Trigger uses NCRONTAB expressions — a 6-field format that adds a leading seconds field to standard cron, giving Azure sub-minute scheduling precision that plain 5-field cron can't express, at the cost of needing an extra field on every expression.

Syntax Notes

6 fields: {second} {minute} {hour} {day} {month} {day-of-week} — note the field order starts with seconds, unlike Quartz's similar-looking but differently-ordered 6/7-field format. Runs in UTC by default unless the WEBSITE_TIME_ZONE app setting is configured.

Examples

Every 5 minutes (function.json / attribute)
0 */5 * * * *
Every day at 2:30 AM UTC
0 30 2 * * *
C# isolated worker timer trigger
[Function("NightlyJob")]
public void Run([TimerTrigger("0 0 2 * * *")] TimerInfo timer) { /* ... */ }

Gotchas

  • NCRONTAB's 6 fields start with seconds, while Quartz's 6-field format (used by AWS EventBridge and others) starts with minutes and ends with an optional year — copying an expression between the two without noticing the different field order produces a schedule that silently means something else.
  • Timer triggers run in UTC by default; setting the WEBSITE_TIME_ZONE app setting changes the timezone, but that setting affects the entire Function App, not just one function, which can have unintended side effects on other time-sensitive code.
  • On a Consumption plan, a Function App that's scaled to zero can experience a cold start that delays the actual invocation slightly past the scheduled second — for precision-sensitive jobs, an App Service or Premium plan keeps the app warm.

Best Practices

  • Double-check field order against NCRONTAB's documentation specifically — its resemblance to both standard cron and Quartz cron makes it easy to misplace a field.
  • Use a Premium or App Service plan rather than Consumption if scheduled timing precision matters, to avoid cold-start delay on the triggering invocation.
  • Log the actual UTC invocation time inside the function itself during development, to confirm the schedule fires when you expect before relying on it in production.

Frequently Asked Questions

Does NCRONTAB support timezones?
Not per-expression — timezone is controlled by the WEBSITE_TIME_ZONE application setting on the whole Function App, not the timer trigger expression itself.
How is NCRONTAB different from standard cron?
NCRONTAB adds a leading seconds field (6 fields total: second, minute, hour, day, month, day-of-week), giving sub-minute precision that standard 5-field cron cannot express.
Can I trigger a timer function manually for testing?
Yes — in the Azure Portal or via the Azure Functions Core Tools you can manually invoke a timer-triggered function without waiting for its schedule, which is the standard way to test the function logic itself independent of timing.