MageSmith
ProductAlert · group Default · Magento 2.4.9

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=1

Because 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.