Free marketing audit for your business. No commitment.

Powerful AppFolio listings. Completely under your control.

Pull your AppFolio property and unit data onto your own WordPress site — server-side, no iframe — and shape every part of how it’s shown: card layout, per-unit links, the interactive map, and every color and font, straight from the dashboard.

Built and maintained by Kihan Marketing, a WordPress & SEO agency that runs this plugin on its own property management client sites.

Everything you need to run listings without touching a code editor.

Six areas of control, all driven from the WordPress dashboard — nothing here requires a theme edit or a code snippet.

Dynamic AppFolio Listings

Listings are fetched server-side from your AppFolio feed and cached — no manual re-entry, and no iframe embedding AppFolio’s own page inside yours.

Interactive Map

Units at the same address group into one pin with a count badge. Hovering a card highlights its pin, and hovering a pin highlights its card.

Custom Listing Links

Point any individual unit at a virtual-tour URL instead of the default AppFolio destination — managed from a dedicated per-listing table.

Complete Design Control

Can’t filter, sort, brand, or template the results. What AppFolio ships is what visitors see, regardless of how the rest of your site looks.

Indexable Listing Pages

Renters can’t narrow by beds, baths, or rent, and there’s no map to browse by location, so they bounce to a site that makes it easier.

Filters, Search & Pagination

Managing several buildings or regions on AppFolio usually means duct-taping together separate embeds with no clean way to organize them by property.

Meet Appfolio Listings Pro

It sits between your site and AppFolio, fetches your live listings server-side, and hands your visitors, and Google, real HTML instead of a frame.

Before

iframe src="appfolio.com/listing"

Your listings live on someone else’s domain, styled by someone else, invisible to your SEO.

Appfolio Listings Pro

Server-side fetch + parse

A safe, same-host request pulls your public AppFolio listings and parses the real listing data, rent, beds, baths, photos, availability, links.

After

div class="apflp-card"

Real, branded, filterable HTML, with individual crawlable listing pages, served natively from your own domain.

Send every listing exactly where you want.

By default, the Details button sends visitors to your own site’s listing page or straight to AppFolio — your choice, set once in Settings. Any single unit can be overridden with its own destination, like a Matterport tour, without touching the rest of the feed.

Default behavior

Details Button Opens" sends visitors to this site's listing page or AppFolio's — the host is resolved from your own Base URL, so nothing is hard-coded per site.

Per-unit override

Any unit can carry its own custom URL — a virtual tour, a floor plan PDF, anything with a link — enabled individually from the table on the right.

Rename the feature

The label isn't locked to "MeterPort" — the feature name and the button text are both editable fields, so the button can read "Virtual Tour," "Floor Plan," or anything else.

MeterPort Links

Five steps from iframe to indexed

Most sites are live with real, filterable listings inside an afternoon.

01

Install & Activate

Upload the plugin, activate it, and enter your license key to unlock settings.
02

Connect AppFolio

Paste your AppFolio base URL into Connection settings. That’s the only credential needed.
03

Brand It

Pick a card template, set your primary/secondary colors, and choose your column layout.
04

Drop In a Shortcode

Place [app_all_listings], or a Property Group shortcode, on any page.
05

Go Live

Filters, sorting, the map, and individual listing pages are live, instantly, and indexable.

Who this is for

Property management companies
Turn your AppFolio feed into a real marketing asset

You're already paying for AppFolio. This makes the listings it generates actually work for your website's SEO instead of sitting invisible inside a frame.

Multifamily & apartment communities
One page per community, one map, one brand

Show available units per building with dedicated filters, a map view, and consistent branding across every property in your portfolio.

WordPress agencies & marketers
A repeatable listings solution for every PM client

Configure once, template it, and roll it out across client sites, brand colors and templates keep every install on-message.

Portfolio owners with multiple regions
Every region gets its own clean shortcode

Property Groups let you save each building or region as its own AppFolio URL, with an auto-generated grid or slider shortcode ready to paste anywhere.

What changes on day one

Before
1420 Elliott Ave W #204$2,150
1420 Elliott Ave W #205$2,290
802 Queen Anne Ave N$1,895
View on AppFolio →
<iframe src="…appfolio.com/listings">

AppFolio's own page, embedded — default fonts, default layout, no brand colors, and not indexable as your site's content.

After
$2,150Available Now
1420 Elliott Ave W, Seattle
View DetailsApply

Rendered as real HTML on your site — your fonts, your colors, your button labels, on a real WordPress URL.

Every major capability, in detail

What it does, why it matters, and who it’s built for.

01 / No-Iframe Rendering Engine

Your listings, rendered as real HTML on your own domain

What it does: fetches your public AppFolio listings pages on the server, parses the actual listing data with a proper DOM parser, and outputs native HTML, not an embedded frame.

Why it matters: content that lives in your page’s HTML is content Google can crawl, index, and rank. An iframe pointed at another domain never gets that credit.

How it works: requests are restricted to the same host as your configured AppFolio URL, a same-host allowlist that blocks any other destination outright.

Code sample showing a standard AppFolio embed: an iframe with src &apos;yourcompany.appfolio.com/listings&apos; and a root div containing two &apos;apflp-card&apos; divs (listings cards).

02 / Individual SEO Listing Pages

Every unit gets a real, indexable page

What it does: builds a dedicated page at /appfolio-listing/{id}/ for each unit, with a full photo gallery, an overview, rental terms, pet policy, and amenities pulled straight from the listing’s real AppFolio detail page.

Why it matters: a listing with its own URL is a listing you can link to, share, run ads to, and rank for its own address and floor plan.

How it works: the page data is cached and served from your own rewrite rule, with sidebar Apply Now / Contact Us actions and one-click social sharing built in.

Property card for Harbor Row, Unit 12 with rent

03 / Dynamic Filters & Sorting

Filter options that reflect real inventory, automatically

What it does: search, min/max rent, beds, baths, and a pets filter, all built from the actual values present in your live listings, not a hardcoded list.

Why it matters: renters never see a “3 bed” filter option when nothing 3-bed is available, every filter reflects what’s real, right now.

How it works: sorting supports featured order, newest, rent (either direction), and beds/baths, with pagination or a show-all mode for smaller portfolios.

Filter bar showing Beds: 2+ and other criteria with three property rows and prices on the right (real estate listings).

04 / Interactive Map

A map view your renters can actually browse

What it does: a toggleable “View with Map” mode that geocodes your live listings into pins, with a configurable default zoom and map height.

Why it matters: location is often the first filter a renter applies, before beds, before rent. A map lets them start there.

How it works: runs on your own Google Maps API key (Maps JavaScript API + Geocoding API), configured once from the Map Settings screen.

Interactive map with a light blue grid and three blue location pins; includes a &apos;Hide Map&apos; button.

05 / Templates & Brand Colors

Three premium templates, or build your own

What it does: choose between three built-in premium card templates or write fully custom HTML using placeholder tokens like {{rent}}{{beds}}, and {{apply_link}}, sanitized against a safe HTML allowlist.

Why it matters: a listings grid that matches your site’s exact colors and layout looks like it was built in-house, not bolted on.

How it works: primary and secondary colors set via a native color picker instantly re-theme buttons, links, and active states across the whole plugin, plus a custom CSS box for anything else.

Web UI mockup with four colored square icons and three template cards; Template 1 is selected.

06 / Property Groups

Every building, its own clean shortcode.

What it does: save any number of AppFolio listings URLs as named Property Groups, one per building, community, or region, each generating its own grid and slider shortcode automatically.

Why it matters: portfolios with multiple properties can show the right units on the right page, without duplicating settings or fighting with one giant combined feed.

How it works: pages use [app_group_listings key="…"], matched safely by a generated key with no manual URL wrangling.

Panel listing groups and their shortcodes: North Seattle Region, Tacoma Communities, Eastside Portfolio with code samples shown.

Built the way WordPress expects

No shortcuts on the parts that keep a site safe and fast.

SSRF-protected fetching

Every remote request is checked against a same-host allowlist tied to your configured AppFolio URL, no arbitrary destinations, ever.

Nonce-verified AJAX + capability checks

All AJAX endpoints verify a WordPress nonce, and every admin action requires manage_options.

Sanitized custom templates

Custom HTML templates run through a tight wp_kses allowlist, safe by default, not by convention.

Real DOM parsing, not regex

Listing data is extracted with DOMDocument/DOMXPath, which holds up against markup changes far better than pattern matching.

Stale-while-revalidate caching

Listings are cached for a configurable window, with a fetch lock that prevents duplicate requests from piling up under load.

Capped, paginated crawling

Large portfolios are fetched page by page up to a safe cap, so one big property list can't take down a page load.

Compatibility & integrations

Requires your property’s AppFolio listings to be publicly viewable, and your own Google Maps API key for the map view. No AppFolio API credentials are needed, the connection is a single base URL.

Choose your license

Every tier ships the full plugin, every template, filter, the map, and Property Groups. Tiers scale by how many domains you activate it on.

Single Site

$199/ year

1 licensed domain · billed annually

Agency

$599/ year

5 licensed domains · billed annually

Unlimited

$1,299 / year

Unlimited licensed domains · billed annually

Why it's worth it

What's an hour of dev time worth to you?

Building a server-side AppFolio fetcher, a templating system, filters, a map, and SEO-friendly listing pages from scratch is a real custom project, not an afternoon plugin install.

Custom-built equivalent

$6,000 to $15,000

Appfolio Listings Pro

$199 / yr

Custom development figure is a general market estimate for reference only, not a quote.

How the license actually works

Straightforward, domain-based activation, the same system running in the plugin today.

Active

Full access

Settings, Property Groups, and Map Settings are unlocked. Your licensed domain(s) fetch and render listings normally.

Grace period

Still live, with a warning

If your license lapses, listings keep working through a grace period while a renewal notice shows in wp-admin.

Expired

Settings lock, listings pause

After final expiry, admin settings lock behind an overlay and new listings stop fetching until you renew.

Renewal

One key, one domain

Each license key is matched to your site’s domain automatically. Renew or add domains anytime via info@kihanmarketing.com.

What our clients say

EXCELLENT

Distorted Google logo banner with blue, red, yellow, and green color blocks on a blue background, appearing glitched.
Kihan Marketing - Testimonials Carousel

Frequently Asked Questions

It fetches your public AppFolio listings server-side and renders them as real HTML on your WordPress site, with filters, sorting, a map view, brandable templates, and an individual page for every listing. No iframe involved.
No. You just need your AppFolio base URL, the same public listings your renters already browse. There’s no separate API credential to request.
Install the plugin, activate your license, paste your AppFolio base URL, and drop a shortcode onto any page. Most sites are live the same day.
Yes. It’s shortcode-based, so it drops into any WordPress theme and any page builder, including Elementor, Gutenberg, and classic editor pages.
No, the three built-in templates, color pickers, and settings screens cover most sites with no code. Developers who want more can build a fully custom template with placeholder tokens.
That depends on your plan, Single Site covers one domain, Agency covers five, and Unlimited has no domain cap. Each license key is matched to the domain(s) you activate it on.
It removes the biggest technical blocker: content trapped inside an iframe on another domain. Rendering real HTML with individual listing URLs is what makes that content eligible to be crawled and indexed in the first place, actual rankings still depend on your broader SEO work.
Every license includes a year of plugin updates and support, with priority support on Agency and Unlimited plans. Renewal keeps updates and support active.
Listings keep working through a grace period with a renewal notice in your dashboard. After final expiry, admin settings lock and listings stop fetching until you renew.
Yes. If the plugin is not right for your site, email us within 14 days of purchase and we will refund the license in full, no questions asked. After 14 days the license runs to the end of its term and you can cancel any time before it renews.
A standard WordPress install, your AppFolio base URL, and, only if you want the map view, your own Google Maps API key with the Maps JavaScript and Geocoding APIs enabled.

Stop letting an iframe hide your listings

Install Appfolio Listings Pro, connect your AppFolio URL, and give every listing a real, crawlable home on your own site.

Get your free proposal

Tell us about your project and we will be in touch within one business day.

Ready to grow?

Three simple steps from first hello to real results.

1. Contact us

Fill out the form and tell us about your goals.

2. We build your plan

A custom strategy and design built to rank and convert.

3. You get results

Launch, then measurable growth month over month.