catalog_product_alert
catalog_product_alert is a Magento 2 cron job declared by the ProductAlert module in the Default group. Its schedule is admin-config-driven via crontab/default/jobs/catalog_product_alert/schedule/cron_expr, dispatching Magento\ProductAlert\Model\Observer::process() on every tick.
Wiring
- Group
- Default (default)
- Module
- ProductAlert (magento/module-product-alert)
- Admin config path
- crontab/default/jobs/catalog_product_alert/schedule/cron_expr
- Handler
- Magento\ProductAlert\Model\Observer::process()
- Source file
- vendor/magento/module-product-alert/etc/crontab.xml
Run the catalog_product_alert cron job manually
Magento doesn't have a per-job CLI invocation — the smallest unit is a group. The command below runs every job in the default group whose schedule is due. The --bootstrap flag bypasses the lock-file check so the job runs even when the system cron is configured.
php bin/magento cron:run --group=default --bootstrap=standaloneProcessStarted=1Because this job uses an admin-config schedule, confirm the merchant-set value in System > Configuration before running — Magento will skip a job whose configured expression evaluates to a never-fire value.
Define your own job like this one
Want a job that fires on the same cadence in your own module? Drop these two files in — adjust the vendor/module namespace, the job name, and the body of process.
1. etc/crontab.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="vendor_module_catalog_product_alert_clone"
instance="Vendor\Module\Cron\CatalogProductAlert"
method="process">
<schedule>0 0 * * *</schedule>
<!-- Or use config_path to read the schedule from admin config: -->
<!-- <config_path>crontab/default/jobs/catalog_product_alert/schedule/cron_expr</config_path> -->
</job>
</group>
</config>2. Cron handler class
<?php
declare(strict_types=1);
namespace Vendor\Module\Cron;
use Psr\Log\LoggerInterface;
class CatalogProductAlert
{
public function __construct(
private readonly LoggerInterface $logger,
) {
}
public function process(): void
{
$this->logger->info('catalog_product_alert cron tick');
// Your scheduled work here. Keep this short — long jobs
// should enqueue work onto the message queue rather than
// running inline in the cron tick.
}
}Need a full module scaffolded around this cron job? Module Generator wires the crontab.xml, handler class, and module registration for you.
Cron handlers often dispatch Magento 2 events on each tick — observers bound to those events run as part of the scheduled work. The CLI Reference covers cron:run, cron:install, and the rest of the cron:* namespace.
Every Magento dev tool, in one hosted workspace.
Free to sign up. Nothing to install. Drafts, audits, and projects saved across every tool.