Introduction
Thank you for purchasing EstateAI! Everything below is organised in the order you'll actually need it — start at Installation, follow the Quick Setup, and use the reference sections as you go.
Property types, locations, amenities, galleries, keyless maps and a visit booking engine.
Statuses, sources, auto-assignment, scoring, follow-ups and a full activity timeline.
Natural-language search, grounded chatbot, compare with AI verdict, copywriting and lead scoring.
Click-to-chat and Meta Cloud API automation with a queue, templates and logs.
Requirements
- WordPress 5.8+ and PHP 7.4+
- Optional: an OpenAI API key — only for the AI features. Everything else works without it, and each AI feature has a non-AI fallback.
- Optional: a Meta WhatsApp Cloud API account — only for automatic sending. Click-to-chat needs just a phone number.
Installation
- UploadIn WordPress admin go to Plugins → Add New → Upload Plugin.
- Install & activateChoose
estateai.zip, click Install Now, then Activate. - DoneA new EstateAI CRM menu appears. Activation creates the CRM tables, the EstateAI Agent role and background schedules automatically.
Quick Setup — recommended order
- General settings
Settings → General: company info, currency symbol & format, area unit, listings per page. - Brand colors
Settings → Colors: pick accent + highlight; EstateAI generates the full shade palette for admin and front-end. - Add taxonomiesProperty Types, Locations, Amenities, Statuses. The AI search learns its vocabulary from these.
- Add propertiesWith photos, price, details and a gallery.
- Create agents
Agents → Add, then assign properties to them. - Create pagesHome (AI search + featured), Properties (
[estateai_properties]), Compare ([estateai_compare]). - Enable AIAdd your OpenAI key under
Settings → AI, switch on Search, Chatbot and Compare. - Set visit availability
Site Visits → Availability: days, hours, slot length, notice period. - Connect WhatsAppStart with click-to-chat; upgrade to the Cloud API later. Enable the triggers you want.
- Test the journeySearch → shortlist → compare → chat → book a visit → check the lead in the CRM.
Properties
Properties are a custom post type with an archive at /properties and a purpose-built single template — gallery, facts, amenities, map, visit booking, inquiry form and an agent sidebar.
Detail fields
Property ID, price (with prefix/suffix), address, postal code, latitude/longitude, bedrooms, bathrooms, rooms, garages, area (+ unit), land area, year built, video URL and virtual tour URL.
Gallery
Pick any number of images in the Property Gallery box. The single template renders a hero image with a thumbnail switcher and responsive srcset.
Maps — no API key needed
Paste any of the following into the map field and EstateAI normalises it into a safe embed:
- A Google Maps iframe embed code
- A Google Maps link or short link (expanded automatically)
- Plain coordinates like
25.2048, 55.2708
Latitude/longitude auto-fill, zoom is configurable, and visitors get an "open in maps" link.
Featured & agent assignment
Tick Featured Property to surface a listing in [estateai_properties featured="1"]. Assign an agent from the sidebar — they get author-equivalent rights on that property, appear on its agent card, and receive its lead notifications.
Agents
Agents are WordPress users with the EstateAI Agent role, managed under EstateAI CRM → Agents:
- Profile — phone, WhatsApp number, agency, license number, experience, status
- Assigned Properties & Leads — everything belonging to the agent in one view
- Performance — listings, leads and conversion counts
Agents see only their own properties and CRM screens, controlled by Permissions.
Leads CRM
Every inquiry, chat capture, visit booking and AI-search callback becomes a lead under EstateAI CRM → Leads.
Pipeline
- Statuses — new, contacted, qualified, hot, converted, lost (fully editable)
- Sources — editable list (website, WhatsApp, referral, …)
- Score — 0–100; above the hot threshold a lead is flagged 🔥 hot
- Follow-ups — per-lead date/time; due follow-ups surface on the dashboard and can trigger WhatsApp reminders
- Activity timeline — every action on a lead is logged
Automation (Settings → CRM)
- Auto-assign — none, round-robin across agents, or a specific agent
- Duplicate check — match by phone, email or both, and merge instead of duplicating
- Defaults — default status, source and priority for new leads
Email notifications (Settings → Email)
Admin and agent notifications with editable subject/body templates, 13 placeholders and a test-send button.
Site Visit Booking
Visitors book viewings from the single property page or via [estateai_book_visit].
Availability engine
- Open days, start/end times, slot length (15–240 min)
- Capacity per slot, minimum notice hours, max days ahead, blackout dates
- Auto-confirm toggle and an optional video walkthrough mode
What happens on a booking
- Lead createdOr merged by the duplicate rules.
- Notifications sentAdmin + assigned agent emailed; WhatsApp queued if enabled.
- Cancel linkThe visitor receives a tokenised cancel link.
Manage bookings from the Calendar or All Bookings: confirm, complete, cancel, no-show, reschedule or delete — the lead and its timeline update automatically.
Inquiry Form
Rendered automatically on single properties (content and/or sidebar position) or anywhere via [estateai_inquiry_form].
Built-in spam protection
- Honeypot field + minimum-seconds timing check
- Blocked-words list and a maximum-links rule
- Per-IP hourly throttle with one-click admin reset
- Optional required email and GDPR consent text
AI Setup AI
Go to Settings → AI and add your OpenAI API key. Choose a model (gpt-4.1-mini default — fast and inexpensive) and a token limit.
AI Property Search AI
Shortcode: [estateai_ai_search]. Visitors type a sentence — "3 bedroom villa in Marina under 2M with a pool" — and it becomes structured filters (type, location, status, amenities, price, beds, baths, area, parking).
- Understood filters appear as removable chips; visitors add, drop or widen filters conversationally
- Shortlist ♥ — favourites collect in a tray, then compare or request a callback (creates a CRM lead with the full requirement attached)
- Works without JavaScript; shareable result links (
?estateai_q=…) - Settings: title, intro, placeholder, example queries, results, columns, rate limit
AI Chatbot AI
Shortcode: [estateai_ai_chat], plus an optional site-wide floating launcher. The chatbot is grounded: it can only reference real listings — hallucinated properties are filtered server-side.
- Multi-turn memory shared with the AI search (the "concierge") — budget, location and preferences persist across the session
- Shows property cards inline, asks clarifying questions, widens thin results
- Lead capture — after a configurable number of messages it asks for contact details; transcript + requirement brief are saved on the lead
Settings → AI and enable "floating" to show it site-wide — don't forget this on your demo site!AI Compare AI
Shortcode: [estateai_compare]. A side-by-side table (2–4 properties) of price, beds, baths, garages, area, type, location, status and amenities with per-row winners highlighted.
- AI verdict — a short judgement with pros/cons per property, weighed against the visitor's stated needs
- Auto-filled from the shortlist tray; shareable via
?estateai_compare=…
AI Assistant (Admin) AI
Under EstateAI CRM → AI Assistant, plus an inline panel on the property edit screen:
- Property description writer — from the fields on the edit screen (even unsaved), with tone instructions and Replace / Add-below buttons
- Lead scoring — 0–100 with reasoning, written back to the lead
- Lead summary — a one-paragraph brief of history and intent
- Property matching — ranks your inventory against a lead's requirements
- Follow-up & email generators — ready-to-send drafts
- WhatsApp message generator — friendly / professional / persuasive / concise
WhatsApp — Two Modes WA
| Click-to-Chat (default) | Cloud API | |
|---|---|---|
| Needs | Just a phone number | Meta Business + WhatsApp Cloud API credentials |
| Does | wa.me buttons on properties, floating button, lead buttons — pre-filled messages | Everything on the left plus automatic sending: notifications, follow-up reminders, queued delivery |
| Best for | Getting started in 2 minutes | Agencies that want automation |
Agent routing: enable "use agent number" so property buttons open a chat with the assigned agent instead of the company number.
Cloud API Setup WA
- Create a Meta appAdd the WhatsApp product at developers.facebook.com; note your Access Token and Phone Number ID.
- ValidateEnter both under
WhatsApp → API Setupand click Validate — EstateAI confirms the connection and shows your display number, verified name and quality rating. - TestSend a live test message from the same screen.
Automatic Notifications WA
Seven triggers, each with its own toggle, Meta template mapping and message body (WhatsApp → Notifications):
| Trigger | Fires when | Goes to |
|---|---|---|
lead_welcome | A new lead is created | The lead |
lead_assigned | A lead is assigned to an agent | The agent |
website_inquiry | An inquiry / visit booking is submitted | The lead |
property_shared | You share a property from the CRM | The lead |
follow_up_due | A follow-up is due (checked every 30 min) | The lead |
follow_up_agent | A follow-up is due | The agent |
admin_new_lead | A new lead arrives | Admin number |
All triggers ship disabled — enable the ones you want. ~22 placeholders are available across property, lead and general groups.
Message Templates WA
Five reusable local templates ship with the plugin (property inquiry, property details, lead follow-up, visit reminder, general enquiry). Create your own under WhatsApp → Message Templates — typed as property / lead / general, with the full placeholder reference on-screen. The AI message generator can also write one for you.
Queue & Logs WA
- Cloud API messages are queued and sent by a background worker every 2 minutes — batches of 50, up to 3 retries; permanent Meta errors fail fast with plain-English explanations
WhatsApp → Message Logshows every message with status, error details, retry / delete / clear actions and a "process queue now" button- The cron self-heals if a schedule is lost
Shortcodes Reference
Settings → Shortcodes.[estateai_properties] — listing grid/list
| Attribute | Values (default) | What it does |
|---|---|---|
layout | grid | list (grid) | Card grid or horizontal list |
columns | 1–4 (3) | Grid columns |
count | number | Listings per page |
type location status amenity | slug(s) | Filter by taxonomy terms |
featured | 0 | 1 (0) | Only featured listings |
agent | user ID | Only one agent's listings |
ids | comma-separated IDs | Specific properties |
orderby / order | date, title, price, rand… / ASC, DESC | Sorting (including price) |
pagination | 0 | 1 (1) | Show pagination |
image excerpt price meta button | 0 | 1 | Toggle card elements |
[estateai_properties featured="1" columns="3" count="6" orderby="price" order="DESC"]
All shortcodes
| Shortcode | Renders |
|---|---|
[estateai_properties] | Listing grid or list with filters, sorting and pagination |
[estateai_ai_search] | AI natural-language search with chips, shortlist and results |
[estateai_ai_chat] | The AI chatbot inline (floating launcher is a settings toggle) |
[estateai_compare] | Side-by-side comparison with AI verdict |
[estateai_book_visit] | The visit booking form (also auto-rendered on single properties) |
[estateai_inquiry_form] | The inquiry form (also auto-rendered on single properties) |
[estateai_whatsapp] | A WhatsApp chat button |
Settings Reference
| Tab | Controls |
|---|---|
| General | Company info · currency symbol, position, separators, decimals · area unit · listings per page · property map on/off + zoom · delete-data-on-uninstall |
| CRM | Default status/source/priority · auto-assign · follow-up days · hot-score threshold · duplicate check · activity logging |
| AI | OpenAI key · model · token limit · per-feature toggles for Search, Chatbot, Compare |
| Mode · numbers · buttons · agent routing · API credentials · triggers · templates | |
| Enquiry Form | Position · required email · consent text · anti-spam (honeypot, timing, blocked words, links, throttle) |
| From name/email · recipients · admin/agent toggles · templates with placeholders · test email | |
| Permissions | 8 capability groups × every role, with reset-to-defaults |
| Colors | Accent + highlight — a full shade ramp applied to admin and front-end |
| Shortcodes | Interactive builders and the full attribute reference |
Roles & Permissions
Activation creates the EstateAI Agent role: agents can create and manage their own properties, see their assigned leads and the visit calendar, but cannot touch other agents' listings or global settings. Administrators get every capability. Fine-tune per role under Settings → Permissions.
FAQ / Troubleshooting
The AI features don't respond
Check Settings → AI: is the API key saved and the feature's own toggle on? Rate limits may apply — logged-in admins bypass them.
WhatsApp messages stay "queued"
The queue runs on WP-Cron every 2 minutes. On low-traffic sites use Process queue now, or add a real cron job calling wp-cron.php. The schedule self-heals if lost.
Template message fails with error #132000
The variable count in your mapping doesn't match the approved Meta template. WhatsApp → Notifications shows a warning with the expected count for known templates.
The map doesn't show
Paste a Google Maps link, embed code or plain lat, lng into the property's map field, and check Show property map in Settings → General. No API key is required.
Inquiry form says "try again later"
The visitor hit the hourly throttle — adjust or reset it under Settings → Enquiry Form.
My styles look different from the demo
Set your brand colors under Settings → Colors. The front-end inherits your theme's fonts by design, so listings always match your site.
Changelog
Properties, Leads CRM, Agents, Site Visits, AI Search / Chatbot / Compare / Assistant, WhatsApp click-to-chat + Cloud API with queue and 7 notification triggers, inquiry form with anti-spam, email notifications, permissions manager, brand colors, 7 shortcodes.