Why Mautic cron jobs and the email queue decide whether large sends arrive on time
Mautic depends on cron jobs to update segments, update campaigns and trigger campaign steps. It also relies on a broadcasts command to send segment emails and a messenger consumer to process email once it is queued. If any one of these stops or falls behind, contacts do not move through segments or campaigns on time, and broadcasts either stall or arrive late. For a team that needs marketing to run without manual intervention, these scheduled processes are the operational core of the platform, not an afterthought to the install. This looks simple on paper because each job is a single command. In practice, the difficulty is that nothing announces failure. A segment rebuild that runs longer than its interval can overlap with the next run, and a stalled consumer can leave messages sitting in the queue while the admin screens look normal. Nobody gets an alert unless the team has built one. The work also runs on a plain server that the team operates, so there is no managed platform watching process health, restarting workers or handling time zone and daemon details for them. A large send exposes every weak point at once. A broadcast to a big segment depends on the segment being current, the cron schedule not colliding with other heavy jobs, the batch limits being sized for the server, and the queue consumer keeping pace with the mail transport. A problem in any one of these shows up as a send that is late, incomplete or duplicated. Teams should confirm, in their own environment, how long a full segment update takes at their contact volume, and whether that duration leaves room before the next scheduled run. The Mautic project states that it should not be installed on shared hosting and recommends a VPS or dedicated server instead. This matters for scheduling. Cron entries, queue workers and their supervision need to live on infrastructure the team controls, with shell access, the ability to run long processes and logs they can read. Before going live, the team should decide who owns each scheduled job, where logs are kept, how a stopped worker is detected and restarted, and who is paged when a broadcast misses its window. The practical first step is an inventory. List every cron job and worker the install needs, record the schedule and the expected runtime of each, and test a large send in a non-production environment while watching the queue depth. The results determine the stagger plan, batch limits and monitoring that the rest of the setup depends on. Ask the implementation partner to show this inventory and test evidence as part of the written scope.
Which Mautic cron jobs, broadcasts command and messenger consumer do what
Mautic relies on several scheduled jobs and one long-running worker to move contacts through segments, campaigns and email sends. Each part writes to different records and fails in a different way, so a stopped process often shows up as a symptom far from its cause. Use the cards below to map each component to its effect before you set schedules or batch limits.
Segment update job
This job recalculates which contacts belong to each segment based on the segment filters. It writes segment membership, which later steps read, including campaign entry rules and segment emails. When it stops, contacts stop appearing in newly matching segments, and segment counts drift from what the filters should return. After each schedule change, check the log for a recent successful run. Confirm the exact job name and options in the Mautic cron jobs documentation for your installed release.
Campaign update job
This job adds contacts who now meet a campaign's entry source to that campaign and keeps campaign membership current. It writes campaign membership records, so a contact must exist in the campaign before any of its steps can run. When it stops, new contacts never enter the campaign, and the campaign looks idle even though its source segment is full. Confirm the job name and any batch option against the documentation for your release before you change the schedule.
Campaign trigger job
This job evaluates campaign steps for contacts whose wait periods have ended and runs the due actions, such as sending an email, changing a field or adding a tag. It writes contact state and event logs for each step it processes. When it stops, contacts sit at a delay step past their due time, and no emails or actions fire. Stagger its schedule away from the segment and campaign jobs so the three do not compete for the database at the same time.
Broadcasts command for segment emails
This command sends one-off emails to the contacts in a selected segment and records each send against the contact and the email. It hands messages to the email queue, so its output depends on the messenger consumer that follows. When it stops, a segment email stays pending or partly sent, and recipients receive nothing. Because the command runs on a schedule, a missed run can look like a slow send, so compare the scheduled time with the send log before you change the email or the segment.
Messenger consumer for queued email
This is a long-running worker that picks up queued email messages and delivers them through the configured transport. It writes sent, failed and retry status to each message. When it stops, the queue grows, campaign and broadcast emails arrive late, and the web interface shows no error. Run the worker under a process supervisor, restart it after each deployment, and confirm the transport settings with your email sending provider.
Choosing how to schedule Mautic cron jobs and the queue
This table compares the main ways to run Mautic's cron jobs and messenger consumer, from system scheduler on the web host to a separate worker host with a supervised consumer. Read each row against your own hosting, staffing and monitoring, because the Mautic docs describe the jobs and the consumer but leave the choice of host layout to your team.
| Option | When it fits | Operational cost | What to confirm in your environment |
|---|---|---|---|
| System scheduler on the application host | Small contact base, single server, one team that already runs cron on its web host | One place to look, but jobs compete with web requests for CPU and memory; overlap risk if a run takes longer than its interval | Whether your scheduler prevents overlapping runs and how long segment and campaign jobs take on your data |
| System scheduler on a separate worker host | Larger sends or heavier campaign volume where you want web response times protected from batch work | Two hosts to patch, back up and monitor; shared database and file storage must be reachable from both | Network path to the database and shared storage, and who owns the worker host's patching and alerts |
| Messenger consumer under a process supervisor | Queued email is in use and you need the consumer to restart after crashes or reboots | Supervisor config to maintain; restart loops can hide a failing dependency unless alerts are set | Which supervisor your platform team uses, restart policy, and where consumer logs and exit codes are collected |
| Messenger consumer started manually or ad hoc | Test environments, short one-off sends, or a proof of concept before production | No automatic recovery; queued email stops silently when the session ends or the host reboots | Whether anyone accepts responsibility for restarts during send windows and out-of-hours campaigns |
| Process queued email on the same host as the web tier | Low volume, single server, and a team that accepts shared resource limits | Simplest layout, but a long send can slow the admin UI and tracking endpoints | Peak queue size during your largest planned send and whether web latency remains acceptable |
| Process queued email on a dedicated worker host | Frequent large sends, or a requirement to keep tracking and form endpoints responsive | Extra host and access rules to manage; a single worker is still a single point of failure | Whether you can run more than one consumer safely and how your mail provider's rate limits affect concurrency |
| Cron jobs and consumer under one scheduler with no alerting | Rarely appropriate for production marketing data | Failures show up as stale segments or unsent emails, often noticed by campaign owners first | Whether job exit status, last-run time and queue depth are monitored and who receives the alert |
How to set up Mautic cron jobs and the messenger consumer step by step
This sequence takes a Mautic installation from a working web application to one where segment updates, campaigns, broadcasts and queued email run unattended. The platform team completes the steps in order, because each one depends on the one before it. Each step ends with a check, so the team confirms the setup works before any large send.
Confirm the Mautic version and PHP runtime
The platform team checks the installed Mautic release and the PHP runtime against the requirements page for that exact version before touching any scheduled job. Mautic 7.0 requires PHP 8.2, 8.3, 8.4 or 8.5, and MySQL 5.7 or higher with InnoDB, or MariaDB 10.2 or higher. Mautic should run on a VPS or dedicated server, and it should not be installed on shared hosting. Record the PHP command-line version as well as the web version, because cron and the consumer run under the command-line binary. Done when both versions appear on the supported combinations list for the installed release.
Create a dedicated system user for Mautic
Create a non-login system account that owns the Mautic application files, the cache directory and the log directory. Use this account for every scheduled job and for the queue worker. Give the web server user read access where it needs it, and limit write access to the directories Mautic must write to. Running jobs as root or as the web user spreads permissions further than necessary and makes log ownership messy. Check it by running the Mautic console version command as this account. Done when the command reads the configuration and connects to the database without permission errors.
Add segment, campaign and trigger cron jobs
Add cron entries for segment updates, campaign updates and campaign triggers, using the commands listed in the cron jobs documentation for the installed version. Stagger the start times so the three jobs do not all begin on the same minute, as the documentation directs. Each entry runs as the dedicated user and writes its output to a log file. Run each command once by hand first. Done when the log shows a completed run with no fatal errors and the crontab listing shows the scheduled entries for all three jobs.
Add the broadcasts command
Add the broadcasts command so segment emails are sent on schedule. Schedule it according to the documentation for the installed version, and keep it in its own cron entry so a long send does not hold up the segment and campaign jobs. Create a test broadcast to a small internal segment, then run the command manually. Done when the broadcast status changes to sent in the administration interface and the log records how many messages the run processed.
Configure the messenger consumer under supervisor
Run the messenger consumer as a long-lived process under a process supervisor with automatic restart on failure, so queued emails go out without waiting for the next cron run. Set the process to run as the dedicated user, point it at the Mautic installation, and write its output to a log. Confirm the exact consumer command and transport settings in the documentation for the installed version. Check that the supervisor reports the process as running. Then stop the process on purpose and confirm the supervisor restarts it and that queued messages are picked up again.
Set batch limits and confirm them in documentation
Set the batch limits in the Mautic configuration for segment, campaign and email processing. Start from the values the documentation describes and change them only after testing. Keep batch sizes modest on a shared database server, because every job competes for the same tables. Before editing any value, confirm its name and effect in the documentation for the installed release, since settings can differ between versions. Done when one job rerun after the change logs the batch size it applied, with no timeouts or memory errors.
Run a small test send
Send a test through the full path: segment update, campaign trigger or broadcast, queue, and delivery. Use a small set of internal test contacts, including a mailbox your team controls and one address on each email domain you plan to use at scale. Watch the queue depth until it returns to zero. Done when every test contact receives the expected email with correct personalization fields, and the send appears in each contact's timeline. Schedule larger sends only after this test passes.
How a broadcast moves from the scheduler to the recipient's inbox
The most useful way to troubleshoot a Mautic broadcast is to follow it stage by stage, because each stage fails differently and produces different symptoms. The sequence starts with the scheduler, which runs the segment update job. That job refreshes segment membership, so the contact list reflects the latest field values, tags and behavior. Next, the broadcasts command reads the segment attached to a segment email and selects the contacts who qualify at that moment. Each stage depends on the one before it. If membership is stale, the broadcast addresses the wrong people, and no later stage will notice. When queueing is enabled, the broadcasts command places messages on the queue instead of sending them directly. The messenger consumer then takes messages off the queue in batches and hands each one to the mail transport you have configured. Mautic does not decide how the message is delivered after that point; the configured sending service does. The team must confirm the mail transport configuration for its own provider, including credentials, sending limits, bounce handling and any provider-side throttling. Those settings sit outside the cron schedule, and a correct schedule cannot compensate for a transport that rejects or delays messages. Stalls and duplicates appear at predictable points. The segment update can fall behind if it runs against a large dataset, so the broadcast selects from outdated membership. The broadcasts command can select a large audience and fill the queue faster than the consumer drains it. The consumer can stop if its process is not supervised, leaving messages waiting without any error in the mail log. Duplicate sends most often come from overlapping runs: if a broadcasts job is still working when the next scheduled run starts, both can select the same contacts before either has finished. Staggering the jobs and confirming that each run completes before the next begins reduces this risk. A backlog in the queue and a stopped scheduler look similar from the marketing side, since the email simply does not arrive, but they need different responses. A backlog means the scheduler ran, messages were queued, and the consumer is either slow or not processing them. You check queue depth and consumer status. A stopped scheduler means no new messages are being created at all, so the queue may be empty while segments and campaigns quietly stop updating. You check the cron log for the last successful run of each job. Confirm with your own team which of these two conditions your monitoring would catch first, and who receives the alert.
What drives the effort of Mautic cron jobs and queue setup
This table lists the factors that change how much work it takes to stagger Mautic cron jobs and run the messenger queue reliably, with the direction each factor moves effort and a practical way to keep it manageable. Read each row as a question to answer about your own environment before estimating or requesting a quote. The main takeaway is that contact volume, campaign count and monitoring maturity usually matter more than the initial configuration itself.
| Driver | Why it changes effort | How to keep it down |
|---|---|---|
| Contact volume | Larger contact lists make segment rebuilds, campaign updates and broadcast batches run longer, so overlapping jobs and timeouts become more likely. | Test segment and campaign jobs on a copy of production data, then set batch limits and stagger schedules based on observed run times. |
| Number of segments | Each segment is rebuilt by a recurring cron job, so more segments, especially those with complex filters, increase total processing time per cycle. | Audit segments before go-live, remove unused ones and combine overlapping filters where the business logic allows. |
| Number of active campaigns and triggers | Campaign updates and triggers run on their own schedules, and every active campaign adds recurring work and possible contention with other jobs. | Keep only live campaigns active and document which cron job drives each one so troubleshooting stays predictable. |
| Send frequency and broadcast size | Frequent or large broadcasts increase queued messages and mean the messenger consumer must keep pace with the send window. | Schedule large broadcasts in quieter windows and start with a small segment to confirm throughput before a full send. |
| Number of environments | Staging, testing and production each need their own cron schedules, queue workers and configuration, and drift between them creates extra verification work. | Keep environment configuration in version control and confirm the schedule and worker settings are identical except for credentials and hostnames. |
| Queue on the same host as the web tier | Consumers competing with web requests for CPU and memory can slow tracking and form endpoints, and a single host failure stops both. | Confirm sizing with the hosting team, and where possible run workers separately so queue load does not affect visitor-facing pages. |
| Monitoring and alerting maturity | Without alerts on failed or stalled jobs and queue depth, problems surface as missing emails or late campaigns, which takes longer to diagnose. | Monitor job completion, queue depth and failed messages, and set alerts that reach someone who can act on them. |
| Team Linux and PHP operations skills | Setting process supervision, scheduled tasks, log rotation and PHP memory or timeout limits requires operations experience, and gaps lengthen both setup and incident response. | Confirm who owns server access and restarts before go-live, and document the runbook for consumer restarts and failed job recovery. |
How Mautic cron and queue setup changes by hosting model
On a single server, the web application, the scheduled Mautic commands and the messenger consumer all run on one machine. This is the simplest layout to build and the easiest to troubleshoot, but it also makes overlapping work the main risk. Cron jobs for segments, campaigns and triggers can start while a previous run is still processing, and a long broadcast or queue run can compete with web requests for CPU, memory and database connections.
Check the following on this layout:
- Stagger the cron entries. Give each Mautic command its own time offset so segment updates, campaign updates and campaign triggers do not all start at the same minute, as the Mautic cron jobs documentation recommends.
- Confirm overlap protection. Ask whether each command can run twice at once and how the team will detect a stuck process. Lock handling and process timeouts should be defined before launch.
- Keep the consumer supervised. The messenger consumer should run as a managed service that restarts on failure, not as a one-off shell session that ends when someone logs out.
- Set batch limits deliberately. Lower batch sizes reduce memory use and lock time per run, at the cost of longer total processing.
- Size for peaks. Large sends and campaign triggers during business hours compete with the web tier on the same resources.
Before go-live, confirm in the installation's own configuration that the cron entries and the consumer use the same environment and that a test send completes without a second run starting on top of the first.
Splitting the web tier from a cron host and a queue worker is a common way to keep campaign processing from slowing down the public tracking and form endpoints. The trade-off is configuration drift. Every host that runs Mautic commands must read the same configuration, use the same application files and point at the same database. If one worker has an older configuration file or a different database host, it can process queued email against the wrong data or silently skip work.
What to set up and verify:
- Share configuration and files. Keep the local configuration, the application code version and any custom plugins identical on the web, cron and worker hosts. Automate the deployment so the hosts cannot diverge.
- Confirm the same database. Run a simple read and a test write from each host, then compare the results. A host that sees a different database will process a different contact set.
- Share the storage that Mautic needs. Files that every host must read or write, such as uploaded assets and cached data, need shared storage or a deliberate design for where each file lives. Confirm this against the Mautic installation documentation for your release.
- Check the consumer's connection to the queue transport. The worker must read from the same queue the web tier writes to. Send a test email and confirm it leaves the queue.
- Monitor each host separately. A failed cron host should raise an alert even when the web tier looks healthy.
Ask your implementation partner or internal team to document which host runs each command, with its schedule and owner, so the layout is auditable.
In a container deployment, the Mautic web application, the scheduled commands and the messenger consumer are usually packaged as separate workloads. Scheduling and supervision then depend on the container platform, not only on the operating system's cron. The general pattern is one workload for the web tier, one or more scheduled jobs for the Mautic commands, and a long-running consumer process that the platform restarts when it stops. The exact mechanics depend on the orchestration approach and on how the Mautic image and its commands are built.
Points to design and confirm:
- Choose the scheduling mechanism. Decide whether scheduled commands run as platform-native scheduled jobs or as a dedicated container with its own scheduler. Either way, the overlap rules from the single-server tab still apply.
- Supervise the consumer. The messenger consumer should be a long-running workload with a restart policy and health reporting, so a crashed consumer does not leave queued email unsent.
- Share configuration through the platform. Environment variables, secrets and mounted configuration must reach every workload that runs Mautic commands, with the same values.
- Plan persistent storage. Confirm which paths must persist across container restarts and which workloads must share them.
- Limit scaling of scheduled work. Running more replicas of a scheduled command can multiply overlap and duplicate processing. Confirm the expected replica count for each workload.
Confirm the exact container orchestration approach, including how the Mautic image is built and how commands are scheduled, against the Mautic installation documentation for your release before you finalize the design.
Securing the cron user, queue transport and mail credentials
Mautic cron jobs and the messenger consumer run outside the web request, with credentials for the database and the mail transport. The four controls below decide who can run those processes, what they can reach, where secrets are kept and what ends up in logs.
Dedicated system account and file ownership
Run the cron jobs and the messenger consumer under a dedicated system account rather than the web server user or root. Confirm that the Mautic code directory is owned by a deployment user and readable by the web and job processes, while only the paths Mautic must write to, such as cache, logs and media, are writable. Check that the job account cannot modify application code or web-served directories it does not need, because a compromised job would otherwise be able to change what visitors receive.
Least-privilege database access
Create a separate database user for the cron and queue processes and grant it only the privileges Mautic needs on its own schema. Confirm with the Mautic version you run which statements the installer and migrations require, and keep schema-changing privileges with the deployment process rather than the long-running jobs. Review the grants after each upgrade, since a new release can add tables or require different privileges, and record who holds the administrative account.
Secrets in environment or protected configuration
Keep database passwords, the mail transport credentials and any API keys out of shared scripts, crontab lines and version control. Load them from environment variables or a protected configuration file readable only by the job account, and make sure the crontab entries call the console commands without embedding values. Confirm that rotating a mail password requires changing one protected location and restarting the consumer, not editing several scripts that different teams keep.
Log handling without personal data or tokens
Cron and messenger output can record recipient addresses, contact identifiers, failed payloads and transport errors, so logs are a personal data store in their own right. Decide what the job logs at each level, route logs to a location with restricted read access and a defined retention period, and confirm that error output does not print full DSNs, passwords or tokens. Review a sample of failed-send entries before launch, because the first failures often expose more detail than the happy path.
How to test that Mautic cron jobs run once and fail safely
The point of this test plan is to prove two things before a large send goes out: each scheduled Mautic job runs on its intended cadence without overlapping itself, and a broken worker produces a visible backlog rather than duplicate or lost emails. Run these checks in a staging copy that mirrors the production cron schedule, the production messenger setup and a non-production mail transport, so a test cannot reach real contacts. Start with the scheduled jobs. Confirm that the segment update, campaign update and campaign trigger commands each appear in the scheduler on the staggered times you planned, and that each one writes a start and finish entry to its log. Then force an overlap: start a long-running job by hand while the same command is still active, and check that the second invocation exits without processing contacts. Mautic's cron documentation expects jobs to be staggered, so a second run starting while the first is active is the most common cause of double processing. Record which lock or process check Mautic uses in your version, and confirm it with the vendor or the release notes rather than assuming it. Next, test the broadcast path with a small test segment of internal addresses. Include a few contacts with a known name and an address you can read, and confirm that the broadcasts command sends exactly one message to each recipient. Compare the sent count in the dashboard, the messenger queue and the mail provider's log. Any recipient receiving two messages means the batch limit, the cron overlap or the queue retry settings need correction before the real send. Then test the queue. Stop the messenger consumer, trigger a broadcast and watch the queue depth grow. Messages should accumulate without being dropped or marked as sent. Restart the consumer and confirm the backlog drains to zero and that the recipient count still matches the test segment. Finally, simulate a failed job, for example by pointing the mail transport at an unreachable host for one run, and check that the failure appears in the Mautic logs and in your monitoring, that the backlog stays visible, and that no message is sent twice after the transport is restored. A safe failure looks like this: no recipient receives a duplicate, the backlog is visible in queue monitoring, and the log names the job and the error. Recovery should follow a written runbook: fix the cause, confirm the transport, restart the consumer, let the backlog drain, then reconcile sent counts against the segment. Ask any implementation partner to deliver this runbook and the test evidence as part of the scope, and confirm the exact commands and monitoring tools with the Mautic version you run.
How much work are Mautic cron jobs and queue setup, and what does the team need to do?
What drives the cost of setting up Mautic cron jobs and the email queue?
The cost is driven mainly by contact volume, the number of environments and the skills available on your team. Contact volume determines how many segment rebuilds, campaign updates and broadcast sends run, and how carefully the schedule has to be staggered so jobs do not overlap. Environments matter because production, staging and any test instance each need their own cron entries, consumer processes and verification. Team skills matter because someone must own Linux service management, PHP process supervision and mail delivery. Setup is usually a one-time cost, while monitoring, tuning and changes after a Mautic upgrade recur. Ask any provider to price these items separately in the written scope.
How long does Mautic cron and queue setup take?
Duration depends on scope, so it should come from a written plan rather than a general figure. The plan should list the cron jobs to configure, the staggering schedule, batch limits, the messenger consumer and how it will be supervised, the staging test cycle, and the handover of monitoring. Each of these items has a different effort profile, and the environment you run Mautic in changes how much access and coordination is needed. Ask for the plan to show the sequence of work and the points where your team must review or approve, so you can compare it against your internal capacity.
What does our team need to provide before cron and queue work starts?
Plan on providing four things. First, server access with the rights to edit cron schedules, install or configure a process supervisor, and read Mautic and PHP logs. Second, mail provider credentials for the transactional or marketing sending service, with the sending limits and bounce handling settings documented. Third, a staging environment that mirrors production closely enough to test large sends safely. Fourth, a named owner for campaigns who can approve segment logic, email content and send timing, and who can answer questions during testing. Without these, testing is slow and production sends carry avoidable risk.
Can one internal engineer set up Mautic cron jobs and the queue using only the Mautic documentation?
A capable engineer can work from the Mautic cron job documentation, which describes the segment, campaign and broadcast commands, the need to stagger them, and the messenger consumer used when emails are queued. The harder part is the surrounding operations work: supervising the consumer so it restarts after failures, choosing batch limits that match your mail provider and server capacity, catching overlapping jobs, and proving that large sends arrive once. Whether one engineer can carry this alone depends on their familiarity with PHP services and Linux operations, and on whether they have time to test in staging. Confirm these points before deciding.
What should a fixed-scope quote for Mautic cron and queue setup list?
A fixed-scope quote should be written and specific. It should list the environments covered, the cron jobs and schedule to be configured, the consumer and supervision approach, the batch limit and staggering method, the staging test plan, the production cutover steps and the handover documentation. It should name the client inputs that the work depends on, such as server access and mail provider credentials, and state what happens if those are late. It should separate one-time setup from any recurring monitoring or support, and state which deliverables your team owns after handover. Ask for acceptance criteria written in plain terms, such as the sends that must be verified.
What goes wrong most often with Mautic cron jobs and the email queue?
The most common problems are overlapping jobs that compete for the database, jobs that never run because the cron user or path is wrong, and a messenger consumer that stops after an error and leaves queued email unsent. Large broadcasts can also exceed mail provider limits if batch sizes are not set against those limits. Problems often appear only under real volume, which is why staging tests should include a send that resembles production. Ask the implementation team how they will detect stalled jobs and failed sends, and who receives the alert.
Who owns cron and queue operations after launch?
Ownership should be agreed before go-live. Your infrastructure team usually owns the servers, the process supervisor and the cron schedule, while your marketing operations team owns the campaigns that depend on them. Someone must watch job health, review failed sends and apply changes after Mautic upgrades, because schedule and consumer configuration can need adjustment with new releases. Ask the provider to document these responsibilities, and confirm whether any ongoing support is covered by a separate retainer.
What to monitor, back up and document after Mautic cron jobs go live
Once the Mautic cron jobs and the messenger consumer are running in production, the team's job shifts from building the pipeline to keeping it honest. The first routine is monitoring, and it should answer four questions every day: did each scheduled command finish, how long did it take, is anything waiting in the queue, and is the consumer still alive. Record the start and end time of each segment update, campaign update, campaign trigger and broadcast run, and alert when a run overlaps the next one or stops reporting. Queue depth matters just as much. A growing backlog during a large send usually means the consumer is too slow, has stopped, or is being starved by other jobs on the same host, and the team should know which of these it is before the send window closes.
Deliverability signals come from outside the server. Ask your sending provider to report bounce, complaint and failure rates per sending domain and per broadcast, and agree on thresholds that pause a campaign for review. Mautic will show what it attempted to send, but the provider shows what was accepted and what was rejected, so both views need to be compared. Also watch disk space in the Mautic log directory and the Supervisor log location. Verbose logging on a busy install can fill a volume quickly, and a full disk can stop cron output and queue processing without an obvious error in the Mautic interface. Confirm the log rotation and retention settings with your platform team, since the right retention depends on your compliance and incident response needs.
Backups need three parts. Back up the Mautic configuration file and any environment-specific settings, the Supervisor program definitions for the messenger consumer, and the scheduler definitions, whether that is the system crontab, a container job definition or another mechanism. Back up the database on a schedule that matches how often contacts and campaign state change, and test restores into a separate environment rather than assuming the dump is usable. Store the backups where the consumer and cron host cannot silently overwrite them. Ask your team to confirm restore time objectives and retention periods in writing, because those choices determine how much queued email or campaign history you can recover.
The runbook is what lets someone other than the original builder act at 2 a.m. It should cover restarting the consumer and cron jobs in order, pausing a broadcast before it reaches more contacts, and clearing or replaying the queue without sending duplicate email. Each step needs an owner, the command or console action, and a check that proves it worked. Replaying queued messages is the riskiest action, so define who can approve it and how the team confirms which messages were already accepted by the provider. Finally, schedule a recheck of cron and consumer settings at every Mautic upgrade. Mautic follows a monthly patch, quarterly minor and two-year major release cadence, so changes can arrive often. Confirm version-specific behavior for cron and messenger settings in the release notes for the exact version you run, and record the result in the runbook.
How DeployOpen scopes, builds and hands over Mautic cron and queue work
DeployOpen treats Mautic cron jobs and the email queue as one operating layer that must be designed with the rest of the install. We scope the schedule, batch limits and queue consumer against your contact volume, build them inside your own infrastructure, and document what the team runs afterward.
How we scope
- The written scope lists every Mautic cron command in use: segment updates, campaign updates, campaign triggers and broadcasts.
- It records the staggering plan, batch limits and the server or container each job runs on.
- Engagements are fixed-scope, so scope, deliverables and timelines are agreed in writing before work starts.
How we build
- We configure the cron schedule so segment, campaign and broadcast jobs are staggered and do not overlap.
- We set up the messenger consumer for queued email, with a process supervisor and restart behavior confirmed in your environment.
- We test large sends in a staging copy and check queue depth, failed messages and job logs before go-live.
How we hand over
- You receive a runbook covering each cron entry, its purpose, its frequency and the expected log output.
- The runbook describes how to restart the consumer, clear a stuck queue and check for failed sends.
- Your team walks through the monitoring and alerting setup with us before the engagement closes.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- A retainer can cover cron and queue changes when you add segments, campaigns or larger sends.
- Support also covers checks after Mautic upgrades, since job commands and queue settings can change between releases.

