WordPress.org

Plugin Directory

AeroIDX – Real Estate IDX Search, MLS Listings & Lead Capture

AeroIDX – Real Estate IDX Search, MLS Listings & Lead Capture

Description

AeroIDX turns your real estate (IDX) listings into real WordPress pages that load fast and are built to rank. Every property gets a clean, readable URL, and its SEO markup is written on the server, so search engines can crawl and index a listing as soon as it goes up.

Most IDX widgets draw their listings with JavaScript in the browser, which leaves the page’s HTML nearly empty for search engines. AeroIDX does the opposite. It writes the title, meta description, Open Graph and Twitter Card tags, the canonical link, and the structured data straight into the server response.

Key features

  • Clean listing URLs. Every property is served at /details/{address-slug}/{listing-id}.
  • Server-side SEO tags. The <title>, meta description, Open Graph, and Twitter Card tags render on the server for every listing.
  • Schema.org structured data. Each listing outputs RealEstateListing JSON-LD, so it can qualify for rich results in Google.
  • Works with your SEO plugin. When Yoast SEO or Rank Math is active, AeroIDX hands them the listing data. With no SEO plugin, it outputs the tags itself.
  • XML sitemap. A dedicated sitemap lists your properties so search engines can find them: your whole MLS, only your own listings, or just the areas you choose.
  • Canonical URLs and legacy redirects. Old /details?id=... links 301-redirect to the canonical URL, so you keep the SEO equity.
  • Classic and block themes. Works with both classic themes and block (FSE) themes.
  • Clean handling of removed listings. A delisted property returns a proper HTTP 410 (Gone) page instead of a broken link.
  • Market pages. Give a saved market its own WordPress page and write your own content around its listings, or drop a market into an existing page with a shortcode.

Admin-screen icons are from the Lucide icon set, licensed under ISC (GPL-compatible).

External Services

AeroIDX is the WordPress front end for the AeroIDX platform and requires an active AeroIDX account and API key to function. Sign up at https://aeroidx.com/plans.

The plugin communicates with the AeroIDX service (default https://app.aeroidx.com, configurable) in the following ways:

  • Listing pages (server-side): when a listing page is requested, WordPress calls the AeroIDX API to fetch that listing’s data. Only the requested listing identifier is sent.
  • XML sitemap (server-side, background): a scheduled WP-Cron job periodically fetches the listings index from the AeroIDX API to (re)generate the sitemap. When you limit the sitemap to selected areas, the areas, price range, sale type and property types you chose are sent with that request.
  • Sitemap filter choices (server-side): when you open the sitemap settings, the plugin asks the AeroIDX API for the counties, cities, ZIP codes and property types your MLS has, and how many listings each one has, so it can offer them to pick from.
  • API key validation & account info (server-side): when you save your API key or open the AeroIDX admin screens, the plugin calls the API to validate the key and read your plan.
  • Page / site sync (server-side): creating an IDX page, or authorizing this site (saving your API key, or pressing «Authorize this site» / «Try again» on the AeroIDX Home screen), sends your site’s address (scheme, host, port) to AeroIDX so it can authorize this site to load your widgets and configure deep links, sign-in and email links back to it.
  • Widget library (server-side): the Widgets screen lists the widgets saved on your AeroIDX account, and its duplicate and delete actions ask the API to duplicate or delete the widget you picked. Only that widget’s identifier is sent, and only you, as a signed-in administrator, can trigger it.
  • Markets list (server-side): the Markets screen lists the markets saved on your AeroIDX account so you can create a page for one, and a page that shows a market asks the API for that market’s name. Only your own account’s markets are returned.
  • Widget script (browser-side): the interactive listing widget loads its script (default https://app.aeroidx.com/components.js) from the AeroIDX asset host and requests listing data from the AeroIDX API.
  • Widget builder (admin browser): when you build or edit a widget from the plugin’s Widgets screen, the plugin mints a single-use sign-on token server-side and opens the AeroIDX builder in a new browser tab on the AeroIDX host, where you configure and save the widget. Only you, as a signed-in administrator, trigger this, and it sends no data about your site’s visitors.

Every server-side request includes your site URL (via WordPress‘ home_url()) in the HTTP User-Agent header so AeroIDX can associate the request with your account. These server-side requests send only the requested listing identifier (or the listings index for the sitemap), never your visitors‘ personal data.

The browser-side widget is different: like any embedded third-party script (for example an embedded map or video), it loads directly from the AeroIDX asset host, so when it loads a visitor’s browser exposes its IP address and User-Agent to AeroIDX. If you display the widget, disclose this in your own site’s privacy policy as you would for any third-party embed.

By using this plugin you agree to the AeroIDX Terms of Service and Privacy Policy:

  • Terms of Service: https://app.aeroidx.com/legal/agreements
  • Privacy Policy: https://app.aeroidx.com/legal/privacy

Privacy Policy

AeroIDX does not collect or store any personal data about your site’s visitors on your WordPress site, and it sets no cookies.

Server-side requests this plugin makes to the AeroIDX service (https://app.aeroidx.com by default) carry only your site URL (in the User-Agent header) and the identifier of the listing being rendered, never visitor data.

If you display the AeroIDX widget, its script is loaded in the visitor’s browser directly from the AeroIDX asset host. As with any embedded third-party script (such as an embedded map or video), the visitor’s browser thereby exposes its IP address and User-Agent to AeroIDX when the widget loads. This happens only on pages where you place the widget. If you use the widget, you should disclose this in your own site’s privacy policy.

Data handling by the AeroIDX service is governed by the AeroIDX Privacy Policy: https://app.aeroidx.com/legal/privacy

Bundled Assets

The admin screens use the Poppins typeface, which ships inside the plugin and is served from your own site. No font is ever requested from an external host, so no visitor or administrator IP is exposed to a font CDN.

  • Poppins — Copyright 2014-2019 Indian Type Foundry. Licensed under the SIL Open Font License 1.1, a GPL-compatible licence. Full text: assets/fonts/Poppins-OFL.txt. Source: https://github.com/itfoundry/Poppins

Screenshots

Blocks

This plugin provides 1 block.

  • AeroIDX Page Renders an AeroIDX IDX page screen (Search, Sign In, My Account, etc.)

Installation

  1. Upload the plugin folder to /wp-content/plugins/, or install the plugin ZIP via Plugins Add New Upload Plugin.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Make sure pretty permalinks are enabled (Settings Permalinks, any option other than «Plain»). AeroIDX needs them to serve clean listing URLs.
  4. Open the AeroIDX menu in the WordPress admin sidebar.
  5. Enter the API Key from your AeroIDX account and save.

Your listings will then be available at /details/{address-slug}/{listing-id}.

FAQ

Do I need an AeroIDX account?

Yes. AeroIDX is the WordPress front end for the AeroIDX platform. You need an active account and an API key. Get one at https://app.aeroidx.com/api-keys.

Does it work with Yoast SEO or Rank Math?

Yes. AeroIDX detects Yoast SEO and Rank Math and feeds them the listing data so they generate the meta tags. If no SEO plugin is active, AeroIDX outputs the SEO tags itself.

Do I have to use pretty permalinks?

Yes. AeroIDX serves listings at clean URLs, which requires the WordPress permalink setting to be anything other than «Plain».

Does it work with block (FSE) themes?

Yes. AeroIDX supports both classic themes and block themes. The listing widget is injected into the theme’s content area in either case.

Where do listing pages appear?

Every listing is rendered at /details/{address-slug}/{listing-id} on your site. AeroIDX also generates an XML sitemap so search engines can find them all.

What happens to a listing that is sold or removed?

AeroIDX returns a proper HTTP 410 (Gone) page for delisted properties, so you don’t accumulate broken links or soft 404s.

Listing pages feel slower than the rest of my site. What can I do?

A listing page is built from live IDX data, so the very first time anyone opens a particular property the plugin has to ask the AeroIDX API for it. That one lookup is the slow part. Everything after it is served from cache — for a week, and refreshed in the background so visitors never wait on it again.

Two things make that first visit rare:

  1. Turn on sitemap-based preloading in your caching plugin. AeroIDX publishes an XML sitemap of your listings at /aeroidx-sitemap-index.xml. WP Rocket («Preload» > «Activate sitemap-based cache preloading»), LiteSpeed Cache (its crawler) and most host-level page caches can walk it and request each page ahead of your visitors. That warms the page cache and the plugin’s own cache in one pass, and it costs you nothing but a checkbox.
  2. Use a persistent object cache (Redis or Memcached) if your host offers one. Without it WordPress keeps cached listings in the database, which works but is slower to read.

If a listing page is ever slow anyway, it still renders: the property widget loads in the browser exactly as it would with the embed snippet, so nobody sees a broken page while the data is on its way.

How do I style listing pages to match my theme?

AeroIDX listing pages aren’t editable in the WordPress editor. They’re rendered on demand from your IDX data. To style them, use the scoped CSS hooks the plugin exposes from your theme custom CSS, a page builder custom CSS field (Bricks, Elementor, etc.), or a child theme stylesheet. Your rules only affect AeroIDX pages:

  • body.aeroidx-page: body class on every page AeroIDX creates for you — Search, Sign In, My Account, Featured, Roster, the /aeroidx shell, and each market page. On the built-in listing and agent pages it comes from the classic templates, so block themes render those two without it.
  • #aeroidx-listing-detail, .aeroidx-listing-detail: main wrapper of the listing detail page. Classic themes only.
  • #aeroidx-agent-detail, .aeroidx-agent-detail: main wrapper of the agent listings page. Classic themes only.
  • .aeroidx-widget-mount: direct parent of every AeroIDX widget, on every surface the plugin renders.
  • .aeroidx-listing-gone, .aeroidx-agent-gone, .aeroidx-page-gone, .aeroidx-listing-error: the “no longer available” and error states.

The same documentation lives inside the plugin under AeroIDX > Designs in the WordPress admin, where each selector has a copy button and the list adapts to whether your theme is a block theme.

Which site do my widgets, sign-in and email links work on?

AeroIDX widgets and backend-built links (sign-in, sign-up, email links) only work on the ONE site your account is currently authorized for. A site becomes the authorized one in these ways:

  • Saving your API key authorizes the site you saved it on.
  • Pressing «Authorize this site» or «Try again» on the AeroIDX Home screen authorizes the site you’re on right now.
  • A live site takes the authorization back on its own from a staging address. See the next question.

Apart from that, nothing authorizes a site automatically. The last site you authorize wins: if you paste the same account’s key into more than one site (for example, a staging copy), whichever one you authorize most recently becomes the one your widgets and links work on. The AeroIDX Home screen (the Account card and the first «Next steps» item) always shows which site is currently authorized and offers the button to authorize this one instead, asking you to confirm before it switches away from the previously authorized site.

If your account’s address already belongs to a different AeroIDX account, the plugin will not take it: it leaves both accounts‘ addresses untouched and flags it on the AeroIDX Home screen explaining that this site’s address is registered to a different account. Contact AeroIDX support to have the address released, then use the «Try again» button. Nothing retries automatically in the meantime.

I moved my site from staging to live. Do I have to do anything?

No. You don’t need to enter your API key again. When the live site is on a production environment and the authorized address looks like a staging or temporary one, AeroIDX moves the authorization to the live site on its own, within about an hour, or sooner when an admin opens wp-admin. A notice tells you what moved, and you can dismiss it.

A staging address is one like staging.example.com, a temporary domain from a host such as WP Engine, Kinsta, Pantheon or Cloudways, or localhost. If your live site moved and the old address doesn’t look like staging, nothing moves on its own: press «Authorize this site» on the AeroIDX Home screen.

Going the other way is not automatic. A copy of your live site can never take the authorization from it. If you want widgets to work on a staging or local copy, press «Authorize this site» there.

A live site takes the authorization back within the hour, even from localhost. If you test widgets on a local copy, use a separate test key from your AeroIDX account. Otherwise your widgets on the local copy stop working after the next check.

Developers can change what counts as staging with the aeroidx_origin_looks_like_staging filter.

Known limitation: if AeroIDX is installed in a subdirectory (for example https://example.com/blog), only the site’s origin (https://example.com) is sent — a visitor’s browser only ever reports the origin, so this is what AeroIDX needs to authorize the site and route sign-in and email links back correctly; it also means those links land at your site’s root rather than the subdirectory.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“AeroIDX – Real Estate IDX Search, MLS Listings & Lead Capture” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.3.0

  • New: four more widget types on the Widgets screen: Market Stats, Contact Form, Mortgage Calculator and Sign In Button.
  • New: widget types added to AeroIDX later appear on the Widgets screen without a plugin update, within about 12 hours of an admin opening that screen. They show a generic preview until a release gives them their own.
  • Changed: the widget previews on the Widgets screen now match the ones in the AeroIDX builder, and long descriptions are cut to two lines. Hover over a description to read all of it.
  • Changed: uninstalling AeroIDX also removes the stored list of widget types.

1.2.0

  • New: when a site moves from a staging or temporary address to its live address, AeroIDX moves the authorization of your widgets, sign-in and email links to the live site on its own. That covers a staging. subdomain, a temporary domain from hosts such as WP Engine, Kinsta, Pantheon or Cloudways, and localhost. It happens within about an hour, or sooner when an admin opens wp-admin, and you don’t need to enter your API key again. A one-time notice says what moved.
  • Changed: this only happens on a production site whose own address doesn’t look like staging, and only away from a staging-looking address. A copy of your live site never takes the authorization from it, and moving from local to staging still takes one click on «Authorize this site».
  • Changed: a production site takes the authorization back from a staging-looking address, including localhost, within the hour. If you test widgets locally, use a separate test key.
  • Changed: if the new address belongs to another AeroIDX account, nothing is retried. Use «Authorize this site» on the Home screen.
  • New: when your widgets are authorized for a different address than this site, AeroIDX says so. It shows as a notice on wp-admin screens outside the plugin, and as a banner on the plugin’s screens other than Home. You can dismiss it, and it comes back if the addresses change. Authorizing this site clears the dismissal.
  • New for developers: the aeroidx_origin_looks_like_staging filter changes what counts as a staging address.

1.1.0

  • New: the AeroIDX Home screen shows which site your widgets, sign-in and email links work on. The Account card and the first «Next steps» item read «Connected» when it is this site, «Authorized for» another address when it is a different one, or «No site is authorized yet». They also tell you when this site’s address belongs to another AeroIDX account, or when AeroIDX didn’t respond.
  • New: an «Authorize this site» button on the Home screen makes this site the one your widgets and links work on. When another site is authorized, it asks you to confirm before it switches. The last site you authorize wins, so a staging copy that shares your API key can take over only when you ask it to.
  • New: when AeroIDX didn’t respond, or this site’s address was registered to another AeroIDX account, a «Try again» button on the Home screen asks again. Nothing retries on its own.
  • Changed: AeroIDX sends your site’s address only when you act: when you save your API key, or press «Authorize this site» or «Try again». If the address already belongs to another AeroIDX account, neither account’s address is changed.
  • Changed: sites updating from 1.0.0 keep the site they were already authorized for. There is nothing to do after the update.
  • Changed: uninstalling AeroIDX also removes the record of which site was authorized.

1.0.0

  • New: a Sitemap card on the Settings screen decides which listings your sitemap offers to search engines. «All MLS listings» publishes every active listing on your MLS plus your own. It is the default, and it is what the sitemap published until now, so nothing changes when you update. «My listings only» publishes your own, featured and supplemental listings. «Off» publishes no sitemap at all.
  • New: «Selected areas» publishes only the MLS listings in the counties, cities and ZIP codes you choose, plus your own. Type in the search bar to add an area. Each one shows how many active listings your MLS has there, and only areas your MLS actually has are offered. You can narrow further by price range, by sale or rent, and by property type, using the types from your AeroIDX search setup.
  • New: your own, featured and supplemental listings are always in the sitemap, whatever filters you set.
  • New: «Off» takes the sitemap out of every place it was announced: the line in robots.txt and, on sites with Yoast SEO or Rank Math, the entries in that plugin’s sitemap. The sitemap addresses answer «not found», which tells search engines to stop asking for them.
  • New: a change on the Sitemap card takes effect within a few minutes instead of waiting for the next scheduled rebuild.
  • New: AeroIDX prepares the listings for a new set of filters in the background. Until they are ready, your previous sitemap stays live, and the plugin tries again every 30 minutes, up to five times.
  • New for developers: the aeroidx_sitemap_filters filter can adjust the filters sent with the sitemap request. The aeroidx_sitemap_include_mls filter still has the last word over the Sitemap card, so a site that turned the MLS feed off in code stays off.

0.12.0

  • New: every message the AeroIDX screens show after an action now appears in the bottom-right corner. Confirmations such as «Settings saved.» or a page created go away on their own after a few seconds. Warnings and errors stay until you close them. They used to sit at the top of the screen in WordPress’s style, and could stay there after you moved to another AeroIDX screen.
  • New: a confirmation after you delete a page, a market’s page or a widget. Each one used to finish with no message at all.
  • New: a market’s page can be deleted from its card, under the ⋮ menu, the same place a widget’s actions are. It goes to the WordPress Trash. The market itself stays in your AeroIDX account, and its card offers to create the page again.
  • New: buttons show that they are working. «Create page», «Save changes», «Delete» and the rest now read «Creating…», «Saving…» or «Deleting…» with a spinner until the action finishes, and the other buttons on the screen wait for it. On a slow site a button used to look like it had done nothing, which invited a second click.
  • New: a Cancel button in each page’s settings on the Pages screen. It puts back the values you had saved and closes the panel.
  • Changed: creating a market’s page keeps you on the Markets screen. The card switches to Edit, and Edit is what opens the page in the editor. It used to open the editor straight away.
  • Changed: the notice saying your agency kept a page’s old address is gone. An agency theme styles your pages; where they live on your site is yours to set.
  • Fixed: on the Designs screen, themes from your agency were drawn larger than the built-in designs. All design cards are now the same size.
  • Fixed: dropdowns on the Widgets and Markets screens lost their arrow after you picked an option, and kept a heavy outline until you clicked somewhere else. They also turned black on hover. They now keep their arrow and the plugin’s colours.
  • Fixed: buttons in the AeroIDX screens turned blue once clicked, and on WordPress 7.1 their text turned grey while they worked. They keep the plugin’s colours.
  • Fixed: a listing or agent field that arrived from AeroIDX in an unexpected shape could show as the word «Array», including in your sitemap, or as a wrong number of bedrooms. Such a field is now left out rather than shown wrongly.
  • Fixed: uninstalling AeroIDX left one of its settings behind in your database. It is removed now.
  • Changed: AeroIDX keeps a short record of its last twenty failures, such as AeroIDX not answering, so support can see what went wrong. It is stored in your WordPress database, written at most once a minute per kind of failure, and removed when you uninstall the plugin.

0.11.0

  • Fixed: a link from an AeroIDX widget took two redirects to reach its page where one would do. WordPress was adding a trailing slash of its own first, and only then did the plugin send the visitor on to the real address. The plugin now goes first, so those links arrive in one redirect. Market links and roster links were taking the extra step on every site, because the page they start from is one AeroIDX creates for you. Property and agent links took it wherever your site has a page of its own at that address, which is what the AeroIDX setup asks you to create.
  • Changed: a property or agent page no longer asks your database for posts it does not use. Both are built by AeroIDX rather than stored in WordPress, but WordPress was still searching your content on every view and discarding the answer. You will notice this in proportion to how much content your site has.
  • Fixed: a listing page downloaded its first two photos twice. Once for the copy search engines read, and again for the gallery your visitor actually sees, because the two asked for the same photo at slightly different addresses. That is about 800 KB a page view, fetched while the page was still loading and never shown to anyone. Both now ask for the same photo, so the second one comes straight from the browser’s cache.
  • Fixed: a market pointing at something that is not a page, an uploaded image for example, sent your visitors to that file. Clicking the market card ended on the image itself. A market now resolves only to a real page, and when it has none the link falls back to your AeroIDX page, which is what already happened for a market whose page had been deleted.
  • Fixed: an agent page told search engines it lived at an address that does not answer. Its canonical link, its Open Graph URL and its structured data all left off the trailing slash your site asks for, so all three pointed at an address WordPress answers with a redirect back to the page itself. They now follow your site’s own setting, as listing pages have since 0.9.0. Reaching an agent page from your roster cost a second redirect for the same reason, and no longer does.

0.10.0

  • New: your sitemap now lists every active listing on your MLS, not only the ones you added or featured. It is what the larger IDX platforms publish. Your own listings are still in it, and each address appears once.
  • New: while AeroIDX is still gathering a large MLS for the first time, it can answer with only part of your listings. Your existing sitemap is kept when that happens, rather than rebuilt from the partial answer and left missing most of its addresses.
  • Note: your sitemap is rebuilt once shortly after this update. Until it finishes, the sitemap address answers as unavailable rather than serving an out-of-date file.

0.9.0

  • Fixed: vacant land was published to search engines as a residence, and carried a floor area, a bathroom count and a year built along with it. Land is now described as a place, with its lot size, its property type and its subdivision stated outright.
  • Fixed: a listing page served no heading, no property description and no photo in its HTML, so a search engine that does not run JavaScript saw an almost empty page. All three are now written into the server response, underneath the widget and out of sight for a visitor.
  • Fixed: the structured data put the listing’s marketing headline where the street address belongs, and left out the city, the state and the country. Those fields now come from the address itself, and the street is left out when the feed has none.
  • Fixed: every canonical URL, Open Graph URL and sitemap entry pointed at an address that redirected, because five places built the listing URL their own way. They now share one builder that follows your site’s own trailing-slash setting.
  • Fixed: a shortcode written into a listing’s remarks by the feed was executed on your site. The description AeroIDX renders is now handed over after WordPress has finished looking for shortcodes.
  • Fixed: where a feed sent a listing’s remarks with line breaks, words on either side of the break were fused together, in the page description and in the structured data alike.
  • Fixed: a listing page carried two top-level headings. The one AeroIDX adds for search engines no longer competes with your theme’s.

0.8.1

  • Fixed: if you saved your API Key while AeroIDX was down, the screen then told you the plugin had not checked the key yet. It had checked it, seconds earlier, and the check had failed. It now says AeroIDX did not answer, and that your key is probably fine.
  • Fixed: the Widgets and Markets screens blamed your API Key for anything that went wrong. If the account’s subscription has lapsed they now say so and leave the key alone. If AeroIDX did not answer, they say that instead.

0.8.0

  • Fixed: if your agency had applied one of its themes to some of your pages, the Designs screen showed no design selected at all. A design and an agency theme are two layers rather than two choices. The theme covers only the pages it carries a design for, and your own design still drives the rest. Both are shown now, each marked on the pages it actually runs.
  • New: the Designs screen lists the themes your agency has published. The ones your agency applied to your site are shown greyed out and name the pages they took over, because those are your agency’s to change rather than yours.
  • Fixed: change your design in AeroIDX and the Designs screen went on showing the old one for a few minutes. It re-reads when you open it now.
  • Fixed: renaming a page whose design your agency manages said «Settings saved» when AeroIDX had refused the change, so the old address went on being served and nothing said so. The screen now says the change was refused, and says it differently from a connection problem, because a refusal will not go through on a retry.
  • Fixed: an account whose subscription had lapsed was told its API Key had been rejected: on the Settings screen, in the setup wizard, and on the plugin’s home screen. Replacing a working key does not restore a subscription. All three now say the subscription is inactive and leave the key where it is.
  • Fixed: the home screen said the account was connected whether or not it was.

0.7.0

  • New: choose the design your IDX pages use, without leaving WordPress. Classic, Premium and Prestige each show what they look like, the one you are using is marked, and applying another changes your listing, agent and market pages straight away. Any theme your agency has published appears here too.
  • New: a question in the FAQ about why a listing page can feel slower than the rest of your site, and the two things that fix it: pointing your caching plugin’s sitemap preloader at the AeroIDX sitemap, and using a persistent object cache if your host offers one.
  • Changed: the Appearance screen is called Designs. The CSS selectors it used to be are still on it, folded under the design picker, because most people come to this screen to pick a look rather than to write CSS.
  • Changed: property, agent and market pages open faster, and stay fast. The details that fill a page’s title, description and search-engine tags used to be looked up again every few hours, and somebody was always the one waiting for it. They are now kept for a week and refreshed in the background, so a page is slow to open once and never again.
  • Changed: when AeroIDX is slow to answer while a page is being built, the plugin waits two seconds instead of five and renders the page anyway. The property, agent or market widget still loads in the browser, so a slow moment upstream costs a couple of seconds rather than a blank screen.
  • Fixed: if AeroIDX could not be reached, every visitor paid the full wait, and paid it again on the next page load, for as long as the outage lasted. A failed lookup is now remembered for a minute, so an upstream problem costs one wait a minute instead of one wait per visitor. Saving your API Key clears it at once, so a key you have just fixed is never held back.
  • Fixed: a listing that has left the market was served as though nothing had happened. It now answers 410 Gone and shows the «no longer available» page, so search engines drop the address instead of crawling it again. Neither had ever worked, because of how the plugin asked WordPress for the listing id.

0.6.0

  • New: saving your API Key now checks it with AeroIDX before storing it. A key with a character missing is refused instead of quietly saved, and the working key you already had stays in place.
  • New: the Settings screen says whether AeroIDX is answering, which plan the account is on, and when it last checked.
  • New: the Appearance screen adapts to your theme. It lists the selectors that exist on the theme you are actually running, and each one has a copy button.
  • New: a «where do I find my key» link on the screens that ask for one, pointing at the page in AeroIDX that issues it.
  • New: when another page already sits at the address an IDX page wants, AeroIDX asks what should happen instead of deciding on its own. Use the page that is already there, or put the IDX page at an address of its own.
  • New: AeroIDX recognises the pages it set up earlier, even after you rename or move one. It offers to pick that page back up rather than build a second copy of it.
  • New: market pages ask the same questions, and every market on the Markets screen shows whether its page already exists, with a button to connect it.
  • Changed: changing your API Key now clears the data cached from the previous account. Switching accounts used to leave the old one’s markets and widgets on screen for up to an hour.
  • Changed: the setup wizard now uses the same buttons, fields and wording as the rest of the plugin’s screens.
  • Changed: the AeroIDX screens use the full width of the page, and the page settings sit in two columns instead of one narrow one.
  • Changed: when AeroIDX uses a page you already have, it adds the IDX content below what is on that page. Nothing is removed, and you can rearrange it in the editor.
  • Changed: the setup wizard asks the same questions as the Pages screen. Creating every page at once no longer reconnects a page without telling you.
  • Fixed: creating an IDX page when another page already sat at its address published a duplicate at /search-2, /featured-2 and so on. AeroIDX stops and asks instead.
  • Fixed: AeroIDX did not recognise the pages it had created itself, so deleting an IDX page and setting it up again produced another duplicate every time.
  • Fixed: widgets added with the [aeroidx_widget] shortcode had no element to style, although the plugin’s own documentation said they did. Every AeroIDX widget now sits inside .aeroidx-widget-mount.
  • Fixed: an API Key that had stopped working removed Team-only pages and lowered the counts on the Home screen without saying why. The plugin now tells you the key was rejected.
  • Fixed: the setup wizard said your key had failed when AeroIDX simply could not be reached, sending people to replace a key that was fine.
  • Fixed: the admin could take around twenty seconds to load while an API Key was not working.
  • Fixed: a copy button that failed to reach your clipboard gave no sign of it, so you could paste something else without noticing.
  • Fixed: the styling documentation described where selectors apply. Two of the four descriptions were wrong.

0.5.0

  • New: a Markets screen in wp-admin. Give any market on your AeroIDX account its own WordPress page, then edit that page like any other: write about the area, add your own photos, and the market’s listings sit inside it.
  • New: an [aeroidx_market id="..."] shortcode, for dropping a single market into a page you already have.
  • New: the plugin now creates a page called AeroIDX on your site. Links to a market from your AeroIDX dashboard need it, and until now you had to create that page yourself. If you already made one, the plugin uses it and leaves your content alone.
  • Fixed: links to a market from your AeroIDX dashboard, from an alert, or from a Market Areas widget led nowhere on a WordPress site. They now open the right page.
  • Fixed: some text on the AeroIDX admin screens was too light to read comfortably, including search box placeholders and the current page number in a list.
  • Fixed: buttons on the AeroIDX admin screens kept a blue outline after being clicked, as though they were still selected.
  • Fixed: the dropdowns on the AeroIDX admin screens were missing their arrow, so they looked like text fields.

0.4.1

  • Fixed: a widget pasted straight into a page, rather than added with the AeroIDX shortcode or block, only worked if the AeroIDX script was also in your site header. Widgets now work on their own, wherever you put them.
  • Fixed: listing and search screens pushed the rest of the page down as they finished loading. Space is now held for them from the start, so nothing moves.
  • Changed: if you added the AeroIDX script to your site header, you can remove it. The plugin loads what your widgets need by itself, and keeping both no longer loads it twice.
  • Performance: that code now starts loading at the top of the page instead of the bottom, so widgets appear sooner.

0.4.0

  • New: a Widgets screen in wp-admin. Pick a widget type, build it in the full AeroIDX builder (it opens in a new tab), and get a shortcode ready to paste on any page.
  • New: a widget library to manage what you’ve built. Edit, duplicate, or delete a widget, and copy its shortcode with one click.
  • New: testimonials widget, a carousel of client testimonials.

0.3.0

  • Fixed: creating an IDX page before saving your API Key published a page that visitors saw empty. The plugin now asks for the key first, on every route that could get there.
  • New: deleting an IDX page asks you to confirm first. The page goes to the Trash, but AeroIDX stops treating it as that IDX page, and the confirmation says so.
  • Design: the admin screens were rebuilt to match AeroIDX, with the same layout and refreshed colour, type and spacing.
  • Privacy: the admin now uses a typeface that ships inside the plugin instead of loading one from an outside service, so no administrator IP reaches a font host.
  • Maintenance: filtering the widget list with no matches now offers a way back to the full list.

0.2.3

  • Fixed: on sites running Yoast SEO or Rank Math, the sitemap index answered with a «page not found» error. Those plugins claim every URL that ends in -sitemap.xml, so the index moved to /aeroidx-sitemap-index.xml. The old address still works wherever it worked before.
  • Fixed: robots.txt no longer points search engines at the sitemap until it actually holds listings.

0.2.2

  • Clearer, more benefit-focused plugin description and readme copy for real estate agents. No functional changes.

0.2.1

  • Internationalization: the text domain now matches the plugin slug, so translations load correctly.
  • Performance: sitemap data is no longer autoloaded on every page request.
  • Security: hardened URL escaping in Open Graph and Twitter Card meta tags.
  • Maintenance: clearer plugin description and installation instructions.

0.2.0

  • New: SEO-friendly agent pages at /agent/{name}/{id}: clean URLs with canonical, Open Graph, Twitter Cards, and Person schema.
  • New: configurable agent URL base, with 301 redirects from previously used bases so old links keep working.
  • New: agent pages integrate with Yoast SEO and Rank Math, feeding agent data through their tags so output stays single-source (no duplicate meta).
  • Improved: agent pages now reach full SEO parity with listing detail pages.

0.1.0

  • Initial release.