Title: KG rEstate &#8211; Real Estate
Author: kenneth3d
Published: <strong>November 13, 2026</strong>
Last modified: November 13, 2026

---

Search plugins

![](https://ps.w.org/kg-restate/assets/banner-772x250.png?rev=3801315)

![](https://ps.w.org/kg-restate/assets/icon-256x256.gif?rev=3801247)

# KG rEstate – Real Estate

 By [kenneth3d](https://profiles.wordpress.org/kenneth3d/)

[Download](https://downloads.wordpress.org/plugin/kg-restate.1.1.4.zip)

 * [Details](https://wordpress.org/plugins/kg-restate/#description)
 * [Reviews](https://wordpress.org/plugins/kg-restate/#reviews)
 *  [Installation](https://wordpress.org/plugins/kg-restate/#installation)
 * [Development](https://wordpress.org/plugins/kg-restate/#developers)

 [Support](https://wordpress.org/support/plugin/kg-restate/)

## Description

**KG rEstate** helps independent real estate advisors manage properties, publish
searchable catalogs and receive client inquiries in WordPress.

Catalogs and contact forms can be placed through WordPress shortcodes. Check their
layout and behavior with your theme, page builder and optimization tools before 
deploying an update. The plugin does not require Elementor.

### Key Features:

 * **Complete Property Management**: Publish and manage listings with prices, operation
   types (Sale, Rent, Lease), HOA/maintenance fees, built area and land size, bedrooms,
   bathrooms, and garages.
 * **Interactive Catalog with Dynamic AJAX Filters**: Real-time search by keyword,
   property type, operation status, and price sorting without full-page reloads.
 * **Integrated OpenStreetMap & Leaflet Maps**: Interactive geolocation with custom
   pins, mobile touch navigation, and real-time synchronization with property cards.
 * **Sliders & Carousels**: Image sliders with touch gestures, optional autoplay
   and a full-screen lightbox.
 * **Direct Lead Capture**: Floating contact form on single property pages and instant
   direct WhatsApp chat buttons with zero third-party commissions.
 * **Modern SaaS Admin Dashboard**: Intuitive admin interface with quick view, fuzzy
   search, bulk status actions, and streamlined property editor.
 * **Visual Shortcode Generator**: Create custom grid, carousel, or complete catalog
   configurations with live real-time previews (Desktop and Mobile) and 1-click 
   shortcode copying.
 * **Photo Protection & Watermarks**: Customizable image watermarks with position,
   opacity, and size controls, plus optional right-click save protection.
 * **Spanish and English Interface**: Includes a bilingual dictionary and gettext
   strings. Validate translations with your site’s language configuration.

### Bundled Resources

The plugin is licensed under GPLv2 or later. Its full GPL version 2 text is included
in LICENSE.txt. Third-party copyright notices and licenses remain separate.

Leaflet 1.9.4 is included locally under the BSD 2-Clause license. Its copyright 
and license are retained in public/licenses/leaflet-LICENSE.txt. The package includes
the required images next to the Leaflet stylesheet and readable JavaScript in public/
js/leaflet-src.js. Source and distribution: https://github.com/Leaflet/Leaflet/tree/
v1.9.4 and https://leafletjs.com/download.html. See THIRD-PARTY-NOTICES.txt for 
file locations and provenance.

The original local sample illustrations have their notice in public/images/LICENSE.
txt.

Inline interface icons use Feather 4.29.2 (MIT) and Lucide 0.468.0 (ISC, including
Feather-derived portions). Social platform SVGs use Bootstrap Icons 1.11.3 (MIT).
The 27 local country flags use flag-icons 7.2.3 (MIT). Complete notices are retained
in public/licenses/; sources and adaptations are described in THIRD-PARTY-NOTICES.
txt. Only the SVG artwork is used; Bootstrap and flag-icons JavaScript, CSS and 
icon fonts are not loaded. Icon software licenses do not grant general rights to
platform trademarks or imply endorsement.

The complete reference icon catalogs and development audit tools are not shipped.
WordPress-provided assets such as jQuery and Dashicons are used through WordPress
rather than copied into the plugin. The distributed CSS has no remote font import
or bundled font files.

### Third-Party Services

The plugin uses the following external services when their features are used. No
paid map API key is required. Leaflet code and the plugin’s sample illustrations
are included locally.

 * **OpenStreetMap Tile Service**:
    - **Service Provider**: OpenStreetMap Foundation (OSMF)
    - **Purpose**: Provides map tile images to visually display property locations
      on catalog and single listing maps.
    - **Data Transmitted and Timing**: When an interactive map loads or its view
      changes, the browser requests tiles from `tile.openstreetmap.org`, sending
      tile coordinates (`x`, `y`, `z`), its IP address and standard HTTP metadata
      such as browser information and, depending on browser policy, a referrer. 
      Tile coordinates describe the map area being viewed. The plugin does not send
      lead form fields to the tile service.
    - **Tile Usage Policy**: https://operations.osmfoundation.org/policies/tiles/
    - **Terms of Use**: https://wiki.osmfoundation.org/wiki/Terms_of_Use
    - **Privacy Policy**: https://wiki.osmfoundation.org/wiki/Privacy_Policy
 * **OpenStreetMap Nominatim**:
    - **Service Provider**: OpenStreetMap Foundation (OSMF).
    - **Purpose**: Converts an address or place name entered in an administrator’s
      map search into coordinates.
    - **Activation**: External address search is disabled until an administrator
      chooses and saves a provider in Settings > Catalog, Search & Map > Map. Selecting
      public Nominatim also requires an explicit acknowledgement of its usage policy.
      Manual pin placement and saved locations remain available. This applies to
      existing installations without a provider selection as well as new installations.
    - **Data Transmitted and Timing**: A property editor’s explicit Search/Enter
      action sends the text to an authenticated WordPress REST endpoint. On a cache
      miss, the server sends it to `nominatim.openstreetmap.org`, with a language
      preference and a User-Agent identifying KG rEstate, its version and the site’s
      home URL. The provider receives the hosting server’s IP address and normal
      HTTP metadata, rather than a direct browser search request. Contact form fields
      are not included. Do not submit personal or confidential information.
    - **Request Handling**: One outgoing search at a time per WordPress site, followed
      by a cooldown exceeding one second. Successful results are cached locally 
      for 24 hours; empty results for 10 minutes. Provider errors are not cached
      as search results. There is no autocomplete, scheduled search or bulk geocoding.
      Search results only change the editor’s form when selected by its search action;
      they do not save a property automatically.
    - **Provider Choice**: The administrator can disable search or switch to a public
      HTTPS Nominatim-compatible endpoint without updating the plugin. Custom providers
      must accept q, format=jsonv2 and limit, and return a JSON list with lat, lon
      and display_name. Their own terms, privacy policy and access requirements 
      apply. Query-string credentials and private network endpoints are not supported.
    - **Account**: Public Nominatim needs no API key but has limited capacity and
      is intended here for occasional, moderate manual use. Its usage policy and
      availability must be considered when choosing it for a commercial site. OpenStreetMap
      attribution links are displayed on the maps.
    - **Terms of Use**: https://wiki.osmfoundation.org/wiki/Terms_of_Use
    - **Usage Policy**: https://operations.osmfoundation.org/policies/nominatim/
    - **Privacy Policy**: https://wiki.osmfoundation.org/wiki/Privacy_Policy
 * **WhatsApp**:
    - **Purpose**: Opens a conversation with the configured advisor, or a customer
      when an administrator follows a reply link.
    - **Data Transmitted and Timing**: Only when a WhatsApp link is followed, `api.
      whatsapp.com` or `wa.me` receives the destination phone number and any prefilled
      message encoded in that link. The message can include the property title and
      URL, and text entered by the visitor. WhatsApp also receives normal connection
      metadata. Opening a link does not itself send the prefilled message to the
      recipient; sending is controlled in WhatsApp.
    - **Account**: Messaging is subject to WhatsApp’s account and service requirements.
      The plugin does not request WhatsApp credentials or use the paid Business 
      API.
    - **Terms of Service**: https://www.whatsapp.com/legal/terms-of-service
    - **Privacy Policy**: https://www.whatsapp.com/legal/privacy-policy
 * **YouTube**:
    - **Purpose**: Displays a video when a YouTube URL has been configured for a
      property.
    - **Data Transmitted and Timing**: The page shows a local notice and a play 
      button. When the visitor activates the button, the browser loads the privacy-
      enhanced player from `www.youtube-nocookie.com` and may connect to associated
      media servers. Requests include the video identifier, IP address and browser
      metadata. YouTube handles any cookies and account information according to
      its policies.
    - **Account**: The plugin requires no YouTube API key; playback remains subject
      to YouTube’s restrictions.
    - **Terms of Service**: https://www.youtube.com/static?template=terms
    - **Privacy Policy**: https://policies.google.com/privacy

Configured social profile links open their destination when clicked. Icons are rendered
locally, rather than using embedded social feeds. Site owners should describe the
services they enable in their site’s privacy notice and configure consent controls
where needed.

Advisor avatars, watermark images and property media can use URLs chosen by the 
site owner. If these point to another host, the browser may send that host its connection
metadata and referrer according to browser policy when the image is displayed. The
plugin does not supply an external stock-photo provider for its sample illustrations.
Review any image/CDN providers and rights for the media you configure; they are 
separate from the plugin’s bundled resources. Watermarks and right-click controls
are presentation aids, not access control for original uploads.

## Screenshots

[⌊Interactive public catalog with instant search, pill filters, and grid layout.⌉⌊
Interactive public catalog with instant search, pill filters, and grid layout.⌉[

Interactive public catalog with instant search, pill filters, and grid layout.

[⌊Single property listing page with high-resolution image carousel, map, and contact
form.⌉⌊Single property listing page with high-resolution image carousel, map, and
contact form.⌉[

Single property listing page with high-resolution image carousel, map, and contact
form.

[⌊Modern SaaS admin dashboard to manage all properties with real-time fuzzy filtering.⌉⌊
Modern SaaS admin dashboard to manage all properties with real-time fuzzy filtering
.⌉[

Modern SaaS admin dashboard to manage all properties with real-time fuzzy filtering.

[⌊Interactive Shortcode Generator with live Desktop and Mobile previews.⌉⌊Interactive
Shortcode Generator with live Desktop and Mobile previews.⌉[

Interactive Shortcode Generator with live Desktop and Mobile previews.

[⌊General settings panel: branding colors, advisor profile, currency, watermarks,
and email notifications.⌉⌊General settings panel: branding colors, advisor profile,
currency, watermarks, and email notifications.⌉[

General settings panel: branding colors, advisor profile, currency, watermarks, 
and email notifications.

[[

## Installation

 1. Upload the provided plugin ZIP through **Plugins > Add New > Upload Plugin**, or
    upload its `kg-restate` folder to `/wp-content/plugins/`. For an existing private
    installation, use the package whose folder matches the installed plugin and choose
    WordPress’s replacement option. Installation through the WordPress Plugin Directory
    is available only after publication under the assigned slug.
 2. Activate the plugin through the **Plugins** menu in the WordPress admin dashboard.
 3. Follow the 3-step Welcome Wizard to set up your advisor profile, preferred currency,
    and automatically generate your main catalog page.
 4. Start adding listings via **KG rEstate > Add Property**.
 5. Insert your catalog anywhere using the shortcode `[kgrestate_properties]` or build
    tailored shortcodes via **KG rEstate > Shortcodes**.

## FAQ

### Is KG rEstate compatible with visual page builders like Elementor or Divi?

KG rEstate provides shortcodes usable in WordPress content and in builders that 
render WordPress shortcodes. Validate the specific theme/builder combination and
its styles; compatibility with every configuration is not guaranteed.

### Does KG rEstate require paid API keys for maps?

No. KG rEstate uses OpenStreetMap and Leaflet out of the box, meaning you don’t 
need to register credit cards or configure Google Maps API keys to get fully interactive
maps.

### Can I configure custom currencies and measurement units?

Yes. You can customize the currency symbol, ISO code (USD, EUR, GBP, CAD, MXN, etc.),
price formatting style, and area measurement units (m², sq ft, yd², v², or hectares)
in **KG rEstate > Settings**.

### Where are client inquiries delivered?

Inquiries are sent directly to the configured advisor’s email address and securely
stored in the WordPress database under the **KG rEstate > Inquiries** inbox.

### What inquiry data and submission controls does the plugin use?

The inbox stores the submitted name, email, phone, message, property context and
submission/mail status. An inquiry is saved before attempting email. Mail transport
acceptance does not guarantee delivery. General inquiries use this site’s name and
home URL; property inquiries use the published property’s title and URL from WordPress.

Public submissions require POST and a valid nonce, with server-side type and length
validation. A hidden optional trap field supplements these checks. Existing custom
forms without that field remain supported. Names allow up to 120 Unicode characters
and messages up to 5,000; oversized data is rejected rather than truncated. Phone
input remains optional at the server boundary for compatibility with custom forms.

Fixed ten-minute windows allow five validated attempts per contact email, thirty
per connection address, and 120 site-wide. Limits are shared across concurrent requests.
A limited request receives a retry interval and does not save an inquiry or send
email. An admitted attempt consumes allowance even if inbox storage or mail later
fails. These controls reduce repeated submissions; they do not identify every bot
or guarantee protection against distributed attacks.

The rate-control option stores window-specific HMAC identifiers derived from the
email and connection address using a site secret, plus counts; it adds no clear 
IP address or clear email to those counters. These identifiers are pseudonymous,
not guaranteed anonymous. The bounded option is replaced when a valid attempt reaches
a later window; expiry does not itself erase it at exactly ten minutes. Inbox inquiries
remain until manual deletion unless an administrator explicitly enables a reviewed
retention policy. There is no automatic deletion at 300 inquiries.

Connection limits use the web server’s REMOTE_ADDR, not client-supplied forwarding
headers. Shared networks or reverse proxies can share an allowance. Before deployment,
verify the hosting server’s trusted-proxy configuration and actual form behavior.
No external CAPTCHA service is contacted. Site owners should describe inquiry storage,
email handling and these controls in their privacy notice.

### Can WordPress export or erase a contact’s inquiry data?

Yes. KG rEstate registers providers for **Tools > Export Personal Data** and **Tools
> Erase Personal Data**. These use WordPress capabilities, request records and nonce
checks. The plugin adds no public export or deletion URL. Follow the native request/
confirmation workflow; authorized administrators retain WordPress’s ability to force
a request. Generating an export requires the ZipArchive support used by WordPress
itself.

The exporter includes the plugin’s contact fields, inquiry dates, property context,
read/mail status and that email’s submission count when present. It excludes the
advisor’s separate address, other contacts and shared network counters. Extension-
defined fields need their own exporter. Reports are paginated in groups of fifty.
If the requested contact’s data changes between pages, export stops and must be 
restarted from the beginning; unrelated contacts do not invalidate it. User text
is escaped for WordPress’s HTML report.

Erasure removes matching inquiry records, including additional fields on those records,
in batches without skipping a shrinking list. It preserves other contacts. An active
pseudonymous submission counter is reported as retained so erasure cannot immediately
bypass the submission limit. A later explicit erasure can safely clean expired counter
state. Repeated erasure is safe. These callbacks do not erase sent mail, backups,
other providers’ data or WordPress-managed privacy reports and request records. 
WordPress manages those reports separately.

The plugin also offers editable text in the WordPress privacy policy guide. It does
not publish or replace your policy page. Review its purposes, providers and actual
retention practices before publishing a policy.

### Can I configure inquiry retention?

Automatic cleanup is **disabled by default**. In **KG rEstate > Inquiries > Inquiry
retention**, propose a period from 1 to 3650 days, review the current eligible/protected
counts, then explicitly confirm and enable the reviewed policy. The displayed proposal
of 90 days is not an enabled policy or a legal recommendation. Review tokens expire
after ten minutes and are tied to the operator, site, inbox and policy. Saving does
not itself delete inquiries. A changed review must be prepared again.

New public inquiries record a server-generated UTC timestamp, also included in privacy
exports. Only records with a valid integer UTC timestamp are automatically eligible.
Older inquiries that have only a local date, invalid dates and future timestamps
are preserved. They can still be deleted manually or through the native privacy 
tools. No legacy dates are guessed or backfilled during an update.

When opted in, an hourly WP-Cron event removes at most fifty inquiries older than
the chosen period per execution, including unread inquiries. Ages use 24-hour UTC
days; a record exactly on the cutoff is preserved until it becomes older. More batches
may be needed after a backlog. Scheduling depends on WordPress traffic or a configured
server cron and does not guarantee deletion at the exact expiry time. Scheduling
failures and the last advisory result are shown in the private controls. Inspect
the real hosting configuration before deployment.

Disable cleanup directly to stop future deletion. Each write compares both the inquiry
snapshot and the active policy bytes atomically, so an obsolete worker cannot continue
after a policy change commits. Plugin deactivation removes its future cleanup events
while preserving policy and inquiries; reactivation can resume a previously enabled
policy. Updating from an installation without this policy leaves it disabled. The
cleaner does not erase sent emails, backups, WordPress privacy reports or other 
services’ data. Keep a recoverable backup and review your actual privacy policy 
before opting in.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“KG rEstate – Real Estate” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ kenneth3d ](https://profiles.wordpress.org/kenneth3d/)

[Translate “KG rEstate – Real Estate” into your language.](https://translate.wordpress.org/projects/wp-plugins/kg-restate)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/kg-restate/), check
out the [SVN repository](https://plugins.svn.wordpress.org/kg-restate/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/kg-restate/) by 
[RSS](https://plugins.trac.wordpress.org/log/kg-restate/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.4

 * Register shortcodes with the `kgrestate_` prefix across the catalog, galleries
   and contact forms.
 * Use the same names when detecting catalog pages and loading frontend assets.

#### 1.1.3

 * Use the official OpenStreetMap tile endpoint and display attribution on each 
   interactive map.
 * Isolate bundled Leaflet and distinguish legacy KG rEstate records from unrelated
   property post types.
 * Load the privacy-enhanced YouTube player only after the visitor chooses to play
   a video.

#### 1.1.2

 * Validate custom colors, card radii and contact form widths before rendering CSS.
 * Use the kgrestate prefix for new identifiers and preserve existing storage, shortcodes
   and endpoints during upgrades.

#### 1.1.1

 * Preserve the contact form’s own white surface on the home page when the theme’s
   outer panel is transparent, keeping advisor details readable.
 * Verify the supplied Astra child home with the contact shortcode at five desktop/
   mobile viewport widths.

#### 1.1.0

 * Harden administrative and REST permissions, metadata synchronization and native
   property input validation.
 * Preserve legacy shortcodes, API aliases and data identifiers for existing installations.
 * Add reviewed, explicit migrations to prefixed storage identifiers; updating plugin
   files does not automatically convert an existing catalog.
 * Load styles and scripts through WordPress APIs with conditional loading and explicit
   dependencies.
 * Bundle static map, icon, flag and sample resources locally with license/source
   notices.
 * Document external services and require an explicit geocoding provider choice.
 * Improve inquiry storage concurrency, submission limits, CSV safety, privacy export/
   erasure and optional reviewed retention.
 * Correct VIP controls, saved map locations, gallery indicators/transitions and
   contact form rendering, including mobile social links.
 * Improve localization and error handling in setup, previews and forms.

#### 1.0.6

 * Refined the home contact shortcode layout for social links and removed its duplicate
   inner card surface.

#### 1.0.5

 * Fixed the contact form shortcode to display the configured agent profile photo.

#### 1.0.4

 * Improved VIP property distinction with a more visible but restrained gold border.
 * Fixed VIP toggle state refresh and property location restoration in the modern
   editor.
 * Refined property gallery image indicators and their initial display.

#### 1.0.3

 * Complete optimization and coverage of English and Spanish built-in translations.
 * Added dedicated Operation column with badges (Sale / Rent / Lease) in the admin
   properties table.
 * Smart text truncation with ellipsis for long property titles to maintain table
   layout consistency.
 * Native pluralization support via `ngettext` filters.
 * Security enhancements, input unslashing, output escaping, and database query 
   preparation adhering to WordPress.org standards.

#### 1.0.2

 * Enhanced mobile responsiveness for map controls and filter toggles.
 * Performance optimizations for AJAX search queries.

#### 1.0.1

 * Fixed calculation and display logic for maintenance/HOA fees on rental properties.
 * Added support for customized direct WhatsApp chat message links.

#### 1.0.0

 * Initial stable release of KG OpenEstate.

## Meta

 *  Version **1.1.4**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [listings](https://wordpress.org/plugins/tags/listings/)[properties](https://wordpress.org/plugins/tags/properties/)
   [property management](https://wordpress.org/plugins/tags/property-management/)
   [real-estate](https://wordpress.org/plugins/tags/real-estate/)[realtor](https://wordpress.org/plugins/tags/realtor/)
 *  [Advanced View](https://wordpress.org/plugins/kg-restate/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/kg-restate/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/kg-restate/reviews/)

## Contributors

 *   [ kenneth3d ](https://profiles.wordpress.org/kenneth3d/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/kg-restate/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ko-fi.com/openestate)