TerraSuite
TerraSuite: a complete estate agency suite for WordPress. Property listings, map and radius search, applicant matching, enquiries and a viewings calendar.
by Havenswift Hosting · github.com/havenswift-hosting/terrasuite · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/havenswift-hosting/terrasuite/archive/refs/heads/main.zipEstate agency software: listings, map search, applicant matching, a viewings calendar clients book themselves, and portal feed imports.
Description
Built for agencies that want their website to do the work of a person rather than be a brochure. It runs anywhere in the world: the fields that appear on a property follow the market you set, so a UK agency sees tenure and council tax band, a Spanish agency sees community fees and the cadastral reference, and an American agency sees HOA fees and an MLS number.
What it does
- Listings. Unlimited properties, for sale, to rent or short let, with photographs, floorplans, key selling points and every field a portal asks for.
- Search. Filters that run against a flat index, so ten filters is still one query. Distance from a point, or an area the visitor draws on the map.
- Maps. Self-hosted. No third-party script and no API key. An owner who does not want the exact position published gets a shaded circle, and the search still works correctly.
- Enquiries and clients. One record per person, however they arrived.
- A viewings calendar. Agents keep a working pattern; clients ask for a free time; the slot is held, not filled, until an agent confirms. Declining offers alternatives the client accepts with one click.
- Applicant matching. Every saved search is run through the same engine the website uses, so what an applicant is alerted about is exactly what they would have found themselves.
- Feed imports. Kyero version 3, Rightmove BLM, CSV, and generic XML and JSON with a mapping screen.
- De-duplication. Two agencies advertising the same villa produce two feed records that agree about nothing. Several weak signals are scored together and a match is only declared when the total is convincing.
- Shared instructions. Record which agencies hold an instruction and what each takes, as a share of the fee rather than of the price.
- Portal feeds. Publish a Kyero feed, a CSV or JSON at a secret URL.
- A knowledgebase. Forty-five articles ship with it, for clients and for staff, with more added as questions come in, and the staff ones never reach a visitor.
- Area guides, written by hand or drafted by a language model as drafts.
- Elasticsearch, optional. Filters always run against the database, so a property you withdraw stops appearing the moment you withdraw it.
- An optional AI assistant that answers from your own published material and nothing else, and emails you anything it cannot answer.
What it deliberately does not do
No login lockout, no firewall, no malware scanner, no SEO fields, no caching, no contact-form builder. Those belong at the edge or in one plugin that does them properly. Fifteen plugins each doing a fifth of the job is how a WordPress site becomes slow, fragile and impossible to update.
Installation
- Upload the folder to
/wp-content/plugins/and activate it. - Property > Settings > General: your country, currency and units.
- Property > Agencies: fill in your own record.
- Property > Calendar: add each agent working pattern. Until there is one, nobody can request a viewing.
- Add one property by hand and look at it on the website, before setting up any import.
Property > Tools will create demonstration data so you can try everything, and remove it again in one step.
Frequently Asked Questions
Does it work without a licence?
Yes. Listings, search, maps, enquiries, shortlists, the calendar, bookings, the knowledgebase and CSV import and export are free permanently. A licence adds the feed importers, de-duplication, matching, alerts, portal feeds, Elasticsearch and the AI features.
What happens if a licence lapses?
The paid features stop running. Nothing is deleted or hidden, and it all comes back when the licence does.
Does it need an API key for maps?
No. The map library is served from the plugin. The tile URL is a setting; read the terms of whichever tile service you point it at.
Does the AI have to be switched on?
No, and it is off by default. Everything else works without it.
Will it slow my site down?
The search runs against a purpose-built index table rather than through post meta, which is why a ten-filter search is a single query. Measured on a reference installation, a search took half a millisecond.
Third-party libraries
Two libraries ship with the plugin, both unmodified release artefacts under GPL-compatible licences:
- Leaflet 1.9.4, BSD-2-Clause, https://github.com/Leaflet/Leaflet/releases/tag/v1.9.4
- Leaflet.draw 1.0.4, MIT, https://github.com/Leaflet/Leaflet.draw/releases/tag/v1.0.4
Both are minified as published by their own projects. The non-compiled source is at the tags above, and public/vendor/README.md records how to replace either one.
External services
The plugin contacts nothing at all unless you switch something on.
- Geocoding is off until you enable it. When enabled it sends a property's address to the geocoding service you nominate, which defaults to Nominatim (https://nominatim.openstreetmap.org, terms at https://operations.osmfoundation.org/policies/nominatim/), one request per second, and caches every answer for a year.
- Map tiles are fetched by the visitor's browser from OpenStreetMap (https://www.openstreetmap.org/copyright) on pages where you place a map.
Nothing is sent anywhere on activation, and there is no usage tracking of any kind.
Changelog
1.0.0
- First release.