MageSmith
Sales · group Default · Magento 2.4.9

sales_send_order_invoice_emails

sales_send_order_invoice_emails is a Magento 2 cron job declared by the Sales module in the Default group. It runs every minute (* * * * *) and dispatches SalesInvoiceSendEmailsCron::execute() on every tick.

Wiring

Group
Default (default)
Module
Sales (magento/module-sales)
Schedule
* * * * *
Frequency
every minute
Handler
SalesInvoiceSendEmailsCron::execute()
Source file
vendor/magento/module-sales/etc/crontab.xml

Run the sales_send_order_invoice_emails 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

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

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_sales_send_order_invoice_emails_clone"
             instance="Vendor\Module\Cron\SalesSendOrderInvoiceEmails"
             method="execute">
            <schedule>* * * * *</schedule>
        </job>
    </group>
</config>

2. Cron handler class

<?php
declare(strict_types=1);

namespace Vendor\Module\Cron;

use Psr\Log\LoggerInterface;

class SalesSendOrderInvoiceEmails
{
    public function __construct(
        private readonly LoggerInterface $logger,
    ) {
    }

    public function execute(): void
    {
        $this->logger->info('sales_send_order_invoice_emails 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.