Skip to main content

Cron Settings

Configure and manage automated tasks by setting the frequency or running them manually. Each cron job can be tailored to meet specific needs for optimal system performance.

Navigate to Settings → Cron Settings to configure these intervals.


How Cron Jobs Work

+------------------+      +------------------+      +------------------+
| SYSTEM CRON | ---> | MUMARA CRON | ---> | TASK EXECUTED |
| (server level) | | (app scheduler) | | (processing) |
+------------------+ +------------------+ +------------------+
  1. System Cron - Your server's cron daemon calls Mumara's scheduler every minute
  2. Mumara Scheduler - Checks which tasks are due based on your settings
  3. Task Execution - Runs the appropriate task at the configured interval

Running Jobs Manually

Each cron job has action buttons for manual execution:

ButtonDescription
Run NowExecutes the job immediately if it's not already running or locked
Run ForcefullyBypasses any locks and forces execution (use with caution)

Run Forcefully is available on jobs that may get stuck due to long-running processes or connection issues (Bounce Processing, Feedback Loop Processing, Maintenance Work, Segments Recount, RSS Dynamic Content Tags).

warning

Use Run Forcefully sparingly. If a job is locked, it usually means it's still running. Forcing a second execution can cause duplicate processing or data issues.


Cron Jobs

Email Campaigns

Starts sending scheduled broadcasts and processes active campaign queues.

DefaultDescription
1 MinChecks for campaigns ready to send every minute

Volume recommendations:

VolumeIntervalRationale
High (100k+ daily)1 MinEnsures campaigns start promptly and queues process continuously
Medium (10k-100k daily)1-5 MinGood balance of responsiveness and server load
Low (under 10k daily)5-15 MinReduces server overhead when immediate starts aren't critical

Trigger Processing

Evaluates trigger conditions and executes delayed trigger actions. Instant contact-based triggers run in real-time and don't depend on this cron.

DefaultDescription
1 MinProcesses delayed triggers and segment-based triggers

Volume recommendations:

VolumeIntervalRationale
Time-sensitive automations1 MinMinimizes delay for triggers like "30 minutes after signup"
Standard automations5-15 MinAcceptable delay for most marketing automation
Low priority15-30 MinWhen trigger timing isn't critical
tip

Instant contact triggers (contact added, field changed) with "Instantly" timing execute in real-time without waiting for this cron. Only delayed triggers and segment-based triggers are processed here.


Bounce Processing

Connects to bounce mailboxes and retrieves bounce notifications to update contact statuses.

DefaultDescription
2 HourFetches and processes bounces from configured mailboxes

Volume recommendations:

VolumeIntervalRationale
High volume sending30 Min - 1 HourFaster bounce detection helps protect sender reputation
Standard2 HourGood balance - bounces are processed same-day
Low volume6-12 HourWhen rapid bounce detection isn't critical
info

Bounce processing involves connecting to external mailboxes (IMAP/POP3), which can be slow. More frequent processing means more connections but faster bounce handling.


Feedback Loop Processing

Processes feedback loop (FBL) reports - spam complaints from ISPs.

DefaultDescription
24 HourProcesses spam complaint reports from configured FBL addresses

Volume recommendations:

VolumeIntervalRationale
High volume ESP2-6 HourFaster complaint detection to protect reputation
Standard12-24 HourDaily processing is adequate for most senders

Spam complaints are serious reputation signals. Processing them more frequently helps you respond faster to deliverability issues.


Maintenance Work

Runs system cleanup and optimization tasks including clearing temporary files, optimizing tables, and general housekeeping.

DefaultDescription
24 HourPerforms daily system maintenance

Recommendations:

ScenarioIntervalRationale
High activity systems12-24 HourMore frequent cleanup for systems with heavy usage
Standard24 HourDaily maintenance is sufficient for most installations

Segments Recount

Recalculates contact counts for dynamic segments by re-evaluating segment conditions.

DefaultDescription
24 HourRecounts contacts matching each segment's criteria

Recommendations:

ScenarioIntervalRationale
Dynamic targeting needs6-12 HourWhen segment counts need to reflect recent changes
Standard24 HourDaily recount is sufficient for most use cases
Static segments only24 Hour or longerWhen segment membership rarely changes
note

Segment recounting can be resource-intensive on large databases. If you have millions of contacts with complex segment conditions, consider running this during off-peak hours.


Pending Stats

Processes pending statistics calculations and updates campaign metrics.

DefaultDescription
1 MinAggregates and updates statistics from raw tracking data

Recommendations:

ScenarioIntervalRationale
Real-time dashboards1 MinStatistics update almost immediately
Standard1-5 MinNear real-time stats with lower overhead
Batch reporting15-30 MinWhen real-time stats aren't needed

Delete Exported Files

Removes exported files that have exceeded the retention period set in Application Settings.

DefaultDescription
2 HourChecks and deletes expired export files

Recommendations:

ScenarioIntervalRationale
Standard2 HourFiles are cleaned up within hours of expiration
Disk space concerns1 HourMore frequent cleanup to free disk space
Minimal6-12 HourWhen disk space isn't a concern

Click Tracking

Processes click tracking data when using cron-based tracking mode.

DefaultDescription
1 MinProcesses queued click events into statistics

Recommendations:

ScenarioIntervalRationale
Cron tracking mode1 MinClicks appear in stats within a minute
Real-time tracking modeCan be longerIf using real-time driver, this is supplementary

Open Tracking

Processes open tracking data when using cron-based tracking mode.

DefaultDescription
1 MinProcesses queued open events into statistics

Recommendations:

ScenarioIntervalRationale
Cron tracking mode1 MinOpens appear in stats within a minute
Real-time tracking modeCan be longerIf using real-time driver, this is supplementary

Engagement Processing

Calculates and updates contact engagement scores based on opens, clicks, and other interactions.

DefaultDescription
1 MinUpdates engagement metrics for contacts

Recommendations:

ScenarioIntervalRationale
Active engagement tracking1 MinReal-time engagement score updates
Standard5-15 MinNear real-time engagement data

Triggers Checkup

Monitors trigger health, retries failed trigger actions, and performs trigger maintenance.

DefaultDescription
24 HourChecks trigger status and retries failed actions

Recommendations:

ScenarioIntervalRationale
Mission-critical triggers6-12 HourFaster recovery from trigger failures
Standard24 HourDaily checkup is sufficient for most setups

Suppression Processing

Processes suppression list updates and applies suppressions to contact databases.

DefaultDescription
15 MinSyncs suppression lists and marks suppressed contacts

Recommendations:

ScenarioIntervalRationale
Active suppression management15 MinSuppressions take effect within 15 minutes
Standard15-30 MinGood balance for most installations
Low volume1 HourWhen suppression timing isn't critical

Queue Work

Processes Laravel's background job queue for tasks like notifications, imports, and other queued operations.

DefaultDescription
1 MinProcesses queued jobs

Recommendations:

ScenarioIntervalRationale
Using SupervisorCan be disabledSupervisor handles queue processing continuously
Cron-based queue1 MinJobs process within a minute of being queued
Low priority jobs5-15 MinWhen immediate processing isn't needed
Supervisor Alternative

For high-volume installations, using Supervisor to run queue workers continuously is more efficient than cron-based processing. When using Supervisor, this cron can serve as a fallback.


Stuck Campaigns

Detects campaigns that have stopped processing unexpectedly and attempts to restart them.

DefaultDescription
2 HourChecks for and restarts stuck campaigns

Recommendations:

ScenarioIntervalRationale
High volume sending1-2 HourFaster recovery from stuck campaigns
Standard2 HourCampaigns are recovered within a few hours
Low volume6-12 HourWhen quick recovery isn't critical

Limit Reset

Resets sending limits, trigger limits, and other quota counters on their billing cycle.

DefaultDescription
24 HourChecks and resets limits that have reached their reset date

Recommendations:

ScenarioIntervalRationale
Standard24 HourLimits reset once daily is appropriate
Strict limit enforcement12 HourMore frequent checks for limit resets

Evergreen Campaigns

Processes evergreen (recurring) campaigns - broadcasts that automatically repeat at scheduled intervals.

DefaultDescription
5 MinChecks and queues evergreen campaigns ready to run

Recommendations:

ScenarioIntervalRationale
Precise scheduling needed1-5 MinEvergreens start close to their scheduled time
Standard5 MinGood balance of precision and overhead
Flexible scheduling15-30 MinWhen exact start times aren't critical

RSS Dynamic Content Tags

Fetches and caches RSS feed content for use in dynamic email content.

DefaultDescription
1 HourUpdates RSS feed cache for dynamic content tags

Recommendations:

ScenarioIntervalRationale
Frequently updated feeds30 Min - 1 HourContent stays relatively current
Standard1 HourHourly updates are sufficient for most feeds
Rarely updated feeds2-6 HourWhen feed content doesn't change often

Server Cron Setup

To enable Mumara's scheduler, add this entry to your server's crontab:

* * * * * cd /path/to/mumara && php artisan schedule:run >> /dev/null 2>&1

This runs Laravel's scheduler every minute, which then executes tasks based on your configured intervals.

Accessing Crontab

crontab -e

Verifying Cron

Check if cron is running:

systemctl status cron

Volume-Based Configuration Profiles

High Volume (100k+ emails/day)

JobInterval
Email Campaigns1 Min
Trigger Processing1 Min
Bounce Processing1 Hour
Feedback Loop Processing6 Hour
Pending Stats1 Min
Click/Open Tracking1 Min
Queue Work1 Min (or use Supervisor)
Stuck Campaigns1 Hour
Evergreen Campaigns5 Min

Medium Volume (10k-100k emails/day)

JobInterval
Email Campaigns1-5 Min
Trigger Processing5 Min
Bounce Processing2 Hour
Feedback Loop Processing12 Hour
Pending Stats1-5 Min
Click/Open Tracking1 Min
Queue Work1-5 Min
Stuck Campaigns2 Hour
Evergreen Campaigns5 Min

Low Volume (under 10k emails/day)

JobInterval
Email Campaigns5-15 Min
Trigger Processing15 Min
Bounce Processing6 Hour
Feedback Loop Processing24 Hour
Pending Stats5-15 Min
Click/Open Tracking5 Min
Queue Work5 Min
Stuck Campaigns6 Hour
Evergreen Campaigns15 Min

Best Practices

Interval Selection

  • Start with defaults - The suggested values work well for most installations
  • Monitor server load - Watch CPU/memory during peak cron activity
  • Consider volume - Higher email volume justifies more frequent processing
  • Avoid overlap - Ensure resource-intensive tasks complete before next run

Performance Tips

  • Stagger intensive jobs - Don't run Maintenance, Segments Recount, and Bounce Processing at the same time
  • Use Supervisor for queues - More efficient than cron-based queue processing for high volume
  • Monitor logs - Check cron execution in Tools → Cron Status
  • Run during off-peak - Schedule intensive jobs (Maintenance, Segments Recount) during low-traffic periods

Troubleshooting

Cron Jobs Not Running

Possible causes:

  • Server cron not configured
  • Laravel scheduler not set up
  • Permission issues

Solutions:

  • Verify server crontab entry exists
  • Check Laravel log for scheduler errors
  • Ensure web user can execute artisan commands

Tasks Running Too Slowly

Possible causes:

  • Too many tasks at same interval
  • Server resource constraints
  • Large data volumes

Solutions:

  • Stagger task intervals
  • Increase server resources
  • Optimize database indexes
  • Reduce data retention periods

Jobs Appear Stuck

Possible causes:

  • Previous run still executing
  • Database locks
  • External service timeouts

Solutions:

  • Check if job is actually still running
  • Use Run Forcefully to bypass locks (with caution)
  • Check database for lock issues
  • Review logs for timeout errors

Next Steps