Case study
Case study: the WordPress plugin behind a real-estate CRM’s client websites
For the past few years, a large part of my work has been on a WordPress plugin for a real-estate CRM company. Their customers are estate agencies, and the plugin connects each agency’s WordPress website to the CRM, so that properties, projects, and enquiries live in one place. I joined as a senior WordPress developer and now lead the WordPress team that maintains it. This case study describes the work without naming the company or its clients.
| Client | Real-estate CRM company (anonymous) |
|---|---|
| My role | Senior WordPress developer, now team lead |
| Scale | Plugin at version 20, 3,000+ commits; I’m its most active contributor with 500+ |
| Stack | WordPress, PHP, REST APIs, JavaScript, Contact Form 7, WP Rocket, Yoast SEO |
The challenge
Estate agencies manage their listings in the CRM, but their buyers find them through their websites. Copying listings into WordPress by hand meant stale prices, sold properties still showing, and duplicate work for agents. The goal was a plugin that shows listings live from the CRM on any agency’s WordPress site, while still being fast, search-engine friendly, and easy for site builders to drop into a design.
What the plugin does
- Property and project listings pulled from the CRM’s API, with search filters, maps, carousels, galleries, and individual property pages.
- 90+ shortcodes so designers can place listings, search forms, and featured properties anywhere on a site, in any theme or page builder.
- Lead capture: enquiry forms built on Contact Form 7 create leads directly in the CRM, so agents never re-type an enquiry.
- Visitor features such as a saved-properties wishlist and user registration.
- Multilingual support in five languages, managed through a translation workflow rather than hand-edited files.
Problem 1: speed, when every page depends on an API
Calling an external API on every page view is a recipe for slow pages. We solved it in layers:
- An HTML cache for rendered listing output, so repeat views don’t hit the API at all.
- Integration with WP Rocket and Varnish page caching, including keeping cache purges working when they run from background jobs instead of a normal web request.
- An API endpoint the CRM can call to clear the cache for specific pages when a listing changes, so pages stay fast and accurate.
- AJAX listing templates that refresh only the results and map when visitors filter or paginate, instead of reloading the whole page.
Problem 2: SEO for pages that don’t exist in WordPress
Property pages are generated from CRM data, so WordPress and SEO plugins don’t know they exist. For agencies, though, those pages are the ones that need to rank. The plugin handles that itself:
- XML sitemaps for properties and projects, plugged into WordPress’s sitemap system.
- Yoast SEO integration so property and listing pages get proper titles, descriptions, and canonical URLs.
- SEO-friendly URLs for property pages and search results instead of query strings.
- Smart redirects from old property URLs to their current address, and from sold or removed listings to relevant pages instead of dead 404s.
Problem 3: protecting the server
Property brochures are generated as PDFs on demand, which is expensive work. Bots crawling those links could slow a site down for real visitors, so we added bot detection and rate limiting on the PDF endpoints.
How we keep it maintainable
A plugin that runs on many client sites can’t break on update. The codebase uses Composer autoloading, WordPress Coding Standards checks in CI with results posted on pull requests, code review on every change, and a detailed changelog for every release. As team lead, I review pull requests, plan releases, and mentor developers working on the plugin and on client sites built with it.
The result
The plugin now powers real-estate agency websites in several countries. Agents update a listing once in the CRM and it appears on their website with the right price, photos, and SEO metadata, while enquiries from the site flow straight back into the CRM as leads.
What this means for your project
If your WordPress site needs to show data from another system, such as a CRM, ERP, booking engine, or inventory, these are the same problems you’ll face: speed, SEO, keeping data in sync, and updates that don’t break things. I build custom WordPress plugins and API integrations with those problems solved from the start. For the performance side, see my WordPress speed optimization checklist.
Need WordPress connected to your system?
Tell me what you need to integrate, and I’ll suggest the simplest approach that will hold up. See my custom WordPress plugin development services.
Chat on WhatsApp