Cron Manager

Cron Manager for Magento 2: list, run, enable, disable and reschedule cron jobs, schedule grid and timeline, health warnings and failure e-mails.

  • Version 1.3.1
$99

One-off payment, with 12 months of updates.

What is included

  • 12 months of new versions and fixes; the versions released in that time stay yours
  • Install with Composer, or download a zip from your account
  • Licence for one production domain, staging and development copies included
  • 30-day money-back guarantee, refund policy

No subscription or automatic renewal. Keep using the versions included in your update period. Update and licence details

Key features

  • Grid of every cron job with run statistics
  • Run Now in the background, recorded in the schedule
  • Enable, disable and reschedule jobs without code
See all features

Composer package softaware/module-cron-manager

  • Know cron is running

    A status panel and admin messages tell you when cron has stopped, a job keeps failing or a job is stuck.

  • Act without SSH

    Run a job now, switch a noisy job off or move it to a quieter time from the admin, with the change applied to Magento's own cron.

  • Safe to hand over

    Separate permissions for viewing, running, changing and cleaning up, and every manual run is recorded with who started it.

All features

What is included

Jobs

  • All jobs from crontab.xml and config-based schedules
  • Run Now for one job or up to 20 at once
  • Enable, disable and reschedule, singly or in bulk
  • Restore the default schedule at any time
  • Changes stored in the configuration, exportable with app:config:dump

Schedule and timeline

  • cron_schedule as a grid with keyword search and filters
  • Duration column and coloured statuses
  • Remove queued entries, mark stuck jobs, clean history
  • Timeline of 1, 3, 6, 12 or 24 hours

Health

  • Status panel on the Cron Jobs and Schedule pages
  • Admin message when cron has not run for N minutes
  • Admin message when a job fails N times in a row or runs too long
  • Stuck jobs marked as failed automatically
  • Failure e-mails with a minimum interval
  • Ignore list with * patterns

Admin and developers

  • Separate ACL permissions
  • CLI: list, run, status and set
  • Manual runs logged with trigger and admin user
  • Admin only, nothing added to the storefront

Feature tour

Everything your shoppers and your team see

01 / 05

Every job on one grid

Group, schedule, state, last run, last status, average duration and recent errors for every job, with filters, keyword search and row actions.

02 / 05

Change a schedule with a preview

Enable or disable a job, enter a cron expression or pick a preset, and see the next runs in the store timezone before you save.

03 / 05

See what ran and when

A chart per job for the last 1 to 24 hours, coloured by status, with details on hover and a filter for jobs with problems.

04 / 05

Tidy the queue in a few clicks

Remove pending or missed entries, mark stuck jobs as failed and delete old history, for all jobs or one job, each after a confirmation.

05 / 05

Warnings tuned to your store

Set when to warn, how long a job may run, which jobs to ignore and who receives failure e-mails. Every field shows its default.

Live demo

Try it before you install it

A full Magento store with the module installed, on Luma and on Hyvä. The admin demo signs you in with one click.

Compatibility

Requirements and compatibility

Compatibility of Cron Manager
Latest version 1.3.1 · 9 Oct 2026
composer.json requires php ~8.2.0||~8.3.0||~8.4.0||~8.5.0 magento/framework ~103.0.7 softaware/module-core ^1.0 magento/module-admin-notification * magento/module-backend * magento/module-config * magento/module-cron * magento/module-email * magento/module-store * magento/module-ui *

Installation

Up and running in minutes

After you buy, create a Composer key in your account. Then, in the root of your Magento project:

  1. 01Add the repository and your key (once per project)

    composer config repositories.softaware composer https://repo.softawarecommerce.com
    composer config --auth http-basic.repo.softawarecommerce.com PUBLIC_KEY PRIVATE_KEY
  2. 02Install the module

    composer require softaware/module-cron-manager
  3. 03Enable it

    bin/magento setup:upgrade
    bin/magento setup:di:compile
    bin/magento setup:static-content:deploy
    bin/magento cache:flush

    The last three are only needed in production mode.

Prefer a zip? Every version you are entitled to can be downloaded from My modules. More about Composer access

User guide

How to set up and use Cron Manager

For version 1.3.1. The same guide comes with the module, in docs/user-guide.md.

See and control Magento's cron from the admin: every job with its schedule and run statistics, the cron schedule as a grid and as a timeline, Run Now, enable, disable and reschedule jobs, clean up the queue, and get warned when cron stops or a job keeps failing. This guide covers installation, configuration and day-to-day use.

Cron Jobs grid with the status panel
Cron Jobs grid with the status panel

1. Requirements

MagentoOpen Source or Adobe Commerce 2.4.7 to 2.4.9
PHP8.2 to 8.5, with a PHP command-line binary for Run Now
DatabaseMySQL 8 or MariaDB 10.4 or later (window functions are used)
StorefrontNone: the module is admin only
Othersoftaware/module-core (installed automatically)

Magento's cron must be set up on the server as usual (bin/magento cron:install or your own crontab entry). Cron Manager works with Magento's cron; it does not replace it.

2. Installation

Install with Composer from repo.softawarecommerce.com. The access keys are in your account on softawarecommerce.com; see Composer access for details.

composer config repositories.softaware composer https://repo.softawarecommerce.com
composer config --auth http-basic.repo.softawarecommerce.com PUBLIC_KEY PRIVATE_KEY
composer require softaware/module-cron-manager
bin/magento setup:upgrade
bin/magento setup:di:compile            # production mode only
bin/magento setup:static-content:deploy # production mode only
bin/magento cache:flush

To update later: composer update softaware/module-cron-manager, then the same bin/magento commands.

After installation the admin menu has Softaware > Cron Manager with four items: Cron Jobs, Schedule, Timeline and Settings.

3. Settings

Stores > Configuration > Softaware > Cron Manager (also Softaware > Cron Manager > Settings). All settings are global (default scope). Every field states its default and has a "Use system value" checkbox to restore it.

Cron Manager settings
Cron Manager settings

General

SettingWhat it does
EnabledDefault Yes. When No, jobs you disabled or rescheduled in the Cron Manager run on their default schedule again, and the health checks and e-mails stop. The pages stay available and your changes are kept.
PHP Binary for Run NowLeave empty to detect it (recommended). Otherwise the absolute path of the PHP command-line binary, for example /usr/bin/php8.3. Only an absolute path to an executable whose file name starts with php is accepted.

Health Warnings

SettingWhat it does
Warn When Cron Has Not Run For (Minutes)Shows an admin warning when cron has been inactive this long. Default 15; 0 turns the warning off.
Warn When a Job Fails This Many Times in a RowDefault 3; 0 turns the warning off.
Ignore These JobsJob codes separated by commas or new lines; * matches any text, for example amazon_*. These jobs are left out of the warnings, the status panel and the failure e-mails, and are not marked as failed when they run long. Default empty.

Stuck Jobs

SettingWhat it does
Maximum Runtime (Minutes)A job still "running" after this long is treated as stuck (its process most likely died). Default 120.
Mark Stuck Jobs as Failed AutomaticallyDefault Yes. Checked every 5 minutes, so the job can run again; Magento itself only does this after a day.

Failure E-mails

SettingWhat it does
Send E-mails About Failed JobsDefault No. Checked every 5 minutes; also reports when cron itself stopped running.
Send ToOne or more e-mail addresses, separated by commas.
SenderThe store e-mail identity the e-mails are sent from. Default General Contact.
E-mail TemplateDefault "Cron Manager: Failed Cron Jobs". Create your own under Marketing > Email Templates.
At Most One E-mail Every (Minutes)Failures in between are collected into the next e-mail. Default 60.

4. Cron Jobs

Softaware > Cron Manager > Cron Jobs lists every job Magento knows: the jobs from crontab.xml files and jobs whose schedule comes from the configuration.

Columns: Job Code, Group, Schedule (the one in use), Default Schedule, State, Schedule Changed, Last Run, Last Status, Avg. Duration, Recent Errors, Pending, Module, Class::Method and Last Message. Some columns are hidden by default; show them with Columns. The grid has filters, keyword search, sorting and saved views. A job whose schedule was changed in the Cron Manager is marked "Changed" in the Schedule column; hover over it to see the default.

Row actions: Edit, Run Now, Enable or Disable, History (the job's entries in the Schedule grid).

Mass actions: Run Now (up to 20 jobs at a time), Enable, Disable, Restore Default Schedule.

Status panel

Above the Cron Jobs and Schedule grids, a status panel shows:

  • Cron: running, or how many minutes ago it was last active.
  • Last 24 Hours: successful, failed and missed runs (within the history Magento keeps).
  • Queue: pending and running entries, and how many are stuck.
  • Failing Jobs: jobs that failed the set number of times in a row.
  • Job Changes: how many jobs are disabled or rescheduled, and whether the changes are applied.

The figures are cached for 3 minutes so the admin stays fast.

5. Editing a job

Click Edit on a job. The page Cron Job: <code> shows the job information (group, module, class and method, state, default and current schedule, the next runs in the store timezone, and the last run with its status and average duration), and a form to change it.

Job page with schedule presets
Job page with schedule presets
  • State: Enabled or Disabled. A disabled job keeps its definition but is no longer queued, and its pending entries are removed. It can still be started with Run Now.
  • Schedule: a cron expression (minute, hour, day of month, month, day of week), checked with Magento's own cron parser. Presets: Every minute, Every 5 minutes, Every 15 minutes, Hourly, Every 6 hours, Daily at 03:00, Weekly, Sunday 03:00.
  • Use the default schedule: removes your change for this job.

The buttons above the page are Back, History, Run Now (asks for confirmation) and Save. Changes apply from the next cron run. They are stored in the configuration (softaware_cron_manager/overrides/jobs) and can be exported with bin/magento app:config:dump. If that value is set in app/etc/config.php or env.php, the Cron Manager shows the changes as read-only and refuses to change them.

6. Run Now

Run Now starts bin/magento softaware:cron:run <job_code> in the background, so the admin request does not wait for the job. The run:

  • takes the same lock as Magento's cron, so it does not start while the job is already running;
  • is written to the cron schedule with status, start and finish time and a message such as "Ran manually (admin, <user>) in 0.4 s";
  • is logged to var/log/softaware_cron_manager.log.

After a Run Now from the grid you are taken to the Schedule page, where the new entry appears.

7. Schedule

Softaware > Cron Manager > Schedule shows the cron_schedule table as a grid: keyword search (job code or message), filters by job, status, dates and message, a duration column, coloured statuses and a mass delete action.

Clean Up the Schedule

Open the Clean Up the Schedule panel above the grid. Each action asks for confirmation before it runs, and each can be limited to one job code (leave the field empty for all jobs).

Clean-up tools on the Schedule page
Clean-up tools on the Schedule page
ActionWhat it does
Remove Queued EntriesDeletes pending and/or missed entries. Cron queues upcoming runs of enabled jobs again on its next run.
Mark Stuck Jobs as FailedEntries still "running" after the given number of minutes are set to error, so the job can run again.
Clean HistoryDeletes finished entries (success, error, missed) older than the given number of hours; 0 deletes all matching entries.

8. Timeline

Softaware > Cron Manager > Timeline draws one row per job for a period of 1, 3, 6, 12 or 24 hours. Bars are coloured by status (success, error, running, missed, pending), a line marks the current time, and hovering over a bar shows its details. Filter by group, by job code or to "Only jobs with problems (error, missed or running)", and move with Earlier, Now and Later.

Cron timeline
Cron timeline

The timeline and the statistics only cover the history Magento keeps (Stores > Configuration > Advanced > System > Cron). Successful runs are kept for a short time by default.

9. Warnings and e-mails

Admin messages appear in Magento's system messages when:

  • cron has not run for the set number of minutes (or has never run);
  • a job failed the set number of times in a row;
  • a job has been running longer than the maximum runtime.

Failure e-mails (off by default) are sent by the cron job softaware_cron_manager_health, which runs every 5 minutes. It e-mails new failures at most once per interval, collecting failures in between, and reports gaps when cron itself did not run. Gaps are measured in the cron history of the last hour, so rescheduling the health job does not cause false alarms. The same job marks stuck jobs as failed when that setting is on.

10. Command line

bin/magento softaware:cron:list [--group=<group>] [--search=<text>] [--disabled] [--overridden] [--failed]
bin/magento softaware:cron:run <job_code> [--trigger=cli] [--user=<name>]
bin/magento softaware:cron:status
bin/magento softaware:cron:set <job_code> [<job_code> ...] [--enable|--disable] [--schedule="*/15 * * * *"]
bin/magento softaware:cron:set <job_code> [<job_code> ...] --default
  • list: all jobs with schedule, state, last run and average duration.
  • run: runs a job now in the foreground (also disabled jobs); the run is recorded in the cron schedule.
  • status: last activity, failing and stuck jobs, counts, disabled and rescheduled jobs.
  • set: makes the same changes as the Cron Jobs page, useful in deployment scripts. --default removes all changes of the jobs.

11. Permissions (ACL)

Under System > Permissions > User Roles > Role Resources > Softaware > Cron Manager:

ResourceAllows
View Cron JobsThe Cron Jobs grid
Run Jobs NowRun Now (single and mass action)
Enable, Disable and Reschedule JobsThe job page and its changes, Enable, Disable, Restore Default Schedule
View Schedule and TimelineThe Schedule and Timeline pages
Clean Up ScheduleThe clean-up tools and mass delete on the Schedule page
Cron Manager SettingsThe configuration section

12. Troubleshooting

ProblemSolution
"Cron has not run for N minutes"Check the server crontab (crontab -l for the web server user) and that bin/magento cron:run works. The message goes away once cron runs again.
Run Now does nothingThe PHP binary was not found, or the server does not allow starting processes. Set PHP Binary for Run Now to the absolute path of the PHP CLI binary and check var/log/softaware_cron_manager.log.
"Not started: the job is already running"The job holds Magento's cron lock. Wait for it to finish, or mark it as failed if it is stuck.
My schedule change has no effectCheck that Enabled is Yes, and whether the status panel says "Read-only": the changes are then set in app/etc/config.php or env.php and must be changed there.
The timeline or statistics look emptyThey only cover the history Magento keeps. Raise the history lifetimes under Stores > Configuration > Advanced > System > Cron if you need more.
Too many warnings from one extensionAdd its job codes, or a pattern such as vendor_*, to Ignore These Jobs.
The e-mail is only sent after cron is backExpected: e-mails are sent by cron. The admin warning covers the time cron is down.

13. Uninstall

bin/magento module:disable Softaware_CronManager
composer remove softaware/module-cron-manager
bin/magento setup:upgrade

Once the module is removed, all jobs run on their default schedule again. The settings and stored job changes stay in the core_config_data table (paths starting with softaware_cron_manager/); delete those rows if you want a clean database.

Changelog

Release notes

1.3.1

Latest
  • Product listing, FAQ and user guide (docs/).

1.3.0

  • Schedule grid: keyword search (job code or message).
  • Confirmation dialogs before "Run Now" on the job page and before each clean-up action on the Schedule page.
  • Cron Jobs grid: "Edit" is the first row action (it opens the job page; "Change schedule" is gone); a job whose schedule was changed here is marked "Changed" next to its expression (hover shows the default); "Schedule Changed" and "Module" are hidden by default and long job codes wrap, so the grid fits narrower screens; "Errors in History" is now "Recent Errors".
  • Job page ("Cron Job: <code>"): Back, History, Run Now and Save in the page actions bar; job details as a two-column table; state and schedule as a standard admin form with inline validation; the default expression is shown next to "Use the default schedule"; durations formatted (e.g. "1 min 5 s").
  • Status labels use Magento's grid severity styles (Success / Enabled green, Error / Disabled red, Missed yellow).
  • Status panel: plain-language values (Last 24 Hours: n successful, n failed, n missed), numbers in the admin locale, failing jobs shortened to "a, b and n more" with the full list on hover.
  • Schedule clean-up panel: labelled fields with notes instead of placeholders, title-case headings and buttons.
  • Timeline: labelled filters, "Period" in hours, an "Apply" button, Earlier / Now / Later navigation, the shown period in the admin locale; Cron Jobs and Schedule buttons in the page actions bar.
  • Settings: Health Warnings before Stuck Jobs, the General group always open, every field states its default and can be restored to it, required values validated, e-mail recipients validated.
  • Wording: "Run Now", title case for labels and buttons.

1.2.0

  • Requires softaware/module-core instead of softaware/module-base. The admin menu and ACL now sit under Softaware_Core::core ("Softaware"); roles that had access keep it (migrated by module-core). After updating all SoftAware modules, softaware/module-base can be removed.

1.1.0

  • "Ignore These Jobs" setting (job codes or patterns with *): left out of the health warnings, the status bar and the failure e-mails, and not marked as failed automatically when they run long.
  • CLI command softaware:cron:set to enable, disable, reschedule or reset jobs (e.g. from deployment scripts).
  • "PHP Binary for Run Now" only accepts an absolute path to an executable whose name starts with php, in the settings and again before a job is started, so the setting cannot be used to run another program.
  • The link in failure e-mails no longer contains an admin secret key from the cron process, which made it open the dashboard with "Invalid security or form key" when secret keys in URLs are on (the default).
  • Failure e-mails no longer report "Cron did not run" when the health job itself runs less often (e.g. after rescheduling it to every 15 minutes) or after the module was switched off and on: gaps are measured in the cron history.
  • When the job changes are set in app/etc/config.php or env.php (e.g. after app:config:dump), changes in the admin are refused with an explanation instead of being saved without effect; the status bar shows "read-only".
  • Enabling, disabling or resetting many jobs at once saves the configuration once instead of once per job.
  • The status bar no longer counts changes of jobs whose module has been removed.

1.0.0

  • First release: cron job grid with statistics, run now (background CLI), enable/disable and schedule overrides, schedule grid with clean-up tools, timeline, health status bar and admin system messages, rate-limited failure e-mails, CLI commands softaware:cron:list, softaware:cron:run, softaware:cron:status.

FAQ

Questions, answered

Something else on your mind? The developers who wrote the module answer before and after you buy.

Ask a question →

Already installed it? Open a support ticket

Does Cron Manager replace Magento's cron?

No. Magento's own cron (bin/magento cron:run from the server's crontab) still runs the jobs. Cron Manager shows what cron does, lets you change which jobs run and when, and warns you when something goes wrong. You still need a working system crontab.

Which jobs does it show?

Every job Magento knows: the jobs from the crontab.xml files of Magento and your extensions, and jobs whose schedule comes from the configuration. The grid shows the group, the schedule in use and the default one, the state, the last run and status, the average duration, recent errors, the module and the class and method.

How does "Run Now" work?

It starts bin/magento softaware:cron:run <job> in the background, so the admin page does not wait for the job. The run takes the same lock as Magento's cron, so it cannot overlap with a scheduled run of the same job. It is written to the cron schedule with its status, start and finish time, a message with who started it, and to var/log/softaware_cron_manager.log. You can run up to 20 jobs at once from the grid, and a disabled job can still be run manually.

What happens when I disable a job?

The job keeps its definition but gets no schedule, so Magento queues nothing new for it, and its pending entries are removed. Enable it again, or use "Restore Default Schedule", to go back to the original behaviour.

Where are my changes stored? Are they lost on deployment?

They are stored in the configuration (softaware_cron_manager/overrides/jobs), so they survive deployments and can be exported with bin/magento app:config:dump. If that value is set in app/etc/config.php or env.php, it wins over the database: the Cron Manager then shows the changes as read-only and refuses to change them, instead of saving changes that would have no effect.

Can I change a job's schedule without writing code?

Yes. Open the job, enter a cron expression or pick a preset (every minute, every 5 or 15 minutes, hourly, every 6 hours, daily at 03:00, weekly on Sunday at 03:00), and check the preview of the next runs. The expression is checked with Magento's own cron parser before it is saved.

How do I know that cron has stopped?

An admin system message appears when cron has not run for the number of minutes you set (default 15). Further messages appear when a job fails a set number of times in a row (default 3) or runs longer than the maximum runtime (default 120 minutes). The status panel on the Cron Jobs and Schedule pages shows the same information at a glance.

Can it e-mail me about failures?

Yes, but it is off by default. Switch on "Send E-mails About Failed Jobs" and enter one or more recipients. A check runs every 5 minutes and sends at most one e-mail per interval you choose (default 60 minutes); failures in between are collected into the next e-mail. It also reports when cron itself did not run, once cron runs again.

A third-party job fails all the time and fills my warnings. What can I do?

Add its job code to "Ignore These Jobs". Patterns with * work too, for example amazon_*. Ignored jobs are left out of the warnings, the status panel and the e-mails, and are not marked as failed when they run long.

Can I give a colleague read-only access?

Yes. The permissions are separate: View Cron Jobs, Run Jobs Now, Enable, Disable and Reschedule Jobs, View Schedule and Timeline, Clean Up Schedule, and Cron Manager Settings. Set them under System > Permissions > User Roles. A role with only View Cron Jobs and View Schedule and Timeline can look at everything but change nothing.

Does it change anything on the storefront?

No. It is an admin-only module and adds nothing to storefront pages.

What happens when I switch the module off?

Your job changes are no longer applied, so all jobs use their default schedule, and the health checks and e-mails stop. The Cron Manager pages stay available, and your changes come back when you switch it on again.

Which Magento and PHP versions are supported?

Magento Open Source and Adobe Commerce 2.4.7 to 2.4.9, PHP 8.2 to 8.5, with MySQL 8 or MariaDB 10.4 or later.

Support

Help from the developers who wrote it

From the blog

Guides and articles