Skip to content
Integrations7 min read

Importing property listings onto your website

An agent enters a listing in the agency software and then retypes it on their own website. With dozens of properties and their photos that is a full day of work, and the data goes stale. Here is how to solve it and where it usually breaks.

Double entry is expensive in an unexpected way

It is not only the time. It is that the two records drift apart within a week. The price drops in the portal and stays high on the site. A property sells and is still listed. A client calls about something that no longer exists and the agent explains.

If your agency software offers an XML export or another export interface, the website can pick up listings from it regularly. That is the whole basis of the fix: the site fetches the export periodically and reconciles itself against it. At Spolu v realitách we built exactly that on top of the POSKI REAL export.

The sync has to run one way only

This is the most important decision and it is made at the start. Once both sides can overwrite each other, sooner or later they will overwrite the wrong thing and nobody will know which version is right.

The correct shape is one place where a listing is edited and a site that only displays it. The agent works where they are used to. An edit on the site is overwritten by the next run, and that is correct, because the site is not the system of record.

Before you commit to two-way sync, settle which record is the authoritative one.

Duplicates come from matching on the title

The classic mistake: the import looks for an existing property by its heading or address. The agent then edits the heading on the site to read better, and the next run creates a second record. A month later the site holds three versions of the same property.

Matching has to use the ID from the portal, never the text. The ID does not change, whatever anyone does to the heading.

Listing sync settings in the WordPress admin
A manual run, a dry run and statistics from the last import. Without those, a fault is hunted in the server log.

What else to watch

The size of the feed

An export with a few hundred properties and thousands of photos can run to tens of megabytes. Loaded into memory in one go, the hosting refuses it. It has to be parsed as it streams, not all at once.

Pointless writes

If every run rewrites all three hundred listings even when nothing changed, the database grows for no reason and the run takes minutes. The fix is a fingerprint of the content: compute a hash, and if it matches, skip the record.

Images

Without de-duplication every run downloads the same photo again and the media library grows into gigabytes. At the same time the order from the feed has to survive, or the main photo ends up wrong.

Controlled vocabularies

Layouts, states and property types arrive as text. If they are not matched against the real field definitions, accents included, half the listings end up with no layout and the filter on the site stops working.

How to tell it is done well

  • The import can be run by hand and has a dry run that shows changes before they are written.
  • You can see when it last ran and what it did.
  • Two runs at once do not get in each other’s way.
  • The add-on can be switched off and the site keeps working, because the data sits in ordinary fields, not in a table of its own.

That last point is the difference between an add-on you can replace years later and one the site is stuck with for good. We apply the same rule to integrations in general.

Frequently asked questions

How do I get listings from agency software onto my own site?

Through an XML export or another export interface, if the agency software offers one. The site fetches the export at set intervals and reconciles its own records against it. The agent keeps working in the agency software only.

Should the sync work both ways?

Almost never. Once both records can overwrite each other they will drift apart and you will not know which version holds. One place to edit, and the site only displays.

Why do duplicate properties appear on the site?

Because the import matches records by heading or address. As soon as someone edits the text, the next run creates a new record. Matching should use the portal ID, which does not change.

Will the import slow the site down?

It need not. The feed should be parsed as it streams rather than loaded into memory, and unchanged records should be skipped using a fingerprint of their content. The run then takes seconds rather than minutes.

What happens if we switch the add-on off?

With a well-built solution, nothing. The data sits in the site’s ordinary fields rather than in the add-on’s own table, so the listings stay and only stop updating.

AutorOndřej Koziorek

Founder a creative director nkz.studio. Vede návrh a značku, vývoj řešíme v nkz.dev.

Probrat projekt
More from the notes
Deciding

A website, an e-shop, or a custom application?

Four questions that show what you actually need to ask for.

Read
Brief

What should a brief for an application include?

No technical spec needed. Describe how work runs, who does it and what is retyped.

Read
Pricing

How much does an internal business system cost?

What drives the price, where to start and how to work out payback.

Read