Loading

Scheduled triggers

Scheduled triggers run workflows automatically at specific times or intervals, without requiring manual intervention. Use scheduled triggers for recurring tasks like reports, data cleanup, or periodic health checks.

You can configure scheduled triggers using:

  • Interval-based scheduling: Run on a recurring interval (every x minutes, hours, or days)
  • Recurrence rule (RRule) expressions: Run at specific times in the specified timezone (for example, daily at 2 AM EST)

Interval-based scheduling runs a workflow repeatedly at a fixed interval.

The following example shows the basic syntax for an interval-based scheduled trigger:

triggers:
  - type: scheduled
    with:
      every: <amount><unit>
		

The supported units are:

  • Seconds: s (minimum supported value: 30s)
  • Minutes: m
  • Hours: h
  • Days: d

Every 5 minutes:

triggers:
  - type: scheduled
    with:
      every: 5m
		

Every hour:

triggers:
  - type: scheduled
    with:
      every: 1h
		

Every day:

triggers:
  - type: scheduled
    with:
      every: 1d
		

Every week:

triggers:
  - type: scheduled
    with:
      every: 7d
		

RRule-based scheduling runs a workflow at specific times using recurrence rules. This option supports daily, weekly, and monthly frequencies with timezone awareness.

The following example shows the basic syntax for an RRule-based scheduled trigger:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: DAILY
        interval: 1
        tzid: UTC
        dtstart: 2024-01-15T09:00:00Z
        byhour: []
        byminute: []
        byweekday: []
        bymonthday: []
		

The following table describes the available fields for configuring RRule-based scheduled triggers:

Field Required Description Values
freq Yes Frequency type DAILY, WEEKLY, or MONTHLY
interval Yes Interval between occurrences Positive integer (for example, 2 with freq: WEEKLY runs every 2 weeks)
tzid Yes Timezone identifier For example, UTC, America/New_York, Europe/London
dtstart No Start date ISO format (for example, 2024-01-15T09:00:00Z)
byhour No Hours to run Array of integers 0-23
byminute No Minutes to run Array of integers 0-59
byweekday Required when freq is WEEKLY Days of the week Array of weekdays: MO, TU, WE, TH, FR, SA, SU
bymonthday Required when freq is MONTHLY Days of the month Array of integers 1-31. Use negative values to count from the end of the month (for example, -1 for the last day of the month)

Daily at multiple times (6 AM, 12 PM, 6 PM) UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: DAILY
        interval: 1
        tzid: UTC
        byhour: [6, 12, 18]
        byminute: [0]
		

Daily with a custom start date at 9 AM UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: DAILY
        interval: 1
        tzid: UTC
        dtstart: 2024-01-15T09:00:00Z
        byhour: [9]
        byminute: [0]
		

Every weekday at 8 AM and 5 PM EST:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: DAILY
        interval: 1
        tzid: America/New_York
        byweekday: [MO, TU, WE, TH, FR]
        byhour: [8, 17]
        byminute: [0]
		

Weekly - every Tuesday at 10:30 AM UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: WEEKLY
        interval: 1
        tzid: UTC
        byweekday: [TU]
        byhour: [10]
        byminute: [30]
		

Every 2 weeks on Monday at 9 AM UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: WEEKLY
        interval: 2
        tzid: UTC
        byweekday: [MO]
        byhour: [9]
        byminute: [0]
		

Monthly on 1st and 15th at 10:30 AM UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: MONTHLY
        interval: 1
        tzid: UTC
        bymonthday: [1, 15]
        byhour: [10]
        byminute: [30]
		

Monthly on the last day of the month at 11 PM UTC:

triggers:
  - type: scheduled
    with:
      rrule:
        freq: MONTHLY
        interval: 1
        tzid: UTC
        bymonthday: [-1]
        byhour: [23]
        byminute: [0]
		

Business hours monitoring (weekdays at 8 AM and 5 PM EST):

triggers:
  - type: scheduled
    with:
      rrule:
        freq: DAILY
        interval: 1
        tzid: America/New_York
        byweekday: [MO, TU, WE, TH, FR]
        byhour: [8, 17]
        byminute: [0]