Free & open-source WordPress plugin

Your property portal, built into WordPress.

Estatequay takes listings from estate agents’ software and from private owners, checks every ad against German and Spanish law, and lets your editors approve before anything goes live. AI assistants can read it too.

  • GPL-2.0-or-later
  • OpenImmo · Kyero v3
  • English · Deutsch · Español
  • WordPress 6.5+ · PHP 8.1+

How it works

From the agent’s software to your front page.

One path for every listing, with a person in the loop where it matters.

  1. Deliver

    Agents’ software sends OpenImmo or Kyero files to an SFTP inbox, or you enter a feed URL. Private owners send details and photos; your editors enter them.

  2. Check

    Area, energy certificate, Spanish licence numbers, a guard against mass withdrawal. A listing that breaks a rule is held, and the reason is named.

  3. Approve

    New listings of an agent wait for your editors. Approve, or refuse with a reason the provider receives. Every decision is logged.

  4. Publish

    A fast, reduced listing page with photos, the notes the law requires, a relay contact form and schema.org data.

  5. Keep fresh

    Withdrawn listings go offline at once. Private offers expire after 60 days unless the owner confirms. A feed that falls silent raises a flag.

Features

Everything a property portal needs. Nothing it doesn’t.

Built for a real local portal, generalised for any WordPress site. Every line below is something the code does today.

Listings & workflow

  • Own post types for properties and providers: estate agents and private offers
  • An SFTP inbox per agent, plus a test inbox that checks a delivery and changes nothing
  • New listings of an agent wait for approval, or the agent publishes at once
  • Refuse with a reason the provider gets by e-mail; every listing keeps a decision log
  • A report to the agent after each delivery that changed something; monthly enquiry stats
  • Roles for an editorial team and for agents with their own login

Trust & safety

  • Every listing says who is behind it: estate agent or private offer, and “known to” your site
  • A safety note above the contact form: no money before a viewing
  • “Report this listing” with a reason; logged, never an automatic takedown
  • Relay form: the owner’s address never appears; nothing stored but a counter; no cookies
  • Photos lose GPS and camera data; the street shows only when the provider allows it
  • Private offers expire after 60 days; owners answer by signed link, no login

Germany & Spain rules

  • Germany: no house or flat goes online without the energy-certificate details (§ 87 GModG)
  • Spain: energy letters for consumption and emissions
  • Regional tourist-rental numbers, from Canarias to Euskadi
  • Agent register numbers in Catalunya and Valencia; the DIA note in Andalucía
  • Rent rules: Catalan reference index, large-landlord notice, no agency fee for tenants

OpenImmo & Kyero

  • OpenImmo import, the German standard of estate agents’ software
  • Full and partial sync; a full delivery that would withdraw more than half the stock is stopped
  • Kyero v3 import for Spain, by upload or by feed URL, fetched every 4 hours
  • OpenImmo-Feedback XML with every enquiry, so the agent’s CRM files the lead
  • PDF exposés and floor plans; photos de-duplicated by content
  • Hardened XML and ZIP reading: no DOCTYPE, capped sizes, flattened paths

AI-ready (MCP)

  • Optional read-only MCP endpoint at /<slug>/mcp
  • Three tools: search_listings, get_listing, list_agents
  • Serves only what the public page shows; enquiries stay on the page
  • Built on the WordPress Abilities API; usage counted per day and tool, no IPs

Multilingual

  • English, German (informal and formal) and Spanish
  • Numbers, money and dates in the site’s language
  • schema.org RealEstateListing data on every listing page
  • Kyero descriptions: the site’s language first, all languages kept

Germany & Spain

The law of the ad, built in.

Choose your market in the settings. Estatequay knows what an ad there must show, holds listings that miss it, and prints the notes on the page in the reader’s language.

Germany

On the listing page

Energy demand certificate · Final energy demand 98 kWh/(m²·a) · Energy source gas · Year built 1996 · Energy efficiency class C

  • § 87 GModG: kind of certificate, demand or consumption, main energy source, year built, class
  • Applies to every building, not to land, farmland or parking
  • Incomplete details: the import holds the listing and the admin refuses to publish it
  • OpenImmo publishing windows: held until the start date, offline after the end date

Spain

On the listing page

Energy rating: consumption E · emissions D · Tourist rental registration no. VFT/MA/12345

  • Energy letters for consumption and emissions; the certificate must exist before the ad
  • Tourist rentals: the regional number in Canarias, Baleares, Catalunya, Valencia, Galicia and Euskadi
  • Agents: register number in Catalunya and Valencia; the DIA note in Andalucía
  • Rentals: Catalan reference index, large-landlord notice, no agency fee for tenants

The rules follow primary legal sources as of October 2026. They help you get ads right; they are not legal advice.

AI-ready

Your listings, readable by AI assistants.

Switch on one setting and your site serves its listings over the Model Context Protocol. Assistants can search them, read one, and list the agents. Read-only, and only what the public page already shows.

  • Off by default; one checkbox in the settings
  • Tools: search_listings, get_listing, list_agents
  • No owner contact data, nothing waiting for approval
  • Counted per day and tool, without IPs
  • Needs WordPress 6.9 or later (Abilities API)
A search, simplified
→ POST /properties/mcp
{
  "method": "tools/call",
  "params": {
    "name": "search_listings",
    "arguments": {
      "town": "Nerja",
      "offer_type": "sale",
      "max_price": 400000
    }
  }
}
← structuredContent
{
  "total": 3,
  "listings": [{
    "title": "Village house with patio",
    "price": 385000,
    "price_label": "€385,000",
    "url": "https://example.org/properties/village-house-patio/"
  }, …]
}
Every result carries the listing’s URL: enquiries stay on your page, with its form, spam guards and safety note.

Download

Get Estatequay.

One zip, ready for Plugins → Add New Plugin → Upload Plugin. Not on wordpress.org yet: download it here.

Download estatequay-1.0.0.zip

Stable link to the latest version https://estatequay.com/downloads/estatequay-latest.zip

Version
1.0.0
Released
Size
168 KB
SHA-256
69bbe3e5f527836eddbf7b899e3eb84cf4e6de3f74b81d1f912d56e3f384b526

Check the file: sha256sum estatequay-1.0.0.zip · .sha256

Requirements

  • WordPress 6.5 or later
  • PHP 8.1 or later, with the zip, GD, mbstring, SimpleXML and DOM extensions
  • WordPress 6.9 or later for the MCP endpoint
  • For agents’ uploads: an SFTP account per agent on your server

Install in four steps

  1. Upload the zip under Plugins → Add New Plugin → Upload Plugin and activate it.
  2. Under Properties → Imports, set your site name, contact address, area and market (de or es).
  3. Put the shortcode [estatequay] on the page that lists your properties.
  4. Add your first agent with an inbox or a feed URL, or enter a private offer.

FAQ

Questions, answered.

What does “Estatequay” mean?

Estate + quay: the harbour where listings arrive, from agents’ software and from private owners. Say it like “estate key”.

Is it really free?

Yes. Estatequay is licensed under the GPL-2.0-or-later. There is no paid edition, no licence key and no feature held back.

Why is it not on wordpress.org?

Not yet. Until then, download the zip on this page. WordPress will not update it automatically: check this page for new versions, or use the stable link to the latest zip.

Do I need estate agents to use it?

No. Your editors can enter private offers by hand. Agents can join later, with an SFTP inbox for OpenImmo or a Kyero feed URL.

Which agents’ software can deliver listings?

Anything that exports OpenImmo, the German standard most agency software speaks, or Kyero v3, the open format of Spanish portals. A test inbox lets an agent check the first export without publishing anything.

Which countries does it support?

WordPress runs anywhere, and so does the plugin. The built-in ad rules cover Germany and Spain; you choose the market in the settings.

Does it work with my theme?

Yes. Your theme renders the frame and the title; Estatequay fills the content area of the listing page and loads its small stylesheet only on listing pages.

Does the plugin set cookies or track visitors?

No. The contact form fights spam without cookies (a hidden field, a link limit and a rate limit), and agents’ statistics count enquiries, not visitors.

Is this legal advice?

No. The ad rules follow primary legal sources and help you get ads right, but the responsibility for an ad stays with the site and the provider.

Where can I see it in action?

On the property page of ebersheim.de, the village portal Estatequay was first built for.