Synchronization and Log
On this page
Synchronization and the sync log
#How a run works
A synchronization is not one long request. It is a chain of background steps, which is what keeps a large catalogue from
timing out:
- The agent directory is refreshed (names, photos, roles, offices).
- The value dictionary is refreshed (the labels behind Esti’s numeric codes).
- Offers are fetched 100 per page. Each page is imported, then the next page is scheduled 30 seconds later.
- After the last page, cleanup runs: offers Esti no longer publishes are deleted.
For roughly 600 offers that means around 6 pages and a few minutes end to end. Nothing on the site is blocked while it
happens.
Runs start:
- automatically every 6 hours, through WP-Cron, and
- manually, with the Sync now button on the settings screen.
Both need an active license key. Without one the scheduled run returns immediately without contacting Esti, and Sync
now is disabled — see License.
#What one page does with an offer
For every offer that passes the import filter:
- New offer → a post is created.
- Known offer, unchanged → nothing is written. The plugin compares a fingerprint of the payload, so an untouched
catalogue costs almost nothing. - Known offer, changed → the post’s title, description and all fields are overwritten. The URL is deliberately not
changed, so a price change never moves the offer to a new address. - Offer that fails the filter, is inactive, or is not cleared for export → skipped.
#Cleanup and deletion
Cleanup runs only after the last page of a run, and only when every page succeeded.
Offers that were not seen anywhere in the run are permanently deleted — they do not go to the Trash. That covers offers
sold, archived, unpublished in Esti, or excluded by a tightened import filter.
Two safety rules matter here:
- A failed page cancels cleanup. If Esti stops answering halfway through, the run is marked failed and nothing is
deleted. Stale offers are better than an emptied catalogue. - Lost run state deletes nothing. If the record of what the run has seen goes missing, the plugin refuses to
conclude that Esti published nothing, logs a warning and leaves every offer in place.
#The Sync log screen
Esti To WordPress → Sync log keeps the last 20 runs, newest first, with up to 200 recorded events each.
For every run the table shows when it started, what triggered it (schedule or manual), how long it took, a status badge
and a one-line result. Clicking a run opens its details: the counters and the full event list.
#Status badges
| Badge | Meaning |
|---|---|
| In progress | The run is still importing pages. Normal for the first minutes. |
| Finished | Every page was imported and cleanup completed. |
| Finished with errors | The run completed, but individual offers could not be saved. Open the run to see which. |
| Failed | A page could not be fetched from Esti. Nothing was deleted. |
| Interrupted | The background chain stopped without reporting. A run that says nothing for 30 minutes is marked this way, and so is a run still open when the next one starts. |
#Counters
| Counter | What it means |
|---|---|
| Pages processed | Pages of 100 offers fetched from Esti |
| Offers received | Offers in the payload, against the catalogue total Esti reports |
| New | Offers imported for the first time |
| Updated | Existing offers whose data changed |
| Unchanged | Offers identical to what is already stored |
| Skipped | Inactive, not cleared for export, or excluded by the import filter |
| Removed | Offers deleted because Esti no longer publishes them |
Clear log empties the history. It only deletes the log records, never offers.
#Reading common outcomes
“In progress” for a long time. Normal for the first minutes of a large import. If it stays that way and eventually
flips to Interrupted, the background chain is not firing — see WP-Cron below.
Failed, with an HTTP or connection message. Esti did not answer, or answered with an error. Check the company
identifier and token, then press Sync now again. Existing offers are untouched.
Finished with errors. The catalogue is fine, but some offers could not be saved. The run details name the Esti offer
IDs and the reason.
“The agent directory could not be refreshed.” A warning, not a failure. The previous directory is kept and the offer
import continues.
“The value dictionary came back empty.” Also a warning. Attributes that arrive as numeric codes — heating, fencing,
ownership — stay hidden on the offer page until a later run brings the dictionary back.
#When the schedule does not fire
WordPress runs scheduled events on visitor traffic. On a site with very few visitors runs can be late or, if WP-Cron is
disabled outright, never fire — which shows up as runs stuck In progress and then Interrupted.
Two fixes, both for whoever administers the server:
- Trigger
wp-cron.phpfrom a real system cron every few minutes. - Or run the synchronization from the command line with WP-CLI:
wp cron event run osfec_sync_start
The manual Sync now button also depends on the background chain for pages after the first, so a broken WP-Cron shows
up there too: the first page imports, the rest never follow.