MLS Import Documentation Aug 6, 2026 · 6 min read

Setting up a real server cron

L
laura perez
I’m Laura Perez, your friendly real estate expert with years of hands-on…

MLSImport runs on the WordPress schedule, and WordPress only checks its schedule when someone loads a page. On a site with steady traffic that is fine. On a new site, a staging site, or one with quiet nights, it means the hourly sync and the daily cleanup fire late or not at all.

A real server cron fixes it by driving the schedule on a clock instead of on visitors.

WP-Cron or a real server cron: which should I use?

Use a real server cron run through WP-CLI. Keep WP-Cron only on a busy site with a small feed, or on hosting where nobody can add a cron job.

WP-Cron Real server cron (WP-CLI)
What starts it A visitor opening a page The server clock, every five minutes
Quiet nights and new sites Updates run late or not at all Updates run on time
A long import Cut off at the web server’s time limit, often 300 seconds No web request time limit
A skipped hour Lost, because the hourly sync looks back only two hours Rare, because runs start on time
The import queue Moves only when pages are opened Worked by its own cron line
Who sets it up Nothing to do You or your host

Page caching makes WP-Cron worse. When a cache or CDN serves a saved copy of a page, WordPress does not load, so the schedule is not checked.

Pro Tip

Not a tech person? Send your host this: “Please add a server cron that runs wp cron event run –due-now and wp action-scheduler run every 5 minutes, with a lock, and set DISABLE_WP_CRON to true.”

What has to run

Two scheduled events do the work that matters, and both are ordinary WordPress cron events.

  1. event_mls_import_auto, hourly. Checks each import task with auto update enabled for listings changed in the last two hours and updates them. A missed hour is not recovered later.
  2. mlsimport_reconciliation_event, daily. Compares your site against the full MLS feed and removes listings that should no longer be there.

A third event, mlsimport_daily_telemetry_event, runs daily and only reports usage. It has no effect on your listings.

Imports themselves are queued through Action Scheduler, which also depends on the WordPress schedule. That is why a site with broken cron shows all three symptoms at once: imports that never finish, listings that never update, and old listings that are never removed.

Run the schedule through WP-CLI. It executes in the shell, so no web server request timeout applies, which matters because a single import action can legitimately run for many minutes.

  1. Add define('DISABLE_WP_CRON', true); to wp-config.php, so page views stop trying to run the schedule as well.
  2. Add a system cron entry that runs due events every five minutes:
    */5 * * * * wp cron event run --due-now --path=/path/to/wordpress
  3. Add a second command in the same entry to work the import queue:
    */5 * * * * wp action-scheduler run --path=/path/to/wordpress
  4. Wrap both in a lock so runs cannot pile up on each other:
    flock -n /tmp/mlsimport-cron.lock -c 'wp cron event run --due-now --path=/path/to/wordpress'

Most managed hosts have WP-CLI available on the account. Ask your host if you are not sure, and ask them to add the entries if you have no shell access.

While your host is on the line, ask them to check PHP memory and the execution time limit too. The values we test against are in hosting requirements and recommendations.

Pro Tip

The lock is not optional on a site with large imports. Without it, a five minute schedule starts a second runner while the first is still working through a task, and two runners updating the same properties produce database deadlocks.

If WP-CLI is not available

The fallback is a system cron that requests wp-cron.php over HTTP every five minutes:

*/5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null

Know its limit before relying on it. That request goes through your web server, so it is subject to the same request timeout as any page. On stacks that cap requests at 300 seconds, a long import is killed at 300 seconds whether a visitor triggered it or your cron did. It keeps the hourly sync and the daily cleanup honest, and it does not rescue an import that is too large for the host.

Keep the schedule steady

Whatever method you choose, run it consistently. The hourly sync asks the MLS for listings changed in the last two hours, so a schedule that skips several hours leaves a gap that no later run fills. If a gap happens, run each import task manually once to bring the site current.

Pro Tip

After adding server cron, confirm it worked rather than assuming. Install WP Crontrol, open Tools, then Cron Events, and search for mls. Both events should be listed with a next run time in the near future.

Frequently asked questions

The Tools tab mentions a URL ending in mlsimport_cron=yes. Should I use that?

No. That URL does not start a sync of its own: requesting it writes a line to the server cron log and nothing else. Any listings that do get updated when you call it are updated because the request is an ordinary page view, and a page view is what makes WordPress check its own schedule. Drive the WordPress schedule itself with one of the methods above, since that is what both plugin events are registered on. If you have already added a cron entry for that URL, replace it rather than adding to it.

Is five minutes too often?

No. A run with nothing due exits almost immediately, so the cost is negligible. Checking often is what keeps an hourly event close to hourly, since a schedule checked once an hour drifts.

Do I still need DISABLE_WP_CRON if my host already added a cron job?

Yes, if that job drives the schedule. Leaving both active means page views and your cron entry can start runs at the same time, which is exactly the overlap the lock is there to prevent.

Will server cron make my imports faster?

It makes them start on time and, through WP-CLI, lets them run without a web request timeout. It does not make your server process listings faster, so a task too large for the host still needs splitting into narrower tasks.

Can I leave MLSImport on WP-Cron?

Yes, if the site gets steady traffic day and night and the feed is small. Check it: pick a listing you know changed on the MLS and see that your site shows the change within an hour or two. If your listings are often a day or more behind, the schedule is waiting for visitors, and a real server cron fixes it.

  1. Cron not working: a checklist
  2. Checking that auto update is running
  3. How the hourly auto update works
  4. How daily reconciliation works

Send us your host name and whether WP-CLI is available, and we will write the exact cron entry for your setup.

L
About the author
laura perez
I’m Laura Perez, your friendly real estate expert with years of hands-on experience and plenty of real-life stories. I’m here to make the world of real estate easy and relatable, mixing practical tips with a dash of humor. Partnering with MLSImport.com, I’ll help you tackle the market confidently—without the confusing jargon.
All posts by laura