Why are my WordPress listings out of date?
The BrokerFold Team — Product + Engineering
Last reviewed
On this page
Stale listings on a WordPress site come from six causes, and they are worth checking in this order: the scheduled import stopped firing, the feed credentials expired, the plugin was abandoned or broke against an API change, imports are timing out partway, the board changed something upstream, or the data is actually fresh and a cache is serving old pages. The first two account for most cases. Each section below opens with the fastest way to check, so you can walk the list in under an hour.
| Symptom | Check first |
|---|---|
| Everything frozen at one date | WP-Cron, then credentials |
| Sold/expired still showing as active | Credentials or feed-slice change |
| Some listings fresh, older ones stale | Import timeouts |
| Fresh in admin, stale on the page | Cache |
| Stopped after a plugin or board update | Plugin/API drift |
1. The scheduled import stopped firing
Check: your cron-event list (a cron-viewer plugin or WP-CLI) for the
import job’s last and next run times. WordPress’s built-in scheduler is a
pseudo-cron that only fires when someone visits the site, so low-traffic
sites miss schedules, and aggressive full-page caching can starve it
entirely — the visit never reaches PHP, so the clock never ticks. The fix is
structural, not a retry: disable the pseudo-cron and drive wp-cron.php
from a real system scheduler every few minutes. If the job ran and data is
still stale, keep walking the list.
2. Feed credentials or the agreement expired
Check: the import log for authentication errors — and note that many importers log a “successful” run with zero records when the feed rejects them, which is how credential failures stay invisible for weeks. Tokens expire, passwords get rotated, IP allowlists change when you switch hosts, and the data agreement behind the credentials has its own renewal cycle through your board. If the log shows zero-row runs, confirm the credentials directly against the feed before touching anything else, and check with your broker that the agreement itself is still in force.
3. Plugin abandonware and API drift
Check: the plugin’s last-updated date and changelog against your board’s current API. Canadian feeds have been a moving target — boards have retired older transport protocols in favour of the RESO Web API, and national-pool formats evolve — so an unmaintained plugin eventually points at an endpoint that no longer answers the way it expects. A plugin more than a year stale in a market whose feeds changed this year is a prime suspect. The Canadian plugin landscape and its two feed lineages are mapped in IDX for WordPress.
4. Imports timing out partway
Check: the import job’s runtime against your PHP max_execution_time,
and whether runs overlap. A full-refresh import that grew with your market
eventually exceeds the time or memory a shared host allows, dies midway, and
leaves a tell-tale pattern: recently-touched listings fresh, everything
alphabetically or chronologically later stale. Fixes in ascending order of
effort: raise the limits, switch the importer to smaller batched runs, move
to delta imports rather than full refreshes. At full-board scale this stops
being tunable at all — the arithmetic is in
can WordPress handle MLS listing volume.
5. The board changed something upstream
Check: one stale listing against the source of record — your board portal, or the listing brokerage’s own site. Boards revise status vocabularies, rename fields, restructure media delivery, and adjust what your feed class is entitled to see; sellers also opt individual listings out of internet display. If the feed’s shape changed, the importer may be faithfully syncing a slice that no longer means what your templates assume. This is the cause you cannot fix locally: it needs the plugin vendor or developer to track the change, which is worth remembering when choosing the route for getting MLS listings on your site.
6. The cache is serving yesterday’s pages
Check: the same listing logged-in versus logged-out, or with a cache-busting query string. If admin shows fresh data while visitors see stale pages, the sync is fine and your page cache’s TTL or purge rules are not: listing pages need short lifetimes or purge-on-update hooks, and CDN caching stacks a second layer to clear. This is the happiest diagnosis on the list — and the most common false alarm.
If the list keeps repeating
A feed that goes stale monthly is not unlucky; it is telling you that freshness on a self-assembled stack is an operations job with no one staffed to it. The honest alternatives are paying someone to own the checklist or moving to a platform where sync, monitoring, and the 15-minute cadence are the vendor’s problem — first-hand detail on what that operation involves is in TRREB listings on WordPress.
Keep reading
- IDX for WordPress The two plugin lineages, the board-coverage question that decides everything, and what lead capture on a WordPress IDX stack really involves.
- TRREB listings on WordPress The first-hand version: PropTx agreements, approval, and the sync engineering — rate limits, media mirroring, freshness — that the tutorials skip.
- MLS listings on your website, Canada The three routes to MLS listings on a Canadian website: portal widgets, IDX plugins, and platforms with direct board feeds. A decision table with trade-offs.