WordPress plugin intelligence profile

Shift8 Real Estate Listings for TRREB

Sync Toronto Real Estate Board (TRREB) listings via PropTx RESO Web API to WordPress posts automatically.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.0
Current version1.8.2
WordPress coverageTested up to WordPress 7.0
Minimum stackWP 5.0 · PHP 7.4
Directory statusactive
Last directory update23 May 20265mo ago
Active installations20Adoption metric — not a quality score
WordPress.org rating5.0 / 5 from 1 ratings
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Shift8 Real Estate Listings for TRREB version 1.8.2 as active, updated 5mo ago and tested up to WordPress 7.0.

Overview

About this plugin

Shift8 TREB Real Estate Listings is a comprehensive WordPress plugin that automates the process of importing and managing real estate listings from the Toronto Real Estate Board (TREB) via the PropTx RESO Web API. This plugin eliminates manual listing management by automatically fetching property data and creating properly formatted WordPress posts.

Read our detailed blog post about this plugin for technical insights, implementation details, and the story behind migrating from RETS to RESO Web API.

Key Features

  • Automated Synchronization – Scheduled sync using WordPress cron with configurable frequency
  • PropTx RESO Web API Integration – Secure Bearer token authentication with comprehensive error handling
  • Unlimited Image Import – Imports ALL available photos per listing with cross-hosting batch processing
  • Universal Template System – Compatible with all page builders (Visual Composer, Elementor, Gutenberg, Bricks)
  • Google Maps Integration – Interactive maps with free OpenStreetMap geocoding and conditional display
  • WalkScore Integration – Walkability scoring for properties
  • Member-Based Categorization – Automatic categorization based on agent membership
  • Geographic Filtering – Restrict listings by postal code prefix (FSA) or city name with autocomplete
  • Sold Listing Management – Automatically updates existing listings to sold status with title prefix and tags
  • WP-CLI Support – Full command-line interface for server management
  • Comprehensive Logging – Detailed logging system with admin interface

Perfect For

  • Real estate agencies using TREB/PropTx RESO Web API
  • Property management companies
  • Real estate agents and brokers
  • WordPress developers building real estate sites
  • Anyone needing automated MLS listing synchronization

Advanced Features

  • Incremental Synchronization – Uses ModificationTimestamp for efficient API usage
  • Batch Image Processing – Memory-aware processing with adaptive timeouts
  • Direct MLS Import – Import specific listings via WP-CLI
  • API Diagnostics – Raw API response analysis for troubleshooting
  • Geographic Filtering – Filter by postal code prefix (FSA) or city name, mutually exclusive via admin dropdown
  • Listing Preview – Preview API results via WP-CLI without creating posts
  • Sync Mode Management – Control over incremental vs age-based synchronization
  • Security Focused – All input sanitized, output escaped, encrypted credential storage

External Services

This plugin connects to several external services to provide real estate listing functionality:

PropTx RESO Web API (Toronto Real Estate Board)

– Purpose: Retrieves real estate listing data from the Toronto Real Estate Board (TREB) MLS system

– Data Sent: API authentication token, search parameters, listing filters

– When: During scheduled syncs and manual data imports

ca)

ca/terms-of-service

ca/privacy-policy

OpenStreetMap Nominatim API

– Purpose: Geocodes property addresses to obtain latitude/longitude coordinates for mapping

– Data Sent: Property addresses (street, city, province, postal code)

– When: When processing new listings or updating existing ones

org)

org/policies/nominatim/

org/wiki/Privacy_Policy

Google Maps API (Optional)

– Purpose: Displays interactive maps for property locations

– Data Sent: Property coordinates, API key

– When: When viewing individual listing pages (if Google Maps API key is configured)

– Service Provider: Google LLC

com/maps/terms

com/privacy

WalkScore API (Optional)

– Purpose: Displays walkability scores and neighborhood information

– Data Sent: Property address, WalkScore ID

– When: When viewing individual listing pages (if WalkScore credentials are configured)

com

com/terms-of-use/

com/privacy/

All external service connections are made server-to-server and do not directly collect visitor data. Property addresses and coordinates are only sent to mapping services when explicitly configured by the site administrator.

WP-CLI Reference

All commands are registered under wp shift8-treb. WP-CLI must be installed on the server.

wp shift8-treb sync

Run a manual sync of TREB listings from the PropTx RESO Web API.

Options:

  • --dry-run – Run without creating or updating any posts.
  • --verbose – Show detailed output including settings, sample data, and progress.
  • --limit=<number> – Limit the number of listings to process. Overrides admin settings.
  • --force – Force sync even if the bearer token is not configured.
  • --listing-age=<days> – Override listing age in days. Ignores incremental sync and uses age-based filtering.
  • --mls=<numbers> – Import specific MLS number(s), comma-separated. Example: W12436591,C12380184
  • --members-only – Sync only listings from configured member IDs. Applies filter at API level.
  • --postal-prefix=<prefixes> – Override geographic filter with postal code prefixes (FSA). Comma-separated. Example: M5V,M6H. Mutually exclusive with --city.
  • --city=<cities> – Override geographic filter with city names. Comma-separated. Example: "Toronto W08,Mississauga". Mutually exclusive with --postal-prefix.
  • --skip-images – Skip image downloads for faster sync. Stores external URLs only.
  • --sequential-images – Use sequential image processing instead of batch. Slower but more compatible.

Examples:

wp shift8-treb sync wp shift8-treb sync --dry-run --verbose wp shift8-treb sync --listing-age=7 --limit=50 wp shift8-treb sync --mls=W12436591,C12380184 wp shift8-treb sync --members-only --skip-images wp shift8-treb sync --postal-prefix=M5V,M6H wp shift8-treb sync --city="Brampton,Oakville" --limit=20

wp shift8-treb preview

Query the API and display a summary of matching listings without creating any posts. Output includes price range and median, city breakdown, property type breakdown, and top agents.

Options:

  • --limit=<number> – Limit number of listings to fetch.
  • --listing-age=<days> – Override listing age in days.
  • --members-only – Only show listings from configured member IDs.
  • --postal-prefix=<prefixes> – Override geographic filter with postal code prefixes. Mutually exclusive with --city.
  • --city=<cities> – Override geographic filter with city names. Mutually exclusive with --postal-prefix.
  • --format=<format> – Output format: table (default) or json.

Examples:

wp shift8-treb preview wp shift8-treb preview --postal-prefix=M5V,M6H,M8X wp shift8-treb preview --city="Toronto W08,Mississauga" wp shift8-treb preview --limit=20 --members-only wp shift8-treb preview --format=json

wp shift8-treb analyze

Fetch raw API data for diagnostic analysis. Supports searching for specific MLS numbers and showing agent breakdowns. No posts are created.

Options:

  • --limit=<number> – Maximum listings to analyze. Default: 50.
  • --search=<mls> – Search for specific MLS number(s). Comma-separated.
  • --show-agents – Show unique agent IDs and their listing counts.
  • --days=<number> – Number of days to look back. Default: 90.
  • --members-only – Only analyze listings from configured member IDs.
  • --postal-prefix=<prefixes> – Override geographic filter. Mutually exclusive with --city.
  • --city=<cities> – Override geographic filter. Mutually exclusive with --postal-prefix.

Examples:

wp shift8-treb analyze --limit=100 --show-agents wp shift8-treb analyze --search=W12436591,C12380184 wp shift8-treb analyze --days=30 --limit=200 wp shift8-treb analyze --city="Mississauga" --days=30

wp shift8-treb settings

Display current plugin configuration. Sensitive values such as the bearer token are masked.

Options:

  • --format=<format> – Output format: table (default), json, or yaml.

Examples:

wp shift8-treb settings wp shift8-treb settings --format=json

wp shift8-treb test_api

Test the PropTx RESO Web API connection using the configured bearer token.

No options. Example:

wp shift8-treb test_api

wp shift8-treb test_media

Test the Media API for a specific listing. Shows available photos with URLs, types, order, and preferred photo status.

Arguments:

  • <listing_key> – The MLS listing key. Example: W12438713

Options:

  • --raw – Show the full raw JSON API response.

Examples:

wp shift8-treb test_media W12438713 wp shift8-treb test_media W12438713 --raw

wp shift8-treb sync_status

Show current sync mode (incremental or age-based), last sync timestamp, and relevant settings.

No options. Example:

wp shift8-treb sync_status

wp shift8-treb reset_sync

Reset the incremental sync timestamp. Forces next sync to use age-based filtering, re-importing listings that may have been deleted locally.

Options:

  • --yes – Skip the confirmation prompt.

Examples:

wp shift8-treb reset_sync wp shift8-treb reset_sync --yes

wp shift8-treb clear_logs

Clear all plugin sync logs.

Options:

  • --yes – Skip the confirmation prompt.

Examples:

wp shift8-treb clear_logs wp shift8-treb clear_logs --yes

wp shift8-treb retry-images

Retry downloading failed images for posts that have stored external image references. Draft posts are auto-published if the retry succeeds.

Options:

  • --limit=<number> – Limit number of posts to process. Default: unlimited.
  • --dry-run – Show what would be processed without downloading.
  • --status=<status> – Only process posts with a specific status: draft, publish, or any (default).

Examples:

wp shift8-treb retry-images wp shift8-treb retry-images --dry-run wp shift8-treb retry-images --status=draft wp shift8-treb retry-images --limit=10<h3>Technical Requirements</h3>

0 or higher

4 or higher

* cURL extension for API communication

* Write permissions for wp-content/uploads directory

* Valid PropTx RESO Web API bearer token

Support

For support, documentation, and updates, visit the plugin’s GitHub repository or contact Shift8 Web.

Privacy Policy

This plugin connects to the PropTx RESO Web API to retrieve real estate listing data. No personal data is transmitted to external services beyond what is necessary for API authentication and data retrieval. All API credentials are encrypted and stored securely in your WordPress database.

Credits

Developed by Shift8 Web for integration with the PropTx RESO Web API and Toronto Real Estate Board listing management.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • real estate
  • listings
  • mlstr
  • proptx
  • trreb
Compatibility & maintenance

Compatibility & maintenance

Tested up to WordPress 7.0

Not yet marked as tested with WordPress 7.1. WordPress.org currently lists Tested up to 7.0.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.0
Minimum requirementsWordPress 5.0 · PHP 7.4
Update activity23 May 20265mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.