Plugin screenshot thumbnail 1/3
Plugin screenshot thumbnail 2/3
Plugin screenshot thumbnail 3/3

Schedule-it keeps your site's scheduled jobs in the repository. The host runs one cron entry every minute, and that entry works out which jobs are due and runs them:

* * * * *  php craft schedule-it/run

The schedule is config/schedule-it.php, so it is reviewed like any other code, it is the same on every environment that deploys the commit, and a new environment gets every job the moment that one entry exists — instead of jobs living only in a hosting dashboard, invisible to the repository and missing wherever someone forgot to re-add them.

Write jobs in words or as cron expressions

Job::command('gc/run')->dailyAt('03:00') and ->weekdays()->at('08:30') sit beside plain cron expressions, with a description, a timezone or a per-environment switch where you need one. craft schedule-it/list shows every job, the expression it became and when it is next due.

Failures are reported, never swallowed

  • Jobs run through craft, with an absolute path, because cron does not promise a working directory.
  • Every job's stdout and stderr go to the log file, and are replayed to the runner's output for hosts whose task runner throws its filesystem away.
  • schedule-it/run reports each job's exit code and exits non-zero if any failed.
  • A misspelt key, a bad expression or an unknown timezone is an error, never a job that silently does not run.
  • It refuses a lock that other servers cannot see, so a job never runs twice at once across a cluster.

Console-only: the web app has no route to the runner. Built on omnilight/yii2-scheduling, with the defaults that library needs under Craft already applied.

Installation Instructions

To install this plugin, copy the command above to your terminal.

Reviews

This plugin doesn't have any reviews.

Active Installs
0
Version
2.0.1
License
MIT
Compatibility
Craft 5
Last release
October 19, 2026