Documentation sections

Automate · Triggers

Run workflows on a schedule

A schedule starts a deployed workflow automatically using a five-field cron expression. Schedules belong to one workflow in one project environment, and each stores its own timezone, input, and enabled state.

Last reviewed July 14, 2026

In the app Projects → project → Schedules

Problems this solves

Start with the recurring problem, then use this feature when its boundary matches the outcome you need.

Problem

Eliminate a recurring manual check

Someone repeatedly exports a report, reconciles systems, or performs cleanup at the same time every day or month.

How this helps

Attach a timezone-aware cron Schedule to the deployed workflow and manage its enabled state without editing a server cron table.

See the scheduled-workflow example →

Problem

Keep two calendars in sync

A person works from separate calendars, so a booking in one can leave the other looking free and invite a double-booking.

How this helps

The calendar-sync example runs every 15 minutes to copy, update, and remove tracked event copies in both directions.

Open the Google Calendar Sync example →

Declare a schedule in YAML

workflows:
  - id: monthly-report
    file: src/monthly-report.ts
    trigger: schedule
    schedule:
      cron: "0 8 1 * *"
      timezone: "America/Chicago"
      input:
        mode: monthly
      enabled: true

Cron fields are minute, hour, day of month, month, and day of week. Always name an IANA timezone when local time matters; relying on UTC can move a business-hour job to the wrong local hour.

Add a schedule in the app

  1. Open the target project environment and select Schedules.
  2. Under Add schedule, choose the workflow.
  3. Select a preset or enter a five-field cron expression.
  4. Choose the timezone and create the schedule.
  5. Confirm the row shows enabled and a plausible next-run time.

SolidActions validates schedule cadence against your plan. If a cron fires more frequently than allowed, slow it down or use the upgrade path shown by the app.

Pause, remove, or return to YAML

  • Toggle a schedule off to pause future fires without removing its configuration.
  • Delete an app-created schedule when it should no longer exist.
  • Remove a YAML-backed schedule from YAML and redeploy; deleting only its runtime row is temporary.
  • When an app edit overrides a YAML schedule, use the reset action to restore YAML cron, timezone, and enabled state.

Existing schedule rows continue to reflect their stored configuration. A redeploy synchronizes YAML defaults, while an intentional app override remains active until reset.

Manage schedules from the CLI

solidactions schedule set my-project '0 9 * * 1-5' \
  --workflow daily-summary \
  --timezone America/Chicago \
  --input '{"audience":"ops"}'

solidactions schedule list my-project
solidactions schedule delete my-project SCHEDULE_ID

A workflow has one schedule. If it already has one, schedule set updates that schedule and records an intentional runtime override; the override remains across deploys until it is reset in the app.

Multiple environments need extra care.

The current schedule CLI commands do not expose an environment flag. For a project family with production, staging, and dev instances, avoid CLI schedule changes until its targeting is clarified. Instead, select the intended environment in the app and manage that environment's schedules on its Schedules tab.

Verify a scheduled run

  1. Check that both the project and workflow are enabled.
  2. Confirm the schedule row is enabled and its next-run time matches the chosen timezone.
  3. After that time, open Runs and filter to the workflow.
  4. Confirm the trigger source is schedule/cron and inspect its input and output.

The features examplesinclude a YAML-scheduled workflow.

Next: monitor the result in Runs.