Technical documentation / PropSpace Importer Pro
How the sync works, a step-by-step tutorial for every screen, the field reference for Elementor and the diagnostics built in — the complete documentation for PropSpace Importer Pro.
01 / At a glance
Built for real catalogs on real Middle East hosting — not for a demo with ten listings.
Resumable
Discovery and import are separate, resumable steps stored in their own tables. No single request handles the whole catalog, so max_execution_time stops mattering.
Time budget
Each batch stops after a fixed number of seconds and puts unstarted listings back in the queue. Slow hosting just means smaller batches.
Delta sync
Unchanged listings are recognised from the updatedAt on the listings page alone — no detail request per listing.
Self-repair
Missing galleries, broken agent links, failed photos and posts deleted by hand are re-imported automatically; a health audit offers one-click repairs.
Images
PropSpace photo URLs have no file extension, so WordPress rejects them. The plugin downloads them and detects the type from the file itself.
Security
The Secret Key is stored AES-256-CBC encrypted with keys derived from your AUTH_KEY / AUTH_SALT, and decrypted only for the request that needs it.
02 / Install
Upload PropSpace Importer Pro in Plugins → Add New → Upload and activate it. A PropSpace Sync menu appears with Sync Dashboard, Settings, Reference Data, Field Guide and Logs.
PropSpace Sync → Settings → API Credentials: paste the Client ID and Secret Key from PropSpace and click Save Credentials.
Run the pre-flight check: it calls the API, downloads one real photo and checks PHP, memory, disk and cron before you sync anything.
Reference Data → Sync Property Types and Sync Agents. Property types become a taxonomy; each agent gets one profile instead of copies on every listing.
03 / Tutorial / First sync
PropSpace Sync → Sync Dashboard.
The plugin fetches your property list page by page and queues every listing. You can close the tab — it keeps going in the background.
The dashboard shows imported/updated, unchanged and failed counts, the time remaining and recent activity. Refresh every 5 seconds or on demand.
Listings that fail three times move to Failed Items with their error. Fix the cause, then Retry Failed Items.
At the end, listings no longer on PropSpace are removed. A safety check refuses an unusually large drop, and cleanup never runs on an incomplete list.
Turn on “Email me when a sync finishes or fails” in Settings. Leave the address blank to use the site admin email.
04 / Tutorial / Automatic sync
PropSpace Sync → Settings → Scheduling.
Every hour, every 6 hours, every 12 hours, once daily — or off (manual only).
WordPress runs schedules on page visits. On a quiet site add a server cron that calls wp-cron.php and set DISABLE_WP_CRON; the pre-flight check confirms it.
Batch Size = listings per request (default 5, 1–20). Lower it if your host has strict timeouts or listings carry many photos.
Tick “Force full resync (ignore unchanged listings)” once after changing field mappings; normal runs keep using delta sync.
05 / Tutorial / Elementor
Everything is stored as normal WordPress data, so Elementor Dynamic Tags, Loop Grid and archives work without extra plugins. PropSpace Sync → Field Guide lists every field.
Create a Single template for the property post type. Use Post Title, Featured Image and Post Content tags.
Dynamic Tags → Post Custom Field: price, bedrooms, area, location_string and the rest from the Field Guide.
Gallery widget → gallery_images (attachment IDs, in PropSpace order). Google Maps → ps_latitude / ps_longitude.
Loop Grid over property, filtered by the Property Type or Offering Type taxonomy. Use ps_bedrooms_num for numeric “3+ bedrooms” filters.
ps_agent_name, ps_agent_mobile, ps_agent_email and ps_agent_photo (Image URL tag), or link to the Agent profile via ps_agent_post_id.
Choose a better featured image on the edit screen and lock it: the sync detects it and never overwrites it again.
06 / Field reference
Custom fields on the property post type. Region, location and sub-location are plain text on purpose: as a taxonomy they produced about ten thousand terms on a real catalog.
ref · price
Listing reference number and price
ps_price_updated_at
When the price last actually changed (tracked locally, UTC)
bedrooms · ps_bedrooms_num
As sent (can be “Studio”) · as a number (Studio = 0) for filters and sorting
bathrooms · area · plot_size
Half-baths and decimals preserved; area in sqft
location_string
Full location on one line, e.g. Ras Al Khaimah, Mina Al Arab, Raha Island
ps_region_name · ps_area_location_name · ps_sub_area_location_name
Region, location and building — plain text
ps_offering_type_raw · ps_is_furnished · ps_is_featured
Sale / Rent, furnished status, featured (yes / no for Elementor conditions)
ps_latitude · ps_longitude
Coordinates for Google Maps
ps_agent_name · ps_agent_mobile · ps_agent_email · ps_agent_photo · ps_agent_post_id
Agent details and their Agent profile
features_string · features_list
Amenities as text or as a list for an Elementor loop
gallery_images
Attachment IDs in PropSpace order
ps_created_at · ps_updated_at
PropSpace dates; updated_at drives delta sync
propspace_id · ps_client_id · ps_featured_locked
Original listing ID (do not edit), agency ID, featured-image lock
Taxonomies
ps_property_type (Property Types) and ps_offering_type (Offering Types)
Post types
property (Properties) and ps_agent (Agents)
07 / Tutorial / Debug & Health
PropSpace Sync → Logs & Diagnostics. Debug logging is off by default; switch it on only while tracing a problem — it switches itself off again.
Credentials, API reachability, authentication, a real listings call, a real photo download, PHP version, memory, disk space, timezone and cron.
Queue rows, locks, background continuations and stalled runs. Emergency Stop & Unlock frees a lock left by a worker that died.
Finds duplicated listings, missing galleries, missing featured images, broken agent links, orphaned photos and stale mappings — each with a one-click repair.
Generate Report and Copy to Clipboard: everything your developer or PropSpace support needs, without digging through server files.
08 / Settings reference
Client ID · Secret Key
PropSpace API credentials. The key is stored encrypted; leave it unchanged to keep the current one.
Automatic Sync
Off (manual only), every hour, every 6 hours, every 12 hours or once daily.
Batch Size
Listings per request, 1 – 20 (default 5).
Featured Image
Automatically set the featured image from the first gallery photo.
Photo Cleanup
Delete imported photos once PropSpace no longer uses them — only files this plugin downloaded.
Email Notifications
Email when a sync finishes or fails; blank address = site admin email.
Debug logging
Off by default; records every API call, download and decision while on.
09 / Security & data
Credentials
AES-256-CBC with key material from AUTH_KEY / AUTH_SALT. If those salts change, re-enter the Secret Key.
Network
Only website-api.propspace.com over HTTPS, plus the PropSpace photo URLs.
Rate limits
When PropSpace asks the site to slow down, the sync waits and carries on — no action needed.
Database
Dedicated tables for runs, the queue and mappings. Debug & Health can rebuild them if a host blocked CREATE/ALTER.
Timezone
Everything is stored in UTC; the site timezone is used only for display.
10 / Troubleshooting
“API credentials are missing”
Add the Client ID and Secret Key under Settings, then run the pre-flight check.
Unauthorized (401)
PropSpace rejected the keys. Verify API access with PropSpace support.
Listings without photos
Some listings have none on PropSpace. If many are missing, the photo-download probe in the pre-flight check shows why.
Scheduled syncs run late
No real cron — add a server cron for wp-cron.php.
A sync looks stuck
Open Debug & Health → live state, close stalled runs or use Emergency Stop & Unlock.
Nothing was deleted at the end
The safety check stopped an unusually large removal, or the listing list was incomplete. Check the dashboard message.
11 / Get it