> ## Documentation Index
> Fetch the complete documentation index at: https://mainwp-docs-openapi-6-1-5-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Disable WP Cron

> Configure custom cron jobs for MainWP Dashboard and extensions including Cost Tracker Assistant, Domain Monitor, Lighthouse, Maintenance, Patchstack, Pro Reports, Regression Testing, Sucuri, SSL Monitor, and Vulnerability Checker.

WordPress WP-Cron relies on site visits to trigger scheduled tasks, which can be unreliable for low-traffic sites. You can disable WP-Cron and use your server's cron system for more consistent task execution.

## What You'll Learn

* How to disable WP-Cron for MainWP
* How to set up server cron jobs
* Cron commands for each extension

## Prerequisites

* Access to your server's cron system (cPanel, Plesk, or SSH)
* Knowledge of your WordPress installation path
* PHP binary location on your server

***

## Disable WP-Cron

Once you disable WP-Cron via **MainWP > Settings > Advanced Settings**, MainWP removes its schedules and you'll need to set up manual cron jobs through your hosting provider.

<Note>
  Need help setting up cron jobs? Check your hosting provider's documentation for [cPanel](https://docs.cpanel.net/cpanel/advanced/cron-jobs/) or [Plesk](https://docs.plesk.com/en-US/obsidian/customer-guide/websites-and-domains/scheduling-tasks-cron-jobs.html).
</Note>

***

## Commands to Use in Crontab

**Two command options are available:**

**Preferred method** (direct PHP call - eliminates HTTP timeout issues):

For MainWP Dashboard core jobs:

```bash theme={null}
/usr/bin/php /path/to/public_html/wp-content/plugins/mainwp/cron/CRON-FILE > /dev/null 2>&1
```

For MainWP Add-on jobs:

```bash theme={null}
/usr/bin/php /path/to/public_html/wp-content/plugins/ADD-ON-DIRECTORY/cron/CRON-FILE > /dev/null 2>&1
```

Use the job-specific examples below to identify the correct cron filename. For Add-on jobs, take both the Add-on directory and cron filename from the job-specific path.

**Alternative method** (HTTP call):

```bash theme={null}
wget -O /dev/null http://example.com/wp-content/plugins/mainwp/cron/CRON-FILE > /dev/null 2>&1
```

<Note>
  The `> /dev/null 2>&1` redirection discards all command output, including errors. For troubleshooting, temporarily remove the redirection or redirect the output to a log file. A hosting-panel log showing that the command launched does not establish that the cron process completed successfully or that every queued site was processed.
</Note>

***

## Cron Jobs by Extension

<Tabs>
  <Tab title="Core">
    #### Check for available updates

    **Frequency:** \*every minute (crontab schedule: \* \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/updatescheck.php > /dev/null 2>&1
    ```

    This cron job will perform two actions. First, it will first synchronize the Dashboard and then perform auto-updates if any exist.

    #### Ping Child Sites

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/pingchilds.php > /dev/null 2>&1
    ```

    #### Check Sites Status

    **Frequency:** \*every minute (crontab schedule: \* \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/checkstatuschilds.php > /dev/null 2>&1
    ```

    This cron also controls built-in [Uptime Monitoring](/sites/management/uptime-monitoring).

    #### Deactivated License Alert

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/deactivatedlicensesalert.php > /dev/null 2>&1
    ```

    Sends extension license deactivation notification emails when MainWP detects deactivated MainWP Add-on licenses and the `deactivated_license_alert` notification is enabled.

    #### General Schedules

    **Frequency:** \*every minute (crontab schedule: \* \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/generalschedules.php > /dev/null 2>&1
    ```

    Runs registered regular sequence processes. In current MainWP Dashboard source, built-in uptime monitoring notification processing registers with this sequence process.

    #### Check Sites Health

    **Frequency:** \*every hour (crontab schedule: 0 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/sitehealthmonitoring.php > /dev/null 2>&1
    ```

    #### Reconnect Sites

    **Frequency:** \*every hour (crontab schedule: 0 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp/cron/stats.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="Cost Tracker Assistant">
    #### Cost Tracker Alert

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-cost-tracker-assistant-extension/cron/cost-tracker-assistant-alert.php > /dev/null 2>&1
    ```

    Checks active Cost Tracker Assistant subscriptions and sends configured renewal alert emails when a subscription is within the notification window.

    <Note>
      This job only sends alerts when Cost Tracker Assistant is enabled. Email notification settings must be enabled for `cost_tracker_notification_email`, and the Cost Tracker Assistant notification option must also be enabled.
    </Note>
  </Tab>

  <Tab title="Domain Monitor">
    #### Start Domain Monitor

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-domain-monitor-extension/cron/domain_monitor_cron_start.php > /dev/null 2>&1
    ```

    #### Continue Domain Monitor

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-domain-monitor-extension/cron/domain_monitor_cron_continue_run.php > /dev/null 2>&1
    ```

    Create both jobs separately. Running the start job daily does not force every domain to be checked daily. Domain Monitor still respects the configured global or per-site checking frequency. The continuation job processes due domains in batches and then handles expiration notifications.

    <Warning>
      Newly added sites are not currently enrolled in scheduled Domain Monitor processing until their first dedicated Domain Monitor check creates the required monitor record. An ordinary MainWP Dashboard site sync does not initialize this record. To initialize newly added sites, use **Check All Sites Domains** or run `wp mainwp-domain-monitor check --all` from the MainWP Dashboard WordPress installation. After the first successful check, subsequent scheduled processing can include the site.
    </Warning>

    <Note>
      `domain_monitor_cron_alert.php` is currently unused and must not be configured as a separate cron job. Alert processing belongs to the continuation flow.
    </Note>
  </Tab>

  <Tab title="Lighthouse">
    #### Audit Sites

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    **Frequency:** *every week, on Sunday 00:00 (crontab schedule: 0 0 \* \* 0)*

    **Frequency:** \*twice a month (crontab schedule: 0 0 1,15 \* \* *)*

    **Frequency:** \*every month (crontab schedule: 0 0 1 \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-lighthouse-extension/cron/lighthouse_cron_start.php > /dev/null 2>&1
    ```

    #### Audit Sites - Continue

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-lighthouse-extension/cron/lighthouse_cron_sync.php > /dev/null 2>&1
    ```

    #### Send Notifications

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    **Frequency:** *every week, on Sunday 00:00 (crontab schedule: 0 0 \* \* 0)*

    **Frequency:** \*twice a month (crontab schedule: 0 0 1,15 \* \* *)*

    **Frequency:** \*every month (crontab schedule: 0 0 1 \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-lighthouse-extension/cron/lighthouse_cron.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="Maintenance">
    #### Start Maintenance

    **Frequency:** \*every hour (crontab schedule: 0 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-maintenance-extension/cron/cron_job_start.php > /dev/null 2>&1
    ```

    #### Continue Maintenance

    **Frequency:** \*every minute (crontab schedule: \* \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-maintenance-extension/cron/cron_job_continue.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="Patchstack">
    #### Patchstack Start

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-patchstack-extension/cron/cron_start.php > /dev/null 2>&1
    ```

    #### Patchstack Continue

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-patchstack-extension/cron/cron_continue.php > /dev/null 2>&1
    ```

    #### Patchstack Sync Dashboard

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-patchstack-extension/cron/cron_sync_dashboard.php > /dev/null 2>&1
    ```

    <Note>
      These jobs respect the Patchstack API sync frequency setting in the Patchstack Add-on settings. Run the daily jobs even when the Add-on is set to weekly or monthly sync; the Add-on skips work until it is due.
    </Note>
  </Tab>

  <Tab title="Post Dripper">
    #### Drip Articles

    **Frequency:** \*every hour (crontab schedule: 0 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-post-dripper-extension/cron/post_dripper.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="Pro Reports">
    #### Send Report Notifications

    **Frequency:** \*every hour (crontab schedule: 0 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-pro-reports-extension/cron/notice_reports.php > /dev/null 2>&1
    ```

    #### Send Reports

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-pro-reports-extension/cron/send_reports.php > /dev/null 2>&1
    ```

    #### Send Reports - Continue

    **Frequency:** \*every minute (crontab schedule: \* \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-pro-reports-extension/cron/continue_reports.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="Regression Testing">
    #### Start Regression Testing

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-regression-testing-extension/cron/html-regression-cron-start.php > /dev/null 2>&1
    ```

    Starts the scheduled Regression Testing process and marks eligible sites for automatic checking.

    #### Continue Regression Testing

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-regression-testing-extension/cron/html-regression-cron-continue-run.php > /dev/null 2>&1
    ```

    Continues scheduled Regression Testing in batches, processes pending site/page checks, and handles follow-up tasks such as tracking CSS/JavaScript changes and notification scheduling.
  </Tab>

  <Tab title="Sucuri">
    #### Send Notifications

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-sucuri-extension/cron/securityscan_notification.php > /dev/null 2>&1
    ```
  </Tab>

  <Tab title="SSL Monitor">
    #### Start SSL Monitor

    **Frequency:** \*every day (crontab schedule: 0 0 \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-ssl-monitor-extension/cron/ssl_monitor_cron_start.php > /dev/null 2>&1
    ```

    #### Continue SSL Monitor

    **Frequency:** \*every 5 minutes (crontab schedule: \*/5 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-ssl-monitor-extension/cron/ssl_monitor_cron_continue_run.php > /dev/null 2>&1
    ```

    Create both jobs separately. Running the start job daily does not mean every certificate is checked daily. The configured automatic-check frequency still determines when each site is due. The continuation job processes due checks in batches and handles alerts afterward.

    <Warning>
      Newly added sites are not currently enrolled in scheduled SSL Monitor processing until their first dedicated SSL Monitor check creates the required monitor record. An ordinary MainWP Dashboard site sync does not initialize this record. To initialize newly added sites, use **Check SSL Certificate on All Sites** or run `wp mainwp-ssl-monitor check --all` from the MainWP Dashboard WordPress installation. After the first successful check, subsequent scheduled processing can include the site.
    </Warning>
  </Tab>

  <Tab title="Vulnerability Checker">
    #### Vulnerability Check

    **Frequency:** \*every ten minutes (crontab schedule: \*/10 \* \* \* *)*

    ```bash theme={null}
    wget -O /dev/null http://yourdashboard.com/wp-content/plugins/mainwp-vulnerability-checker-extension/cron/vulnercheck.php > /dev/null 2>&1
    ```
  </Tab>
</Tabs>

<Warning>
  Replace `/path/to/` with your actual WordPress installation path. The PHP binary location (`/usr/bin/php`) may also vary depending on your server configuration.
</Warning>

***

## Self-Check Checklist

* [ ] WP-Cron disabled in Dashboard Advanced Settings
* [ ] Server cron jobs created for required tasks
* [ ] Both start and continuation jobs created for each multi-stage Add-on
* [ ] Paths updated to match your installation
* [ ] Newly added sites initialized in Domain Monitor and SSL Monitor while the current limitation remains
* [ ] Cron jobs tested and running

***

## Related Resources

* [MainWP System Requirements](/advanced/miscellaneous/mainwp-system-requirements) - Server requirements
* [How to Change Update Frequency](/sites/updates/how-to-change-daily-update-and-sync-frequency) - Update scheduling
