A deeply engineered WordPress plugin that syncs AppFolio listings, auto-generates AI content, manages showing bookings across multiple agents, runs a full REST API, and ships an Ad Manager — all in one system built from scratch.
AppFolio is the back office. But property managers still need a website that actually works for renters.
AppFolio is great at what it does — applications, payments, maintenance requests, owner reporting. What it doesn't give you is a branded, SEO-friendly, fully featured rental listing experience that lives on your own domain, ranks in Google, and lets potential renters interact with your inventory the way a 2025 website should.
Every module built to work independently and as a system — modular architecture, no monolithic file, each responsibility in its own class.
Pulls live listing data from AppFolio on a cron schedule and keeps your WordPress inventory in sync — automatically.
Fetches the AppFolio /listings index, extracts all detail URLs, and queues each one for full parsing — respecting rate limits and a configurable max-items ceiling.
Extracts address, rent, beds, baths, sqft, deposit, available date, pet policy, utilities, amenities, appliances, parking, laundry, fees, photos, and the full property description — from real DOM, not a feed.
Each listing becomes a native WordPress custom post type (lb_listing) — indexable by search engines, manageable in the WP admin, and available to any plugin or theme that can query posts.
Downloads and attaches the primary listing photo to the WordPress media library, so listings have real featured images rather than external references that break when AppFolio changes a URL.
Auto-detects YouTube tour videos embedded in the AppFolio gallery and extracts the video ID, URL, and timestamp. Per-listing admin override lets managers set a different video — manual always wins over scraped.
Tracks listing state across available, coming_soon, pending, rented, and off_market — with visibility controls (public / unlisted) per listing. State changes trigger notifications and Ad Manager alerts automatically.
A full shortcode library and Elementor-compatible output that renders listings anywhere on any WordPress page or theme.
Full listing grid with live AJAX filtering — search, min/max rent, beds, baths, pets, side of town. Handles 100+ listings without a page reload. Degrades gracefully with no-JS fallback.
Responsive photo carousel for each listing's full image set — lightbox-ready, keyboard navigable, mobile-swipe compatible.
Embedded map for each listing address — configurable provider, no API key needed for the default embed mode.
[lb_summary], [lb_description], [lb_rental_terms], [lb_pet_policy], [lb_amenities], [lb_utilities], [lb_appliances], [lb_open_houses], [lb_video], [lb_cta] — every data field independently addressable.
Carousel and hero-banner shortcodes pull featured listings with optional "side of town" filtering via a ZIP-code reverse-lookup helper — so a page can show only West Toledo rentals automatically.
Per-listing title tags, meta descriptions, and OpenGraph data are written automatically from AI-generated or scraped content — every listing page is search-engine-ready with zero manual entry.
Generates SEO-optimized headings, descriptions, and meta descriptions for every listing using OpenAI, Google Gemini, or Grok — automatically, on a 5-minute cron.
OpenAI, Google Gemini, and Grok (xAI) are all supported behind a single interface. Switching providers is a settings change — no code change needed.
Builds a hash of the source fields that feed the AI prompt. If the listing data hasn't changed since last generation, AI is skipped — no wasted API calls on stale listings.
After 3 consecutive generation failures, a listing is parked — it won't consume cron ticks or API quota until an admin resets it manually. One bad listing can't exhaust the entire budget.
A dashboard button triggers a bounded catch-up batch (up to 15 listings or 20 seconds) using the same generator the cron uses — so a newly configured site can backfill immediately.
Blank API key fields on save preserve the stored key rather than erasing it. Accidental key loss is structurally impossible — you must type a new value to change a key.
AI produces a clean page heading, a full property description written in natural language, and an SEO meta description — each stored in separate meta fields and independently addressable.
A complete showing-management system built into WordPress — scheduling, conflict detection, multi-agent availability, email workflows, and shareable calendars.
Multiple showing agents each get their own 7-day availability grid. Available times are combined as a union — a slot is offered if any agent covers it. Different people can show on different days with no overlap conflicts.
Booked slots are blocked from the visitor calendar in real time. Conflict detection works correctly across non-UTC timezones — a bug that broke every other implementation has been fixed at the cache schema level.
If a requested slot doesn't work, the property manager can propose an alternative time directly from the admin — the visitor receives a new confirmation request rather than a flat decline.
Templated, configurable emails cover every event: request received, confirmed, declined, counter-proposal, reminders (configurable intervals), cancellation, and property-removed notices. Em-dash renders correctly in all mail clients.
Every confirmed showing generates an ICS file the visitor can add to Google Calendar, Apple Calendar, or Outlook — from a link in the confirmation email, no account required.
Separate open house scheduling, RSVP flow, and daily digest email to the property manager — parsed directly from AppFolio listing data when available, manually manageable per-listing otherwise.
A clean, versioned REST API at /wp-json/lb/v1/ — designed for AJAX-powered filtering on large inventories and external integrations.
GET /lb/v1/listings with full filter support: search (address AND title), min/max rent, beds, baths, pets, availability state, side of town. Search actually searches addresses — the core WP search bug is patched.
GET /lb/v1/listings/filters returns the available filter options from the live inventory — so dropdowns always reflect what's actually in stock, not hardcoded values.
GET /lb/v1/listings/{id} returns the full data payload for a single listing — everything the plugin stores, in one clean JSON response. Ready for property inspection tools, mobile apps, or partner integrations.
Separate showing endpoints handle available slot queries and booking submissions — the same AJAX engine the frontend uses, exposed as proper REST routes for any consumer.
Generates shareable links and email-share flows per listing with a real IP-based rate limiter (correctly resolves the real client IP behind Cloudflare and nginx reverse proxies).
Full plugin settings and listing data can be exported to a manifest.json and re-imported — with server-side validation that rejects PHP serialized payloads in imported meta. Safe for complete site migrations.
A separate plugin (ListingBridges Ad Manager) that connects listing inventory to ad campaigns — with automatic off-market alerting and structured export.
Property managers select and order specific listings for promotion — assigning stable ad numbers that persist through data sync cycles, so campaign creative and targeting stay paired to the right property.
A cron job monitors every listing in the active ad pool. When a listing goes off-market in AppFolio (and syncs to WP), the Ad Manager automatically flags it and sends an alert — before ad spend is wasted on a property that can't be rented.
Export the current ad selection as a structured data file — ready for ad platform import or the marketing team's workflow, without manual data entry or spreadsheet maintenance.
Side-of-town classification by ZIP code powers "area targeting" for ad campaigns — ads for West Toledo rentals only get served to West Toledo geographic targets, automatically.
Built-in test email trigger confirms the full notification pipeline is working before a real off-market event happens — not after the campaign has already spent a week promoting a rented unit.
Every admin page load syncs the Ad Manager's listing table with the current ListingBridges inventory — keeps the ad pool accurate with zero manual reconciliation.
AppFolio doesn't write your listing copy. It sends a title and a data dump. ListingBridges turns that into a full, unique, SEO-optimized property description — on every sync, without a human in the loop.
From the moment a renter clicks "Schedule a Showing" to the confirmed calendar invite in their inbox — fully automated, conflict-free, and manageable from the WordPress admin.
Each agent gets their own 7-day schedule. The system offers a slot if any agent is free — automatically unified, deduplicated, and sorted.
Configurable buffer between showings, and optional one-showing-per-visitor-per-day enforcement — no double-booking by the same person.
Conflict detection works correctly in every timezone — a v1.7.2 fix that patched a UTC comparison bug that broke every other property plugin outside UTC.
Every confirmation generates a standard .ics file. One click adds the showing to Google Calendar, Apple Calendar, or Outlook — no account needed.
Separate from showings — parsed from AppFolio data automatically, with a per-property admin override, RSVP flow, and a daily digest email to the manager.
The same data that powers the frontend is available over a versioned REST API — ready for AJAX filtering, mobile apps, property tools, or partner integrations.
Built for VeriProper integration. Buckeye Northwest Realty's application pipeline connects to ListingBridges over this API — real-time property availability feeds directly into the property inspection and tenant management workflow.
A companion plugin that connects live inventory state to your ad campaigns — automatically.
Select specific listings for promotion and assign them stable ad numbers. The numbers persist through every AppFolio sync — so your campaign creative stays paired to the right property even as inventory changes around it.
A cron job watches every listing in the active ad pool. The moment a listing goes off-market in AppFolio and syncs into WordPress, the Ad Manager flags it and sends an alert — before ad spend continues on a property that can't be rented.
Side-of-town classification by ZIP code powers geographic ad targeting. Ads for North Toledo properties can be automatically filtered to only appear in the ad set targeting that part of the city.
Export the current ad selection as structured data — ready for ad platform import, spreadsheet review, or the creative team's workflow. No manual data entry, no copy-pasting from AppFolio.
The primary use case. Any company managing a portfolio of rental homes or apartments on AppFolio can sync their entire inventory to a branded WordPress site — with bookable showings, AI content, and ad tooling — in one install.
Built for the 50–500 unit operator who is too large for manual updates and too specialized for a generic listing site. ListingBridges gives them enterprise-grade listing management at plugin cost.
The data model handles commercial and mixed-use listings as naturally as residential — the same sync engine, shortcodes, and showing system work for any property type AppFolio manages.
The REST API is purpose-built for external tooling. If you're building a property inspection app, a tenant portal, or a mobile companion — ListingBridges is the data layer you plug into, not a CMS you fight against.
ListingBridges is white-label friendly. Agencies managing AppFolio clients on WordPress can deploy this as a standard part of their stack — each client gets a fully managed, branded listing experience without custom development per site.
The sync engine isn't AppFolio-exclusive at the architecture level. The scraper, CPT system, AI layer, and showing engine are all platform-agnostic. Other property management platforms are an adapter away.
ListingBridges is a real product built for real property managers. Let's talk about your inventory and what it would take to get it running.