Loopfour
Triggers

Schedule trigger

Configure a schedule trigger with cron syntax and a time zone, and see how scheduled runs behave when a workflow is deployed or offline.

A schedule trigger starts a run on a timetable: every weekday morning, on the first of the month, every four hours. For the Studio walkthrough, see Run a workflow on a schedule.

Configuration

Give either cron or interval. When both are set, cron wins.

{
  "trigger": {
    "type": "schedule",
    "cron": "0 7 1 * *",
    "timezone": "America/New_York"
  }
}
FieldTypeDefaultMeaning
type"schedule"
cronstringnoneA five-field cron expression
interval{ "value": number, "unit": "minutes" | "hours" | "days" | "weeks" }noneA simple repeat, turned into a cron expression (below). value is 1 to 525,600
timezoneIANA time zoneUTCThe zone the cron expression is read in, such as Europe/London
enabledbooleantruefalse keeps the schedule but stops it starting runs

In Studio, the Schedule block has a Schedule field and a Timezone list with US Eastern, US Central, US Pacific, UTC, Europe/London and Asia/Tokyo. Through the API you can use any IANA zone.

Cron syntax

Five fields, read in timezone:

minute (0-59)  hour (0-23)  day of month (1-31)  month (1-12)  day of week (0-6, Sunday = 0)

* means any value, , separates a list, - gives a range and / a step.

WhenExpression
Weekdays at 9:000 9 * * 1-5
Mondays at 8:000 8 * * 1
First day of each month at 7:000 7 1 * *
Last few days of the month, at 18:000 18 28-31 * *
First day of each quarter at 6:000 6 1 1,4,7,10 *
Every 15 minutes*/15 * * * *

Cron has no "last day of the month". For month-end work, run on the first of the next month, or run on days 28 to 31 and check the date in a Condition step.

How intervals become cron

intervalCron used
1 minute* * * * *
N minutes*/N * * * *
1 hour0 * * * *
N hours0 */N * * *
1 day0 0 * * * (midnight)
N days0 0 */N * * (counts days of the month, so it restarts each month)
Any number of weeks0 0 * * 0 (Sundays at midnight)

Every number of weeks gives the same weekly schedule. For "every two weeks", use a weekly cron and skip alternate runs in a Condition step.

When the schedule exists

  • Activation creates it. The schedule is set up when the workflow is activated (Deploy in Studio). Activating a schedule workflow with neither cron nor interval fails with 400.
  • Pausing turns it off. A paused workflow's schedule is turned off, and a scheduled start that still fires is skipped while the workflow is not active.
  • Archiving removes it.
  • No catch-up runs. A scheduled time that passes while the workflow is paused or archived is skipped; it does not start a run later.

Run input

A scheduled run has triggerType: "schedule" and this input:

{
  "_schedule": {
    "scheduledTime": "2026-11-01T11:00:00.000Z",
    "actualTime": "2026-11-01T11:00:00.412Z",
    "timezone": "America/New_York"
  }
}

Read the time in steps with {{input._schedule.scheduledTime}}. It is an ISO time in UTC. A run started with POST /workflows/:id/schedule/trigger also has manualTrigger: true.

Manage the schedule through the API

CallScopeWhat it does
GET /workflows/:id/scheduleworkflows:readReturns the schedule: cronExpression, interval, timezone, enabled, nextRunAt, lastRunAt, runCount, consecutiveFailures, lastError. data is null when the workflow has no schedule
PUT /workflows/:id/scheduleworkflows:writeChanges cron, interval, timezone or enabled and saves them to the trigger. Returns nextRunAt
POST /workflows/:id/schedule/triggerworkflows:executeStarts one run now, for testing. The workflow must be active. Returns 202 with runId
curl -X PUT https://workflow.loopfour.ai/api/v1/workflows/$WORKFLOW_ID/schedule \
  -H "x-api-key: $LOOPFOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "cron": "0 6 * * 1-5", "timezone": "Europe/London" }'

On this page