MLS Import May 29, 2025 · 18 min read

Fix Outdated Listings on Your WordPress Real Estate Site

B
Benjamin Levy
Contributor · MLSimport

Why do buyers keep calling me about homes on my website that already sold?

Buyers call because your site still shows the home as for sale after it sold. One of six things is usually behind it. The agent has not changed the status in the MLS yet. Your feed has not updated. Your site’s update job did not run. A saved copy of the page is showing old data. Your settings keep that status on the site. Or someone added the home by hand.

Your website does not read your MLS live. It keeps a copy of the listings that your IDX feed sends over on a schedule. A gap of an hour or so is normal. A gap of days means something stopped.

Check the MLS first. Look up the same MLS number there. Then use this table to find your cause.

What you seeLikely causeWhat to check first
A change shows up an hour or two laterYour MLS and your plugin both update on a scheduleNothing is broken. Wait one cycle.
The MLS still says Active tooThe listing agent has not updated the status yet (see “Agents Can Delay the Data” below)Call the listing agent. Your site can’t be newer than the MLS.
The MLS says Sold, your site says ActiveYour feed or update job did not runWhen did your site last pull changes?
Nothing updates and nothing is removed for daysThe update job (WordPress cron) stoppedCron not working: a checklist
One task stopped updating, others are fineThat task’s first import was cut off, so it is skipped every hourRun that task by hand and let it finish
Every listing stopped on the same dayYour MLS login or approval expiredThe connection to your MLS fails
Your site is right when you are logged in, wrong for visitorsA saved copy of the page (cache)Clear your cache plugin, your host cache and your CDN (see “Caching” below)
The home shows as Pending and buyers think it is openYour search shows Pending by defaultShow Active only, or label Pending clearly
The home is on a “Just Listed” page or a blog postSomeone added it by handRemove it or mark it Sold the day it goes pending
Old homes never leave, even weeks laterA setting keeps that status on the siteProtected Statuses on that task (see the FAQ below)
One listing never shows upA filter on your import task, or a board rule, keeps it outListings you expect are not being imported

On a WordPress site that runs MLS Import, each part of this has its own step:

  • Hourly update. Each hour, your site asks the MLS which listings changed in the last two hours. It then updates price and status. See how the hourly auto update works.
  • Daily cleanup. Once a day, your site compares its listings with the full MLS feed. It removes homes that should be gone. A home still in the feed is kept only if its status is in the task’s Select Status list. See how daily reconciliation works.
  • Protected statuses. A home with a status on this list is never removed, even after it leaves the feed. New setups protect Active, Active Under Contract, Coming Soon and Pending. See protected statuses.
  • The WordPress clock. WordPress only runs its schedule when someone opens a page. A quiet site can fall hours behind. See cron not working: a checklist.
  • Homes you typed in yourself. A home with no MLS number is never removed by the daily cleanup. You remove it.
Pro Tip

Search the MLS number in Import History. You will see when the home was last edited, and if it was removed, which run removed it. That one search usually tells you which row of the table above you are in. If it was never edited after it sold, the update is the problem. If it was edited but never deleted, look at your status lists.

How to find the cause in five minutes

Start with one listing that is wrong. One real example tells you more than a guess.

  1. Write down its MLS number.
  2. Look up its status and the time it last changed in your MLS.
  3. Search that MLS number in Import History, as in the Pro Tip above. Rows marked Automatically mean the hourly update is running. No recent rows across a busy market mean it is not.
  4. Open Import Tasks. Check that the Auto Update Enabled column reads yes for every task.
  5. Check that both connection messages on MLS Import Settings are green.
  6. Clear every cache, then reload the listing page.

What should I say when a buyer calls about a sold home?

Turn the call into a showing. These callers are real buyers who want a home like that one right now. Try: “Thanks for calling! That one just went under contract. I have two homes close by with the same layout. Want to see them this week?” Then fix the listing so the next buyer doesn’t make the same call.

It looks like a small problem. It isn’t. Excited buyers call you to book a tour of a home that’s gone. Sellers see their home still marked “For Sale” long after they signed. As one agent put it: “Interested customers call or write just to find the property is already sold.”

Several parts have to work together to keep a status right. You control some of them: your update schedule, your cache and your status settings. You don’t control others: how fast the listing agent updates the MLS, and how often your MLS sends out changes. The good news is you can find which part broke by checking one MLS number at a time.

Does a sold home have to vanish from our website?

No. A sold home can stay as a past sale when your board allows it. The problem is a sold home that still looks available. If you keep sold pages, label them clearly and check that they do not appear in your available-home search.

MLS Import has settings to keep closed listings, so you can show recent sales and use them for seller leads. Those settings do not replace your board’s rules. Check the rules before you keep sold pages or remove a group of listings. Here is which statuses can get you in trouble with your board.

Send your website team the proof they need

Send the MLS number, the page link, and the status you see in your MLS. Add the time you checked it. This gives your website team one listing to trace through the feed, the update job, and the page.

Ask: “Did this listing reach our site with the new status? If it did, why does the page still say Active?”

Why This Problem Matters More Than You Might Think

When someone browsing your site sees a home labeled “Active,” they assume the property is genuinely available for purchase. They might call you immediately to schedule a showing, forward the link to family or friends, or even begin imagining themselves living there.

Now imagine how frustrating it is for that person to find out the home sold yesterday or even a few days ago. That excitement quickly turns to disappointment, and it plants a seed of doubt—not just about the listing but also about your site and, sometimes, about your service as an agent.

Even if this happens once or twice, people can stop trusting your listings. It can also cost you money: many boards fine brokers who leave sold or expired homes up. See can your brokerage get fined for outdated listings. They may start checking big national sites like Zillow or Realtor instead, thinking they’re more up-to-date, even if that’s not true. For agents, that’s a lost opportunity and a crack in your brand’s reputation.

How WordPress Real Estate Sites Get Their Listings

Your WordPress website doesn’t generate listing data all by itself. Instead, it relies on a plugin called an IDX plugin, which stands for Internet Data Exchange. This plugin connects your Website to your local MLS — the Multiple Listing Service, where agents enter their active listings, prices, photos, and status updates.

The IDX plugin acts like a bridge, reaching out to the MLS using a system like RETS (a bit older) or Web API (a newer, faster standard) and asking for the latest updates. It then saves that data into your Website’s database, where it becomes visible to people browsing your listings.

But the catch causes the lag: your IDX plugin can only get new data when the MLS makes it available. Your plugin isn’t pulling live, second-by-second information—it’s following the rules and timing that the MLS sets, which can vary widely from place to place.

MLS Update Frequency Comparison

MLS TypeHow Often It UpdatesNotes for Agents
Large MLS BoardsEvery 5–15 minutesFastest, often for premium connections or direct access only
Mid-sized BoardsEvery 30–60 minutesCommon for most city-based and suburban MLS systems
Small Boards3–4 times per daySlowest; updates may take hours to reach your site
Your WebsiteSame as the MLSWordPress can’t update faster than the MLS feed allows

Even if your Website looks sleek and loads fast, the data inside it can still be old because the MLS controls the schedule.

Agents Can Delay the Data Without Even Realizing It

Most MLS systems give agents 24 to 48 hours to change a listing’s status after accepting an offer. That policy is built to give agents time to handle paperwork, coordinate with the buyer and seller, or finish showings already on the calendar.

But during that window, the home still shows as “Active”—not just on the MLS but also on your Website, other agents’ sites, and any portal that uses the same feed. Buyers see it, message you, and book tours—all for a listing that’s already off the market.

Even if you follow the rules perfectly, your site may display the wrong information simply because the update wasn’t made in time.

This is especially common when agents wait until the end of the day to make changes or intentionally delay the update to see if any backup offers come in.

WordPress Doesn’t Check for Updates Unless You Tell It To

WordPress has a system for scheduling tasks called wp-cron, but it’s not like a real clock. It only runs when someone loads a page on your site — like when a visitor opens your homepage or checks a listing.

WordPress won’t check for updates if no one visits your site for hours. That means new homes don’t appear, sold homes don’t get removed, and price changes don’t show up — simply because no one triggered the check.

This isn’t just a problem for small or new websites. Even busy agent sites can miss checks if caching or server issues interrupt the process.

Real Cron Jobs Are the Fix

A real cron job is a scheduled task that runs at set times — every 5 minutes, for example — no matter how busy or quiet your site is. You can set one up through your hosting provider. Once active, your site will check for new listings, price changes, and status updates on a schedule that works around the clock — not just when people browse.

Comparison Table: Cron Job Types

Type of Cron JobHow It WorksReliabilityBest For
wp-cron (default)Runs only when a visitor loads a page❌ InconsistentBasic sites, test environments
Server Cron JobRuns every X minutes, no matter what✅ ReliableAll production real estate sites

Need help? WordPress.org has a setup guide that walks through the steps.

Pro Tip

After you fix a stopped update, run each import task by hand once. The hourly update only looks back two hours, so changes from the days it was down are never filled in on their own. Here is how to set up a real server cron so it does not stop again.

Caching: Great for Speed, Bad for Accuracy

Caching tools make websites load faster by saving versions of your pages and reusing them. Tools like WP Rocket or Cloudflare can turn a 3-second page load into less than one second. That’s great for users and SEO.

But if that saved version says a home is “Active,” it will keep showing that version until the cache expires or is manually cleared — even if the house was sold an hour ago.

Object caching also saves the actual listing data in memory (using tools like Redis or Memcached). This speeds up page builds but can also hold onto old property info until the memory is refreshed.

Smart Caching Rules to Follow

Page or Data TypeCaching Strategy
Search and Listing PagesDo NOT use full-page caching
Property Status QueriesSet short expiration time (1–5 min)
Database Rows (Object Cache)Clear after every successful update

Caching is powerful — but it must be configured carefully to avoid displaying outdated listings.

Why is a sold home still showing active on a site that imports its listings?

A sold home stays up when your site never got told to take it down: the hourly update or the daily cleanup described at the top of this page stopped, or a setting tells it to keep the home. Here are the usual reasons, in the order to check them:

  • Auto update is off, or the task never finished. A task with auto update off is imported once and never updated again. A task whose first import was cut off gets skipped every hour. An old Last Action date alone does not prove a fault. See checking that auto update is running.
  • The schedule never fires. Both jobs run on the WordPress schedule. On a quiet site, or a site where the host turned WordPress cron off and set up no server cron, nothing gets updated or removed. See setting up a real server cron.
  • Closed is in your status lists. If Closed is in Select Status or Protected Statuses, sold homes are kept on purpose. That is how you keep a sold history. See closed and off-market listings.
  • The cleanup stopped itself. If the MLS sends back less than 80 percent of the listings your site holds, the daily pass deletes nothing that day. This guards against a broken feed wiping your site. Look for a line in the server error log saying the cleanup stopped because the feed looked too small. See how daily reconciliation works.

How to clear sold homes that are already stuck on your site

Fix the setting first, then clear what is already there. The daily cleanup reads each task’s current settings, so a fixed setting applies to homes you already imported at the next daily pass. To remove stuck homes right now, go to MLS Import Settings, then Tools, then Delete Properties. Pick the property status taxonomy and the terms to remove.

  • Deleted homes do not go to the trash. Take a backup first.
  • Homes you added by hand, with no MLS number, are not deleted. Their photos can still be removed, so check the term first.
  • See deleting properties safely for the full steps.

Theme Limitations Cause Misleading Status Labels

MLS databases include dozens of status codes, each with specific meanings. For example, a home might be “Active—Contingent,” “Pending—Backup Offers,” or “Active—Kick-Out.”

Most WordPress themes aren’t built to understand those extra labels. Instead, they only show three simple options: Active, Pending, or Sold.

So if your plugin pulls in “Active – Contingent,” and your theme doesn’t have a place for that, it just shows “Active.” That leads buyers to think the home is fully available — when it’s not.

How to Solve Status Mapping Problems

  • Update your theme to include more MLS status types
  • Show the exact MLS status in parentheses (e.g., Active (Contingent))
  • Add a glossary or “status key” that explains what each label means
  • Let users filter out listings with special conditions if they only want fully open homes

Buyers Feel Burned When Info Is Wrong

If a buyer finds several homes on your site marked “Active,” but they’re all actually sold, or under contract, they’ll start wondering whether your site is reliable.

They might blame the plugin, or they might blame you. Either way, they’re not booking a showing—they’re clicking away to another site they think is more accurate.

The fastest way to regain that trust is to make your site more current and detailed than the big-name portals. Tools like MLSImport are designed to help with this, offering direct MLS connections that update listings every hour.

Sellers Lose Confidence Too

When sellers accept an offer, they often assume their home will stop showing up online right away. But when it still appears as “For Sale,” they get nervous.

They might think the buyer canceled, that the paperwork got lost, or that you forgot to update the listing.

Reassure Sellers Early

  • Let them know the MLS was updated right away — that’s what matters
  • Explain that public websites may take 12–24 hours to reflect that change
  • Share a private MLS link so they can see the update in real-time
  • Let them know a few more calls might come in — and that’s okay

Proactive communication prevents confusion and builds trust.

Old Listings Can Cost You Money

Every time someone clicks on a paid ad — from Google, Facebook, or Instagram — it costs you money. If they click through to a listing that’s already sold, you’ve paid for nothing.

Worse, if too many users “bounce” off your site quickly, Google lowers your SEO ranking. Over time, that means fewer visitors, fewer leads, and less business.

FAQ

Why does a sold or under-contract home still show as “Active” on my WordPress real estate site?

In most cases, your WordPress site is not the original source of truth for listing status – your local MLS is. Your site gets its data through an IDX plugin that pulls updates from the MLS on a schedule (often via RETS or a Web API) and then stores those updates in your WordPress database.

If the MLS feed only updates every 30-60 minutes (or just a few times per day for smaller boards), your site cannot reflect changes faster than the MLS makes them available. On top of that, many MLS systems allow agents 24-48 hours to change status after accepting an offer, so the listing may remain “Active” in the MLS (and therefore on your site) during that window.

How do I stop WordPress from missing listing updates when traffic is low?

Relying on wp-cron can cause missed or delayed updates because wp-cron only runs when someone loads a page on your site. If your site has quiet periods, or if caching/server behavior interferes, WordPress may not run the scheduled tasks that fetch new listing data or status changes.

The practical fix is to use a real server cron job through your hosting provider, set to run on a consistent interval (for example, every 5 minutes). That way, updates run around the clock whether or not a visitor happens to hit your site.

Can caching plugins like WP Rocket or services like Cloudflare make listings look outdated?

Yes. Full-page caching can keep showing a saved version of a page that still labels a property as “Active” until the cache expires or is manually cleared, even if the MLS status changed an hour ago. This is great for speed but can hurt listing accuracy if you cache the wrong pages.

Object caching (for example via Redis or Memcached) can also retain old listing data in memory until it refreshes. A safer approach is to avoid full-page caching on search and listing pages, keep short expiration times for property status queries (such as 1-5 minutes), and clear object cache entries after each successful listing update.

Why does my site show “Active” when the MLS says something more specific like “Active – Contingent”?

Many MLS systems use a large set of status codes (for example, “Active – Contingent,” “Pending – Backup Offers,” or “Active – Kick-Out”). If your WordPress theme only supports a simplified set of labels (often just Active, Pending, Sold), the theme may map any unfamiliar status back to “Active” by default.

To reduce confusion, update the theme/status mapping to include more MLS statuses, display the exact MLS status in parentheses (for example, “Active (Contingent)”), and consider adding a short status key so buyers understand what each label means. If your search supports it, letting users filter out special-condition listings also helps buyers who only want fully open homes.

What should I tell sellers when their home still appears for sale online after accepting an offer?

Set expectations early and focus them on what matters: the MLS status. Let sellers know the MLS was updated right away (or when it will be), but that public websites can take 12-24 hours to reflect status changes due to MLS feed timing, site update schedules, and caching.

If they are anxious, share a private MLS link so they can see the change in real time. It also helps to warn them that a few extra calls may still come in during the transition period, and that it does not necessarily mean anything went wrong with the transaction.

Why do sold homes stay on my site for weeks, not just hours?

A setting is usually keeping them there. If a home’s status is on the Protected Statuses list, the daily cleanup never removes it, even after the MLS drops it. New MLS Import setups protect Active, Active Under Contract, Coming Soon and Pending. So a home that leaves the feed while still marked Pending stays until you remove it. Open the import task, read Protected Statuses, and take off any status you want gone. The change applies on the next daily pass. You don’t need to re-import. See protected statuses and closed and off-market listings.

How fast does a sold status show up on my site?

On a site with steady traffic and a working schedule, status and price changes show up within an hour or two of the MLS. Your site can’t update faster than your MLS sends changes. Homes that leave the feed come off at the next daily cleanup.

B
About the author
Benjamin Levy
Writes about MLS feeds, IDX compliance, and running real-estate websites on WordPress at scale.
All posts by Benjamin