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.


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.




