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 toAmerica/Detroit
. Cron jobs are configured underwww-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 shows0 total events were executed
. -
Sometimes contacts don’t even get added to the campaign automatically before the publish window, even though
segments:update
andcampaigns: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
-
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
-
Cleared cache after any config or time changes:
sudo -u www-data php bin/console cache:clear
-
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.”
-
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)
-
-
Cloned email to avoid duplicate suppression, republished, reattached in campaign, reset membership. Same result.
-
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.