Published Campaign Not Enrolling Contacts or Sending Emails Despite Cron Running (Mautic 4.x)

Your software

  • My Mautic version is: 4.x.x (installed on Apache2, Ubuntu EC2)

  • My PHP version is: 8.0.30 (CLI)

  • My Database type and version is: MySQL 8.x

  • Other details: PHP CLI timezone set to America/Detroit, Mautic System Default Timezone and User Profile Timezone both set to America/Detroit. Cron jobs are configured under www-data.

Your problem
I’m trying to schedule a campaign to send at a specific time. Cron jobs are firing as expected, the campaign is published, and contacts are in the source segment — but no emails are being sent when the campaign publish time arrives.

Here’s what happens:

  • Segment is non-empty (confirmed via UI and SQL).

  • Campaign is published with Publish At set for >10 minutes in the future (so cron has time to run).

  • At the scheduled time, I see in the logs that cron runs campaigns:trigger, but it always shows 0 total events were executed.

  • Sometimes contacts don’t even get added to the campaign automatically before the publish window, even though segments:update and campaigns:update cron jobs are running every 10 minutes.

  • If I manually rebuild (--reset), contacts still don’t get processed.

If I use a Marketing Email that was already sent to those contacts, I understand Mautic will skip it. I cloned the email (new Email ID), republished, cleared cache, and rebuilt the campaign — still no events fire.

These errors are showing in the log
/var/log/mautic_camp_trigger.log:

[2025-09-23 01:43:02] Triggering events for campaign 32
[2025-09-23 01:43:02] Triggering events for newly added contacts
[2025-09-23 01:43:02] 0 total events(s) to be processed in batches of 500 contacts
[2025-09-23 01:43:02] 0 total events were executed
[2025-09-23 01:43:02] 0 total events were scheduled

No fatal errors or exceptions in var/logs/prod.log.

Steps I have tried to fix the problem

  1. Confirmed cron jobs are running:

    */10 * * * *  cd /var/www/html && php bin/console mautic:segments:update --batch-limit=1000 --no-interaction
    */10 * * * *  cd /var/www/html && php bin/console mautic:campaigns:update --batch-limit=2000 --no-interaction
    *    * * * *  cd /var/www/html && /usr/bin/flock -n /tmp/mautic_trigger.lock php bin/console mautic:campaigns:trigger --batch-limit=500 --no-interaction
    
    
  2. Cleared cache after any config or time changes:

    sudo -u www-data php bin/console cache:clear
    
    
  3. Manually rebuilt segments and campaigns with verbose + reset:

    sudo -u www-data php bin/console mautic:segments:rebuild --segment-id=<SEG_ID> -vvv
    sudo -u www-data php bin/console mautic:campaigns:rebuild --campaign-id=<CAMP_ID> --reset -vvv
    sudo -u www-data php bin/console mautic:campaigns:trigger --campaign-id=<CAMP_ID> -vvv
    
    

    Still shows “0 events executed.”

  4. Verified:

    • Campaign is Published = Yes

    • Publish At ≤ current local time

    • Campaign is linked to the correct segment (checked campaign_leadlist_xref)

    • Segment has contacts (lead_lists_leads > 0)

  5. Cloned email to avoid duplicate suppression, republished, reattached in campaign, reset membership. Same result.

  6. Mail transport test email works from Configuration page.

    My questions

  • Is there any scenario where campaigns:rebuild --reset would not re-enroll contacts even though they are in the source segment?

  • Could this be a timezone save/convert issue where the campaign is not actually active yet (even though UI shows it as published)?

  • Are there known bugs in Mautic 4.x where Publish At + close scheduling window causes membership to miss and no events fire?

  • Besides duplicate email prevention and frequency rules, what else could cause Mautic to show 0 total events at trigger time?

Would appreciate guidance from anyone who has debugged campaign membership assignment and event execution timing issues like this — especially around campaigns that are published close to their send window.