Every release.
Fully documented.
MLS Genie™ ships updates weekly. This is the public record of every feature, fix, and improvement — version by version. Built from real agent feedback.
Release history
- Search Intent on lead profile — paid keyword (utm_term), organic referrer query (DuckDuckGo, Bing, Yahoo, Brave, Ecosia + 7 more), or inferred from landing-page slug.
- Assigned-agent pill becomes an inline dropdown — reassign a lead in one tap without leaving the profile.
- Auto-log every reassignment to Notes & Activity with the previous and new agent names.
- Server-side first-touch capture — reads HTTP referrer, Sec-Fetch-Site, and User-Agent directly from the request. Invisible to ad blockers, Brave/Safari/Firefox privacy modes, and visitors with JavaScript disabled.
- Honest source labels for "Direct" traffic — "Facebook App", "Instagram App", "TikTok App", "Gmail App", "Direct (typed or bookmark)", "Cross-site (referrer hidden)" — no more vague fallback.
- Hover tooltip on every Source value explaining exactly how the label was derived and how much to trust it.
- Hero row refinements on Lead Detail — assigned agent surfaced as a pill alongside the type badge, no scrolling required.
- Pipeline stage pill now coloured to match the stage (New = slate, Contacted = blue, Nurturing = amber, Hot = red, Under Contract = violet, Closed = green).
- Tighter visual rhythm — consistent padding across stage, type, and agent pills.
- Inline pipeline-stage dropdown on the Lead Detail page — change a stage in one tap without navigating to the board.
- Auto-logged stage transitions in Notes & Activity — *"Stage changed: New Lead → Contacted"* with timestamp + agent name on every move.
- Same code path as drag-drop on the Pipeline board — identical permissions, history-table writes, and notification hooks.
- Tracked Pages — pick non-property pages (Free Home Valuation, Schedule Tour, Contact, etc.) to surface on lead profiles.
- Two tiers: Conversion (gold-star highlight + optional real-time email alerts to the assigned agent) and Engagement (subtle eye icon, contextual logging only).
- Works for visitors who block Google Analytics — first-party tracker runs on your own domain, not subject to ad-blocker lists.
- Conversion hits add a new "Conversions" stat to the Site Activity card and appear in the chronological Visitor Journey timeline.
- Privacy-Conscious Visitor indicator — surfaced when a visitor's browser blocked Google Analytics (≈30–40% of real traffic today).
- Framed as a known, normal scenario rather than a data gap — hover tooltip educates the agent that contact details were still captured normally.
- Honest framing of attribution depth, not a "data missing" warning.
- Verified phone numbers now show a green checkmark next to the number on the Lead Detail page.
- Visual confirmation that Twilio cleared the number — no more hovering to read the tooltip.
- VoIP and unverified numbers keep their existing amber and red indicators.
- Form name now displays correctly on Forminator-sourced leads instead of the generic "Contact Form" placeholder.
- Switched to the documented Forminator_API for form lookup with a CPT-title fallback for resilience.
- GenieScout MLS Rules registry — self-healing install + backfill so the registry populates automatically on first load.
- Detection of multiple feeds (CRMLS + BBAOR + future additions) now correctly tags each listing's originating MLS.
- Added OriginatingSystemName to the Trestle $select across all three job paths — fixes MLS detection for multi-feed brokerages.
- First-touch attribution beacon now fires for every visitor on first landing, not just visitors arriving with UTM parameters.
- Captures the referrer header server-side so anyone who later submits a form has full attribution context, even days later.
- GA4 async enrichment pipeline — automatically queries Google Analytics for source, medium, campaign, device, and session count on every new lead.
- Retry schedule handles GA4's 24–48 hour processing delay; verified leads earn a green "Verified via GA" pill in their profile.
- GA4 Client ID captured at form-submit time from the `_ga` cookie — stored alongside every lead for cross-referencing GA sessions and audience export.
- Lead Action field — captures the form name (Forminator title, Houzez "Property Inquiry" / "Contact Agent" / "Schedule Tour", CF7 / WPForms / Elementor form name) on every submission.
- Campaign field — pulls first-touch utm_campaign for every lead and resolves it through your campaign mappings.
- Guaranteed-non-empty Source contract — every lead now lands with a human-readable source, no exceptions.
- Five-tier resolution: explicit upstream value → derived from UTM / cookie / referrer → form-name fallback → default-source floor → audit token stamped on the row.
- Sitewide visitor cookie and UTM capture — visitor identity persists across the entire site, not just property pages.
- A visitor who arrives via a Google Ads UTM, browses /about/, leaves, and returns days later still has full attribution when they submit a form on any page.
- Dual-column timestamps (local + GMT) across the activity table — eliminates a whole class of DST and timezone bugs.
- Role-based access system — `mlsg_agent`, `mlsg_manager`, `mlsg_team_admin`, `mlsg_team_lead` roles with the custom `mlsg_manage` capability gating every admin page.
- WordPress administrators automatically inherit `mlsg_manage` — no double-permission setup.
- GenieScout cron architecture hardened — MLSG_Cron_Manager always-loaded, schedules registered at every page load.
- Nightly imports trigger at 1am local time; refresh runs cursor-paginated batches of 50; jobs page run every 30 seconds with a 2-minute stagger to keep the host happy.
- Genie CRM — full standalone shell at /genie-crm/, no WordPress chrome, hardcoded asset injection so no theme dependency.
- Commission Manager, Lead Tags, CINC integration, and the Form Bridge module all ship inside the shell.
- GeoGenie™: Extracted all quarantine logic into new shared MLSG_GeoGenie class — single source of truth across all entry points.
- GeoGenie™: Phase 2 area string now built from listing's own MLSAreaMajor → City → PostalCode — works for every property regardless of import origin.
- GeoGenie™ batch: Added geocoded area centroid as third check; area_major and state now collected per listing.
- GeoGenie™ single: run_geogenie_single() now delegates to MLSG_GeoGenie::evaluate_single().
- GeoGenie™: Reimport from MLS now re-evaluates single-listing geo-validation.
- Phase 1: median centroid of sibling listings from same import job (50km threshold).
- Phase 2: Google-geocoded job area centroid (25km threshold, cached 30 days).
- Self-healing: listings that pass after coordinate correction are automatically un-quarantined.
- ListingGenie™ v1.0 — 6-step pre-listing package wizard.
- CMA packet with Include/Exclude toggles on comp cards.
- Pricing fields with Conservative/Recommended/Optimistic auto-compute (25th/50th/75th percentile $/sqft).
- Net Proceeds table and Comparable Sales Analysis on share page.
- DB schema v1.1: subject_address, subject_data_json, agent_notes, pricing_json columns added.
- Fixed Python string splice boundary error in content parser (content[end+4:] → content[end:]).
- Node.js PHP syntax scanner now runs on every modified file before zip assembly.
- Property data lookup caching improved to 24h transient.
- GenieLayers™ boundary packs (.mlsgpack format) — domain-locked HMAC-SHA256 license keys.
- Settings UI upload/remove for boundary packs.
- Big Bear AOR pack v1.0.2 — Moonridge, Sugarloaf, Big Bear City.
- BoundaryLabel now uses google.maps.OverlayView (no close buttons or tails).
- Google OAuth migration to the MLS Genie™ project.
- Root cause fix: nonce mismatch on Analytics connection.
- Houzez CRM reactivation confirmed non-conflicting with GenieCRM.
- Genie Social: migrated to new social publishing backend.
- All user-facing surfaces continue to display "Genie Social" — vendor never exposed.
- Fixed CSS/JS loading in genie-crm-shell.php (direct link/script tags, no wp_head dependency).