Developer documentation for the security subsystem of the WPResidence real estate CRM. Entry point: libs/security.php. Nonce Helpers wpestate_crm_verify_ajax_nonce( $action, $nonce_key = ‘security’ ) Reads nonce from $_POST[$nonce_key]. Calls wp_verify_nonce(). Also requires is_user_logged_in(). On failure, sends wp_send_json_error and exits. Nonce Registry The frontend wpestate_crm_vars object, localized in wpestate-crm.php lines 130-158, exposes 17+ action-specific nonces, plus a […]
13. WPResidence / WPEstate CRM
CRM Security and Data Privacy
This article is for administrators and practice owners. It explains how the WPResidence real estate CRM protects your data, how to respond to privacy requests from prospects, and what the CRM does (and does not) do for you from a compliance standpoint. What Data the CRM Stores The CRM stores exactly the data you put […]
WPResidence CRM Installation and Updates — Developer Reference
Developer documentation for the activation and migration lifecycle of the WPResidence real estate CRM. Key files: wpestate-crm.php, libs/db-setup.php, libs/migration.php, uninstall.php. Plugin Constants WPESTATE_CRM_URL WPESTATE_CRM_DIR_URL WPESTATE_CRM_PATH WPESTATE_CRM_BASE WPESTATE_CRM_VERSION = ‘5.2.2’ Activation Routine wpestate_crm_functionality() // lines 331-376 of wpestate-crm.php Runs on register_activation_hook and is also invoked by wpestate_crm_check_plugin_functionality_loaded() on plugins_loaded when the stored DB version differs from […]
Installing and Updating the WPResidence CRM
The WPResidence real estate CRM ships as a companion plugin to the WPResidence theme. This article walks through installing it for the first time, what the plugin does on activation, and how to update it safely. Requirements WordPress 6.0 or later. PHP 7.4 or later (PHP 8.x recommended). WPResidence theme installed and active. At least […]
WPResidence CRM Database — Developer Reference
Complete schema reference for the WPResidence real estate CRM. All tables are created by libs/db-setup.php via dbDelta. The plugin intentionally uses custom tables rather than CPTs to keep CRM queries fast at scale. The Nine Tables Table Column count Primary purpose wp_wpresidence_crm_contacts 44 Master contact entity wp_wpresidence_crm_leads 14 Per-touchpoint lead rows wp_wpresidence_crm_enquiries 28 Raw form […]
Where Your CRM Data Lives
This article is for administrators who want a plain-English overview of where the WPResidence real estate CRM stores its data. You don’t need to open a database tool to follow along — we will explain what each table is for and why it matters. Nine Tables, One Database All your CRM data lives in your […]
WPResidence CRM Settings — Developer Reference
Developer documentation for the settings layer of the WPResidence real estate CRM. Lives in libs/settings.php. Option Storage All settings live in a single serialized option: wpestate_crm_settings. One row in wp_options keeps the entire configuration, reducing option lookups. Getter API wpestate_crm_get_setting( $key, $default = ” ) Reads from the wpestate_crm_settings array. Returns the value if present […]
The CRM Settings Page
The Settings page is where administrators customize the behavior of the WPResidence real estate CRM. Picklist values (lead sources, deal stages, task types), integrations (HubSpot, Twilio, webhooks), and global defaults all live here. Open WordPress Admin → WPEstate CRM → Settings. Access requires the manage_options capability. The Seven Tabs Contact Lists of values used across […]
WPResidence CRM Permissions — Developer Reference
Developer documentation for the permissions layer in the WPResidence real estate CRM. Entry point: libs/permissions.php. The manage_crm Capability Registered on activation via wpestate_crm_register_capabilities(); added to the administrator role by default. Removed on deactivation via wpestate_crm_remove_capabilities(). Every CRM operation first checks current_user_can(‘manage_crm’). Users without this capability see a permission error, or a redirect to the login […]
Permissions and Roles in the WPResidence CRM
The WPResidence real estate CRM has a simple but effective permission model. This article explains the three roles, what each can see and do, and how data is scoped for agents. The Three Roles Administrator Full access to the entire CRM. Administrators see every contact, every deal, every task, every activity — regardless of who […]
WPResidence CRM Field Renderer — Developer Reference
Developer documentation for the field renderer of the WPResidence real estate CRM. Lives in libs/field-renderer.php and libs/metaboxes.php. Field Type Registry Supported types: input — short text textarea — long text picklist — dropdown from a settings key date — formatted via get_option(‘date_format’) number — locale-formatted via number_format_i18n() taxonomy — references a taxonomy term by ID, […]
Custom Fields and the Field Renderer in the WPResidence CRM
This article covers how the WPResidence real estate CRM organizes the fields you see on Contact and Lead forms — what types exist, how they are grouped, and how to customize the values behind dropdown pickers. What “Custom Fields” Means in This CRM In the current release, fields are predefined in code rather than user-configurable. […]
HubSpot Integration in the WPResidence CRM
The WPResidence real estate CRM integrates with HubSpot out of the box. Every contact you create, every deal you open, every stage change you make in the WPResidence CRM is pushed to HubSpot in real time. If you already run HubSpot as your central sales platform, this is how you keep the two in sync […]
WPResidence CRM CSV Import and Export — Developer Reference
Developer documentation for the CSV subsystem of the WPResidence real estate CRM. Entry point: libs/csv-functions.php. Supported Entities Contacts, leads, enquiries, deals, tasks. Export is gated to contacts, deals, tasks in the hardcoded whitelist; import supports all five. Export Property Value AJAX action wpestate_crm_export_csv Nonce wpestate_crm_nonce (security param) Capability wpestate_crm_user_can(‘import_export’, ‘view’) Function wpestate_crm_export_csv($entity_type, $args) CSV Output […]
CSV Import and Export in the WPResidence CRM
The WPResidence real estate CRM supports CSV import and export for contacts, leads, enquiries, deals, and tasks. Bring in a spreadsheet of existing contacts, or pull your CRM into a spreadsheet for analysis — both paths work. Export On any list page (Contacts, Deals, Tasks) click the Export CSV button. The CRM generates a UTF-8 […]
WPResidence CRM HubSpot Integration — Developer Reference
Developer documentation for the HubSpot integration in the WPResidence real estate CRM. Code lives in libs/hubspot/, main file libs/hubspot/hubspot.php. Full architectural overview is in the HubSpot CRM integration guide. API Version: HubSpot CRM v3. Base URL: https://api.hubapi.com/crm/v3/. Auth: Bearer token (Private App access token). HTTP client: wp_remote_post(), wp_remote_get(), wp_remote_request(). Settings (dual source) Settings are read […]
Webhooks in the WPResidence CRM
Webhooks are how the WPResidence real estate CRM talks to the rest of the world. Every time a contact is created, a deal is won, or a form is submitted, your CRM can POST a JSON payload to a URL of your choice, powering Zapier workflows, Make scenarios, custom dashboards, or a second CRM you […]
WPResidence CRM Webhooks — Developer Reference
Developer documentation for the webhook subsystem of the WPResidence real estate CRM. Lives in libs/webhook-functions.php. Two Configuration Paths The plugin supports two configuration styles: Structured config – option wpestate_crm_webhooks, an array of {url, events, active, secret} objects. Read via wpestate_crm_get_webhook_config(), written via wpestate_crm_save_webhook_config(). Simple settings – crm_webhook_url + crm_webhook_events (comma-separated). Used by the single-webhook admin […]
Twilio SMS Notifications in the WPResidence CRM
The WPResidence real estate CRM supports SMS alerts through Twilio. When a new lead arrives, the assigned agent’s phone gets a text within seconds — even if they are nowhere near a computer. This article walks through configuring Twilio, customizing the SMS template, and sending a test message. What You Need A Twilio account (free […]
WPResidence CRM Twilio SMS — Developer Reference
Developer documentation for the Twilio SMS integration in the WPResidence real estate CRM. Entry point is libs/twilio.php. Send API wpestate_crm_send_notification_sms( $event, $data ) Flow: Check global flag crm_twilio_enabled. Abort if falsy. Check per-event flag crm_notify_sms_{event}_enabled. Defaults to true unless explicitly ‘0’. Validate all three credentials present (crm_twilio_account_sid, crm_twilio_auth_token, crm_twilio_from_number). Determine recipient phone: $data[‘agent_phone’], or user […]
Email Notifications in the WPResidence CRM
The WPResidence real estate CRM sends six kinds of email notifications automatically. Each one can be edited, enabled, or disabled per your preferences. This article explains what each notification does, where to customize it, and how placeholders work. The Six Notification Events Event When it fires Default recipient New contact A contact is created (manually […]
WPResidence CRM Email Notifications — Developer Reference
Developer documentation for the email notifications module of the WPResidence real estate CRM. Entry point is libs/notifications.php. Send API wpestate_crm_send_notification_email( $event, $data ) Flow: Read subject and body from settings (wp_estate_subject_crm_notify_{event} and wp_estate_crm_notify_{event}). If either is empty, abort — the event is effectively disabled. Resolve placeholders via wpestate_crm_resolve_placeholders(). Determine recipient: $data[‘recipient_email’] → $data[‘agent_email’] → site […]
How Contact Forms Auto-Create Records in the WPResidence CRM
Most records in your real estate CRM arrive without you ever having to type them. Every time a visitor submits a contact form on your WPResidence site, the CRM receives the submission, matches it against an existing contact (or creates a new one), records an enquiry, and logs the event to the activity timeline. This […]
WPResidence CRM Auto-Create From Forms — Developer Reference
Developer documentation for the form-to-CRM pipeline in the WPResidence real estate CRM. Entry point is libs/auto-create.php. Entry Point wpestate_crm_process_form_submission( $form_data ) Called by the theme’s form handlers with a structured array that identifies the form, the prospect, and the target property or agent if any. Expected Form Data contact_name – split into first_name, last_name on […]
Viewed Listings Tracking in the WPResidence CRM
Every time a known contact opens a property page on your site, the WPResidence real estate CRM records it. The result: a precise list, per contact, of which properties they have looked at and when. This is one of the most powerful signals for timely, relevant follow-up. How the CRM Knows Who Is Viewing The […]
WPResidence CRM Viewed Listings Tracking — Developer Reference
Developer documentation for the viewed-listings tracker in the WPResidence real estate CRM. Lives in libs/viewed-functions.php. Storage – wp_wpresidence_crm_viewed_listings Columns: id (PK), contact_id, listing_id, viewed_at. No UNIQUE constraint, so multiple views are permitted. Indexes on contact_id, listing_id, and composite (contact_id, viewed_at). Contact Resolution wpestate_crm_resolve_contact_id() returns the current contact ID using: Cookie priority: reads wpestate_crm_contact_id cookie and […]
Property Matching in the WPResidence CRM
Property matching is one of the highest-value features in the WPResidence real estate CRM. You capture a buyer’s preferences once — price, beds, baths, size, location, property type — and the system surfaces every listing that fits them, and can email them the matches in a branded email, any time you want. Capturing Buyer Preferences […]
WPResidence CRM Property Matching — Developer Reference
Developer documentation for the matching engine in the WPResidence real estate CRM. The engine lives in libs/matching-functions.php and matches buyer preference fields stored on contacts against estate_property posts. Core Function wpestate_crm_match_properties( $contact_id, $args = [] ) $args supports per_page, paged, agent_only. Returns {post_ids: int[], count: int}. Input Fields Used Read from the contacts table: pref_property_type, […]
Bulk Actions in the WPResidence CRM
Bulk actions let you operate on many records at once. Delete 200 stale contacts, reassign a portfolio of deals to a new agent, mark 50 tasks complete — all from the same list view you already use. This article covers every bulk action available in the WPResidence real estate CRM. How It Works Open a […]
WPResidence CRM Bulk Actions — Developer Reference
Developer documentation for the bulk action subsystem in the WPResidence real estate CRM. Covers the AJAX endpoints, operations matrix, and helper functions in libs/bulk-functions.php. AJAX Endpoints Action Entity wpestate_crm_bulk_contacts Contacts wpestate_crm_bulk_deals Deals wpestate_crm_bulk_tasks Tasks wpestate_crm_bulk_activities Activities All four endpoints verify nonce via check_ajax_referer(‘wpestate_crm_nonce’, ‘security’). Common Request Parameters ids – array of integer IDs. operation – […]
Adding Notes in the WPResidence CRM
Notes are the human memory of your real estate CRM. They are the one-liners after a phone call, the context after a viewing, the reminders about a client’s preferences that the system cannot detect on its own. This article explains where to add notes, how they are organized, and how to use them to build […]
WPResidence CRM Notes — Developer Reference
Developer documentation for the Notes module in the WPResidence real estate CRM. Notes are polymorphic. A single table stores notes for contacts, leads, enquiries, deals, and tasks. Storage – wp_wpresidence_crm_notes Created in libs/db-setup.php. Columns: Column Purpose note_id Primary key entity_type One of: contact, lead, enquiry, deal, task entity_id Foreign key into the matching entity table […]
CRM Automations in WPResidence
The Automations module of the WPResidence real estate CRM lets you build rules that run themselves. When a new lead arrives, auto-create a follow-up task. When a deal sits in Negotiation for two weeks, ping the agent. When a contact has no activity for 30 days, send a re-engagement email. That kind of thing. Automations […]
WPResidence CRM Automations — Developer Reference
The automations engine is the workflow layer of the WPResidence real estate CRM. This article documents the rule storage, the condition evaluator, the 8 action handlers, and the cron architecture. Files libs/automations.php – CRUD, condition evaluator, action executor, AJAX handlers, default seeder. libs/automations-cron.php – hourly batch processor, event dispatcher, queued executor. page-templates/wpestate-crm-dashboard_automations.php – list template. […]
Stats and Reports in the WPResidence CRM
The Stats page of the WPResidence real estate CRM is your performance dashboard. Five KPI tiles summarize the state of your business at a glance, and six interactive charts go deeper into where your activity is. Opening the Stats Page Click CRM → Stats. What you see depends on your role: admins see stats for […]