System

Cron Manager

View, add, and manage scheduled backend jobs. Changes take effect immediately.

Backend Home

Installed Status

System Cron

Cron Serviceactive
Installed FileReadable
Installed Jobs6 / 12
File Updated2026-04-23 16:34:47
Missing enabled job IDs: 8, 9, 10, 11, 12, 13. Extra installed job IDs: none. Run sudo /mnt/drive3/customerdb/install_customerdb_cron.sh on the server to refresh the installed file.

Scheduled Jobs

All Cron Jobs

Job Schedule Command Status Last Run
Next-Day Customer Emails
Sends pickup reminder emails to customers whose appointment is tomorrow.
0 20 * * *
Daily at 20:00
php8.3 /mnt/drive3/customerdb/backend/jobs/send_nextday_customer_emails.php
Enabled
✓ OK
2026-07-09 00:00
Output
[2026-07-08 20:00:01 EDT] Next-day customer email job starting.
  Business TZ: America/New_York
  Server TZ:   UTC
  Today:    2026-07-08
  Tomorrow: 2026-07-09
  Import first: synced tomorrow (2026-07-09) appointments.
    fetched=0, visits_created=0, orders_created=0
  Raw next-day outreach rows: 0
  Emailable raw rows: 0
  Found 0 customer(s) with tomorrow's pickup after dedupe.
  Nothing to send. Exiting.
Edit
Morning Import
Runs the morning import at 6:00 AM for today.
0 6 * * *
Daily at 6:00
php8.3 /mnt/drive3/customerdb/backend/jobs/smoke_morning_jobs.php && php8.3 /mnt/drive3/customerdb/backend/jobs/run_morning_jobs.php $(date +\%F)
Enabled
✓ OK
2026-07-08 10:00
Output
Morning jobs smoke test passed. Bootstrap and service functions are available. binary=/usr/bin/php8.3 version=8.3.6
{"ok":true,"job_run_id":155,"start_date":"2026-07-08","end_date":"2026-07-08","setmore_sync":{"start_date":"2026-07-08","end_date":"2026-07-08","appointments_fetched":0,"customers_created":0,"visits_created":0,"orders_created":0,"appointments_synced":0,"appointments_skipped_out_of_range":0,"appointments_skipped_placeholder_name":0,"appointments_skipped_missing_identity":0,"appointments_skipped_canceled":0},"daily_totals":[],"appointments":[]}
Edit
Morning Jobs
Runs appointment sync, workflow updates, and morning report generation.
0 9 * * *
Daily at 9:00
php8.3 /mnt/drive3/customerdb/frontend/api/send_reminders.php
Disabled
Edit
Nightly Reports
Generates and emails nightly summary reports.
0 18 * * *
Daily at 18:00
php8.3 /mnt/drive3/customerdb/backend/jobs/send_nightly_reports.php
Enabled
✓ OK
2026-07-08 22:00
Output
{"success":true,"message":"Sent via SMTP (PHPMailer)","to_email":"admin@ellasalterations.com","date":"2026-07-08"}
Edit
Database Backup
Full MariaDB backup to backup directory.
0 2 * * *
Daily at 2:00
bash /mnt/drive3/customerdb/backup.sh
Enabled
✓ OK
2026-07-09 06:05
Output
[2026-07-09 02:00:01] ── Backup starting ──
[2026-07-09 02:00:01] Dumping database ellas_alterations …
[2026-07-09 02:00:01] ✓ Database backup: /mnt/drive3/customerdb/backups/db_20260709_020001.sql.gz (39M)
[2026-07-09 02:00:01] Archiving app files …
[2026-07-09 02:00:01] ✓ Files backup: /mnt/drive3/customerdb/backups/files_20260709_020001.tar.gz (2.4G)
[2026-07-09 02:00:01] Archiving PDF reports …
[2026-07-09 02:00:01] ✗ Reports backup FAILED
[2026-07-09 02:00:01] Removing backups older than 30 days …
[2026-07-09 02:00:01] ✓ Backup complete. Total backup storage: 36G
[2026-07-09 02:00:01] ── Done ──
Edit
Daily Cleanup
Removes temp files and old logs.
0 4 * * *
Daily at 4:00
php8.3 /mnt/drive3/customerdb/backend/jobs/daily_cleanup.php
Enabled
✓ OK
2026-07-09 08:00
Output
[2026-07-09 08:00:02] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=7
Edit
Cleanup Repo Branch Folders
Deletes folders older than 5 days from /mnt/drive3/customerdb_repo/branches using /mnt/drive1/scripts/cleanup_customerdb_branches.sh.
20 3 * * *
Daily at 3:20
bash /mnt/drive1/scripts/cleanup_customerdb_branches.sh
Enabled
Edit
Add Name Records Auto Delete
Deletes placeholder Add Name customer records that have no visits, orders, payments, phone, or email.
20 4 * * *
Daily at 4:20
php8.3 /mnt/drive3/customerdb/backend/jobs/delete_add_name_records.php
Enabled
✓ OK
2026-07-08 08:20
Output
[2026-07-08 08:20:01] Add Name cleanup (orphan mode) starting. Found 0 record(s).
[2026-07-08 08:20:01] Done. Deleted 0 Add Name record(s).
Edit
Report Queue Processor
Processes queued report generation tasks and retries missing receipt/work-order PDFs.
5 * * * *
5 * * * *
php8.3 /mnt/drive3/customerdb/backend/jobs/process_report_generation_queue.php --limit=300
Enabled
Edit
Report Missing Backfill (Today)
Hourly repair pass for today's visits to generate missing required reports.
10 * * * *
10 * * * *
php8.3 /mnt/drive3/customerdb/backend/jobs/backfill_missing_visit_reports.php --days=1 --limit=500 --timeout=70
Enabled
Edit
Report Missing Alert
Logs/alerts when paid or completed visits are missing required reports.
15 * * * *
15 * * * *
php8.3 /mnt/drive3/customerdb/backend/jobs/report_alert_missing.php
Enabled
Edit
Report Renderer Health Check
Runs a lightweight PDF renderer health check and stores status.
20 * * * *
20 * * * *
php8.3 /mnt/drive3/customerdb/backend/jobs/report_renderer_health_check.php
Enabled
Edit
Weekly Report Integrity Export
Exports weekly report completeness CSV for audit/compliance review.
0 6 * * 1
Weekly (Mon) at 6:00
php8.3 /mnt/drive3/customerdb/backend/jobs/export_weekly_report_integrity.php
Enabled
Edit
To activate these jobs, run once as root / kefa: sudo cp /tmp/customerdb_crontab_export.txt /etc/cron.d/customerdb && sudo chmod 644 /etc/cron.d/customerdb The export file is regenerated automatically whenever you save, toggle, or delete a job. Exported jobs now run through the cron wrapper so scheduled runs can log history and send notifications.

Recent Runs

Cron Run Log

Daily Cleanup
cron
2026-07-09 08:00
Finished 08:00
✓ OK
Exit 0
Output
[2026-07-09 08:00:02] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=7
Database Backup
cron
2026-07-09 06:05
Finished 06:05
✓ OK
Exit 0
Output
[2026-07-09 02:00:01] ── Backup starting ──
[2026-07-09 02:00:01] Dumping database ellas_alterations …
[2026-07-09 02:00:01] ✓ Database backup: /mnt/drive3/customerdb/backups/db_20260709_020001.sql.gz (39M)
[2026-07-09 02:00:01] Archiving app files …
[2026-07-09 02:00:01] ✓ Files backup: /mnt/drive3/customerdb/backups/files_20260709_020001.tar.gz (2.4G)
[2026-07-09 02:00:01] Archiving PDF reports …
[2026-07-09 02:00:01] ✗ Reports backup FAILED
[2026-07-09 02:00:01] Removing backups older than 30 days …
[2026-07-09 02:00:01] ✓ Backup complete. Total backup storage: 36G
[2026-07-09 02:00:01] ── Done ──
Next-Day Customer Emails
cron
2026-07-09 00:00
Finished 00:00
✓ OK
Exit 0
Output
[2026-07-08 20:00:01 EDT] Next-day customer email job starting.
  Business TZ: America/New_York
  Server TZ:   UTC
  Today:    2026-07-08
  Tomorrow: 2026-07-09
  Import first: synced tomorrow (2026-07-09) appointments.
    fetched=0, visits_created=0, orders_created=0
  Raw next-day outreach rows: 0
  Emailable raw rows: 0
  Found 0 customer(s) with tomorrow's pickup after dedupe.
  Nothing to send. Exiting.
Nightly Reports
cron
2026-07-08 22:00
Finished 22:00
✓ OK
Exit 0
Output
{"success":true,"message":"Sent via SMTP (PHPMailer)","to_email":"admin@ellasalterations.com","date":"2026-07-08"}
Morning Import
cron
2026-07-08 10:00
Finished 10:00
✓ OK
Exit 0
Output
Morning jobs smoke test passed. Bootstrap and service functions are available. binary=/usr/bin/php8.3 version=8.3.6
{"ok":true,"job_run_id":155,"start_date":"2026-07-08","end_date":"2026-07-08","setmore_sync":{"start_date":"2026-07-08","end_date":"2026-07-08","appointments_fetched":0,"customers_created":0,"visits_created":0,"orders_created":0,"appointments_synced":0,"appointments_skipped_out_of_range":0,"appointments_skipped_placeholder_name":0,"appointments_skipped_missing_identity":0,"appointments_skipped_canceled":0},"daily_totals":[],"appointments":[]}
Add Name Records Auto Delete
cron
2026-07-08 08:20
Finished 08:20
✓ OK
Exit 0
Output
[2026-07-08 08:20:01] Add Name cleanup (orphan mode) starting. Found 0 record(s).
[2026-07-08 08:20:01] Done. Deleted 0 Add Name record(s).
Daily Cleanup
cron
2026-07-08 08:00
Finished 08:00
✓ OK
Exit 0
Output
[2026-07-08 08:00:01] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=4
Database Backup
cron
2026-07-08 06:05
Finished 06:05
✓ OK
Exit 0
Output
[2026-07-08 02:00:01] ── Backup starting ──
[2026-07-08 02:00:01] Dumping database ellas_alterations …
[2026-07-08 02:00:01] ✓ Database backup: /mnt/drive3/customerdb/backups/db_20260708_020001.sql.gz (39M)
[2026-07-08 02:00:01] Archiving app files …
[2026-07-08 02:00:01] ✓ Files backup: /mnt/drive3/customerdb/backups/files_20260708_020001.tar.gz (2.4G)
[2026-07-08 02:00:01] Archiving PDF reports …
[2026-07-08 02:00:01] ✗ Reports backup FAILED
[2026-07-08 02:00:01] Removing backups older than 30 days …
[2026-07-08 02:00:01] ✓ Backup complete. Total backup storage: 32G
[2026-07-08 02:00:01] ── Done ──
Next-Day Customer Emails
cron
2026-07-08 00:00
Finished 00:00
✓ OK
Exit 0
Output
[2026-07-07 20:00:01 EDT] Next-day customer email job starting.
  Business TZ: America/New_York
  Server TZ:   UTC
  Today:    2026-07-07
  Tomorrow: 2026-07-08
  Import first: synced tomorrow (2026-07-08) appointments.
    fetched=0, visits_created=0, orders_created=0
  Raw next-day outreach rows: 0
  Emailable raw rows: 0
  Found 0 customer(s) with tomorrow's pickup after dedupe.
  Nothing to send. Exiting.
Nightly Reports
cron
2026-07-07 22:00
Finished 22:00
✓ OK
Exit 0
Output
{"success":true,"message":"Sent via SMTP (PHPMailer)","to_email":"admin@ellasalterations.com","date":"2026-07-07"}
Morning Import
cron
2026-07-07 10:00
Finished 10:00
✓ OK
Exit 0
Output
Morning jobs smoke test passed. Bootstrap and service functions are available. binary=/usr/bin/php8.3 version=8.3.6
{"ok":true,"job_run_id":154,"start_date":"2026-07-07","end_date":"2026-07-07","setmore_sync":{"start_date":"2026-07-07","end_date":"2026-07-07","appointments_fetched":0,"customers_created":0,"visits_created":0,"orders_created":0,"appointments_synced":0,"appointments_skipped_out_of_range":0,"appointments_skipped_placeholder_name":0,"appointments_skipped_missing_identity":0,"appointments_skipped_canceled":0},"daily_totals":[],"appointments":[]}
Add Name Records Auto Delete
cron
2026-07-07 08:20
Finished 08:20
✓ OK
Exit 0
Output
[2026-07-07 08:20:01] Add Name cleanup (orphan mode) starting. Found 0 record(s).
[2026-07-07 08:20:01] Done. Deleted 0 Add Name record(s).
Daily Cleanup
cron
2026-07-07 08:00
Finished 08:00
✓ OK
Exit 0
Output
[2026-07-07 08:00:02] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=7
Database Backup
cron
2026-07-07 06:05
Finished 06:05
✓ OK
Exit 0
Output
[2026-07-07 02:00:01] ── Backup starting ──
[2026-07-07 02:00:01] Dumping database ellas_alterations …
[2026-07-07 02:00:01] ✓ Database backup: /mnt/drive3/customerdb/backups/db_20260707_020001.sql.gz (39M)
[2026-07-07 02:00:01] Archiving app files …
[2026-07-07 02:00:01] ✓ Files backup: /mnt/drive3/customerdb/backups/files_20260707_020001.tar.gz (2.4G)
[2026-07-07 02:00:01] Archiving PDF reports …
[2026-07-07 02:00:01] ✗ Reports backup FAILED
[2026-07-07 02:00:01] Removing backups older than 30 days …
[2026-07-07 02:00:01] ✓ Backup complete. Total backup storage: 27G
[2026-07-07 02:00:01] ── Done ──
Next-Day Customer Emails
cron
2026-07-07 00:00
Finished 00:00
✓ OK
Exit 0
Output
[2026-07-06 20:00:01 EDT] Next-day customer email job starting.
  Business TZ: America/New_York
  Server TZ:   UTC
  Today:    2026-07-06
  Tomorrow: 2026-07-07
  Import first: synced tomorrow (2026-07-07) appointments.
    fetched=0, visits_created=0, orders_created=0
  Raw next-day outreach rows: 0
  Emailable raw rows: 0
  Found 0 customer(s) with tomorrow's pickup after dedupe.
  Nothing to send. Exiting.
Nightly Reports
cron
2026-07-06 22:00
Finished 22:00
✓ OK
Exit 0
Output
{"success":true,"message":"Sent via SMTP (PHPMailer)","to_email":"admin@ellasalterations.com","date":"2026-07-06"}
Morning Import
cron
2026-07-06 10:00
Finished 10:00
✓ OK
Exit 0
Output
Morning jobs smoke test passed. Bootstrap and service functions are available. binary=/usr/bin/php8.3 version=8.3.6
{"ok":true,"job_run_id":153,"start_date":"2026-07-06","end_date":"2026-07-06","setmore_sync":{"start_date":"2026-07-06","end_date":"2026-07-06","appointments_fetched":0,"customers_created":0,"visits_created":0,"orders_created":0,"appointments_synced":0,"appointments_skipped_out_of_range":0,"appointments_skipped_placeholder_name":0,"appointments_skipped_missing_identity":0,"appointments_skipped_canceled":0},"daily_totals":[],"appointments":[]}
Add Name Records Auto Delete
cron
2026-07-06 08:20
Finished 08:20
✓ OK
Exit 0
Output
[2026-07-06 08:20:01] Add Name cleanup (orphan mode) starting. Found 0 record(s).
[2026-07-06 08:20:01] Done. Deleted 0 Add Name record(s).
Daily Cleanup
cron
2026-07-06 08:00
Finished 08:00
✓ OK
Exit 0
Output
[2026-07-06 08:00:01] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=5
Database Backup
cron
2026-07-06 06:05
Finished 06:05
✓ OK
Exit 0
Output
[2026-07-06 02:00:01] ── Backup starting ──
[2026-07-06 02:00:01] Dumping database ellas_alterations …
[2026-07-06 02:00:01] ✓ Database backup: /mnt/drive3/customerdb/backups/db_20260706_020001.sql.gz (39M)
[2026-07-06 02:00:01] Archiving app files …
[2026-07-06 02:00:01] ✓ Files backup: /mnt/drive3/customerdb/backups/files_20260706_020001.tar.gz (2.4G)
[2026-07-06 02:00:01] Archiving PDF reports …
[2026-07-06 02:00:01] ✗ Reports backup FAILED
[2026-07-06 02:00:01] Removing backups older than 30 days …
[2026-07-06 02:00:01] ✓ Backup complete. Total backup storage: 23G
[2026-07-06 02:00:01] ── Done ──
Next-Day Customer Emails
cron
2026-07-06 00:00
Finished 00:00
✓ OK
Exit 0
Output
[2026-07-05 20:00:01 EDT] Next-day customer email job starting.
  Business TZ: America/New_York
  Server TZ:   UTC
  Today:    2026-07-05
  Tomorrow: 2026-07-06
  Import first: synced tomorrow (2026-07-06) appointments.
    fetched=0, visits_created=0, orders_created=0
  Raw next-day outreach rows: 0
  Emailable raw rows: 0
  Found 0 customer(s) with tomorrow's pickup after dedupe.
  Nothing to send. Exiting.
Nightly Reports
cron
2026-07-05 22:00
Finished 22:00
✓ OK
Exit 0
Output
{"success":true,"message":"Sent via SMTP (PHPMailer)","to_email":"admin@ellasalterations.com","date":"2026-07-05"}
Morning Import
cron
2026-07-05 10:00
Finished 10:00
✓ OK
Exit 0
Output
Morning jobs smoke test passed. Bootstrap and service functions are available. binary=/usr/bin/php8.3 version=8.3.6
{"ok":true,"job_run_id":152,"start_date":"2026-07-05","end_date":"2026-07-05","setmore_sync":{"start_date":"2026-07-05","end_date":"2026-07-05","appointments_fetched":0,"customers_created":0,"visits_created":0,"orders_created":0,"appointments_synced":0,"appointments_skipped_out_of_range":0,"appointments_skipped_placeholder_name":0,"appointments_skipped_missing_identity":0,"appointments_skipped_canceled":0},"daily_totals":[],"appointments":[]}
Add Name Records Auto Delete
cron
2026-07-05 08:20
Finished 08:20
✓ OK
Exit 0
Output
[2026-07-05 08:20:01] Add Name cleanup (orphan mode) starting. Found 0 record(s).
[2026-07-05 08:20:01] Done. Deleted 0 Add Name record(s).
Daily Cleanup
cron
2026-07-05 08:00
Finished 08:00
✓ OK
Exit 0
Output
[2026-07-05 08:00:01] Daily cleanup completed.
  /mnt/drive3/customerdb/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/backend/tmp: scanned=0 deleted=0
  /mnt/drive3/customerdb/webui/tmp: scanned=0 deleted=0
  logs_trimmed=0
  cron_job_run_deleted=7

Edit Job

Next-Day Customer Emails

Daily 8 PM Daily 9 AM Daily 2 AM Every 5 min Weekly Sun 3 AM Monthly 1st 4 AM
Cancel