Run MLS Genie™
on your own server.
MLS Genie™ is a standard WordPress plugin — it can run on any qualifying host. Below are the exact requirements we test against and recommend for peak performance.
Managed hosting is included on all plans
Every MLS Genie™ subscription includes fully managed WordPress hosting — configured, monitored, and maintained for you. Self-hosting is supported but is your responsibility to configure and maintain. If you self-host, these requirements apply.
Server Requirements
PHP
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| PHP Version | 8.1 | 8.2 or 8.3 | The codebase uses str_contains(), named arguments, and match expressions throughout. PHP 7.x will fatal on activation. |
| Memory Limit | 256 MB | 512 MB | The always-loaded module set is ~6 MB of PHP source. GenieScout Engine import holds full API payloads + WP post arrays simultaneously. CRM templates reach 188 KB per file. |
| max_execution_time | 120s | 300s | Off-market scan steps, nightly scout refresh, and ListingGenie CMA generation all run long. WP-Cron jobs inherit this limit. |
| max_input_vars | 3,000 | 5,000 | The Genie Settings page and Field Config screens POST large form payloads. Default 1,000 will silently truncate saves. |
| upload_max_filesize | 64 MB | 128 MB | Required for .mlsgpack boundary pack uploads and social media image processing. |
| post_max_size | 64 MB | 128 MB | Must be equal to or greater than upload_max_filesize. |
PHP Extensions
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| sodium (libsodium) | Required | Required | Used by MLSG_Crypto for authenticated encryption of all API credentials at rest. Plugin will not activate without this. |
| curl | Required | Required | All outbound API calls — MLS data, property data, AI, license validation. |
| json | Required | Required | Used throughout for API request/response handling. |
| mbstring | Required | Required | Address normalisation and string operations on MLS data. |
| zip | Required | Required | GenieLayers™ .mlsgpack boundary pack installation. |
| gd or imagick | Required | imagick | PWA icon generation and social media image processing. imagick preferred for better quality. |
| opcache | Required | Required | 256 PHP files load on every request. Without OPcache, parse time will dominate every page load. Configure with ≥128 MB and validate_timestamps=0 in production (clear on deploy). |
MySQL / MariaDB
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| MySQL Version | MySQL 5.7 / MariaDB 10.3 | MySQL 8.0 / MariaDB 10.6 | MLS Genie™ creates 29 custom tables with indexed foreign-key patterns. MySQL 8.0 window functions are on the roadmap. |
| max_allowed_packet | 64 MB | 128 MB | MLS feed responses and property data payloads are written to transients in wp_options. Default 16 MB causes silent write failures on large imports. |
| Storage Engine | InnoDB | InnoDB | All custom tables use InnoDB. MyISAM is not supported. |
| Character Set | utf8mb4 | utf8mb4 | Required for full Unicode support in listing descriptions and agent names. |
| Disk Space (Database) | 5 GB | 20 GB | A mature AOR import with full history, send log, chat history, and commission records will exceed 2–3 GB in the database alone. Allow growth room. |
Web Server & SSL
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| Web Server | Nginx or Apache | Nginx | Nginx preferred. Apache with mod_rewrite is supported. Standard WordPress rewrite rules apply — no special MLS Genie™ config required. |
| SSL / HTTPS | Required | Required | The PWA, SSO flows, reCAPTCHA, and license validation all require HTTPS. HTTP-only deployment is not supported. |
| HSTS | Recommended | Enabled | Enable Strict Transport Security via your server config or security plugin on go-live. |
| Disk Space (Files) | 10 GB | 20 GB | Ghost photo attachments store CDN URLs rather than local files, so media storage is minimal. Space is dominated by the database and WordPress core. |
Caching & Performance
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| Object Cache (Redis) | Optional | Required | MLS Genie™ makes 121 set_transient / get_transient calls across the codebase. Without Redis these all hit wp_options and become a write bottleneck under concurrent load. |
| WP-Cron | System cron | System cron | 29 cron hooks registered: nightly scout refresh, off-market scanning, client alerts, drip campaigns, task reminders, and more. "WP-Cron fires on page load" is not sufficient — a real system cron calling wp-cron.php every 5 minutes is required. |
| CDN | Optional | Recommended | A CDN in front of static assets (CSS, JS, images) will meaningfully reduce TTFB on listing archive and property detail pages. |
Outbound HTTP
| Requirement | Minimum | Recommended | Notes |
|---|---|---|---|
| MLS Data Feed | Required | Required | Nightly import, refresh, and live field validation all require outbound HTTPS to the MLS data feed (RESO Web API / OData). |
| Property Data | Required | Required | Property Intelligence, ListingGenie CMA, and Comps all call the property data service server-side. |
| Genie AI | Required | Required | Ask Genie calls a hosted AI service. Firewall rules must allow the outbound HTTPS endpoints provided at onboarding. |
| GenieLayers | Required | Required | Boundary data for GenieLayers overlays is fetched from an open mapping data service. .mlsgpack packs can substitute for this. |
| reCAPTCHA (Google) | Required | Required | GenieForms uses Google reCAPTCHA for spam protection. Required if GenieForms is active. |
| License Validation | Required | Required | Periodic license checks call mlsgenie.com. Blocking this will deactivate the plugin. |
Quick-reference checklist
PHP 8.1 minimum, 8.2+ recommended
sodium, curl, json, mbstring, zip, gd/imagick extensions enabled
memory_limit = 512M
max_execution_time = 300, max_input_vars = 3000 or higher
MySQL 8.0 / MariaDB 10.6, InnoDB, utf8mb4
max_allowed_packet = 64M minimum
OPcache enabled with ≥ 128 MB
validate_timestamps=0 in production, clear on every deploy
Redis object cache via WP Redis or Predis
Moves all 121 transient calls off wp_options
System cron every 5 minutes
Calling wp-cron.php on a schedule — not relying on page-load triggering
HTTPS enforced, HSTS enabled
HTTP-only is not supported
Outbound HTTPS unrestricted
MLS data feed, property data, Genie AI, mapping, Google, and mlsgenie.com
Rather skip the setup?
Every MLS Genie™ plan includes fully managed hosting — pre-configured, monitored, and included in your subscription. No server admin required.
See also: Data Security · Privacy Policy · Changelog · Contact us.