Documentation · Doorstep real estate theme

Doorstep, from the inside

Everything the Doorstep bundle adds to wp-admin, the Site Editor and Elementor: what each screen does, which fields exist, how the plugin’s 73 blocks and 28 widgets fit together, and the path from a fresh WordPress install to a working property portal. Screenshots are from the live demo.

On this page

In the boxInstallwp-adminPropertiesAgentsTaxonomiesEnquiriesSettingsHow it worksBlocksSite EditorElementorChecklistFAQ

The Real Estate dashboard in wp-admin: listings, agents, enquiries and the demo importer

The Real Estate › Overview screen: at-a-glance tiles, recently updated listings, the latest enquiries, listing health checks and the one-click demo importer.

What you get

Three pieces, one portal

The download contains two themes and the plugin that powers both. The plugin owns the data and the logic; each theme only decides how it looks.

Stepfox Real Estate (plugin)

Required by both themes. Registers properties, agents, enquiries, the four taxonomies and every listing field, and adds the Real Estate menu, the map search, enquiries, REST routes, 73 editor blocks, 28 Elementor widgets and 4 dynamic tags, dark mode, JSON-LD and the demo importer.

Doorstep (block theme)

23 templates, 2 template parts, 15 patterns, a theme.json palette and a “Night” style variation. It ships no CSS of its own: every colour, gap and breakpoint is a block attribute you edit in the Site Editor. Needs the Stepfox Looks plugin (included).

Doorstep Elementor (classic theme)

The same design as native Elementor widgets, with PHP fallback templates for every route, a Customizer section for the header and footer, three menu locations and an Appearance › Doorstep Setup wizard. Needs Elementor; Elementor Pro is optional.

Miami demo + updates

72 listings, 10 agents, 18 neighbourhoods and 12 journal posts, installed and removed in one click. All three packages check stepfoxthemes.com for updates and show the normal “Update available” rows in wp-admin. There is no licence key to enter.

Requirements

  • WordPress 6.7 or newer and PHP 8.0 or newer.
  • Pretty permalinks (Settings › Permalinks › Post name). The plugin needs them for /properties/, /property/…/, /agents/ and /area/…/.
  • No map API key. Maps run on MapLibre GL with free OpenFreeMap vector tiles. A MapTiler or Stadia style URL can be pasted in later if you prefer.
  • Block edition: the Stepfox Looks plugin. Elementor edition: Elementor 3.x, with Elementor Pro optional (Theme Builder templates become editable with Pro; without it every route keeps a PHP fallback).

First run

Install and first run

Activating either theme takes you straight to a one-click installer. You can let it do everything, import only the listings, or start from scratch.

Install the plugin(s)

Upload stepfox-real-estate.zip under Plugins › Add New › Upload and activate it. Activation seeds the Deal, Type and Feature vocabularies and flushes rewrite rules. Block edition: also install Stepfox Looks. Elementor edition: install Elementor (and optionally Pro).

Activate the theme

Upload and activate Doorstep or Doorstep Elementor under Appearance › Themes. You are redirected once to Appearance › Install Demo, and a dismissible notice (“Doorstep is active. Make your site look like the demo in one click”) stays until the demo is installed. If a required plugin is missing, the theme says which one and offers to install it with the demo.

Choose a route

Full demo: press Install the demo. It installs the missing plugins, imports the Miami dataset, writes the demo settings, creates the ten pages, sets the front page and posts page, and switches permalinks to post name. Data only: Real Estate › Overview › Import demo listings imports listings, agents and neighbourhoods but touches neither settings nor pages. From scratch: skip the demo and add your own agents, neighbourhoods and listings (see the checklist at the end of this page).

Check permalinks and timezone

Confirm Settings › Permalinks is on Post name, and set Settings › General › Timezone, because open-house dates and tour requests use site time.

Review Real Estate › Settings

Currency and symbol, area unit, default search, map centre and zoom, mortgage defaults and the address enquiries are sent to. All of it is covered in the Settings section below.

The Appearance → Install Demo screen of the Doorstep block theme in wp-admin: a preview of the demo, the list of what it installs and the Install the demo button

The Appearance › Install Demo screen of the block theme. It runs in 12-second slices, keeps a log, resumes if the tab is closed, and can reinstall or remove everything it created. On stepfoxthemes.com it is shown locked, for reference only.

Everything the installer creates is stamped. Remove demo content deletes only stamped items (listings, agents, posts, images and the demo pages), restores the reading settings and tagline, and never touches content you added yourself. Terms are removed only when nothing else uses them.

The back office

One Real Estate menu

The plugin pulls its post types out of the usual sidebar and groups everything under a single menu with a house icon, in a fixed order.

  • Overviewdashboard: tiles, health checks, demo importer
  • Propertiesall listings, filters, featured toggle
  • Add Propertynew listing
  • Agentsagent profiles
  • Enquiriesprivate inbox (administrators); red bubble = last 7 days
  • Neighborhoodsthe Location taxonomy
  • Property TypesCondo, House, Villa…
  • Deal TypesFor Sale / For Rent
  • Featuresamenities with icons
  • Settingscurrency, units, map, mortgage, enquiries

What the Overview shows

  • At a glance tiles: active listings (with drafts and sold/rented counts), for sale and for rent with their median prices, under contract, agents, and this week’s enquiries. Every tile links to the matching filtered list.
  • Recently updated listings and latest enquiries (administrators only).
  • Listing health: counts of published listings with no map pin, no price, no photos, no agent, no neighbourhood or no deal type, each linking to that filtered list. When all pass it reads “Every published listing has a price, photos, a map pin, an agent and a neighborhood.”
  • Top neighborhoods bar chart (active listings, top 8) and a Getting started checklist: pretty permalinks, add agents, create neighbourhoods with pin and photo, publish a listing, review currency, units and map settings.
Health rowHelp text shownWhy it matters
Missing map pinNot shown on map search or area maps.The listing has no latitude/longitude, so the map search and area maps skip it.
No priceSet a price or mark “Price on request”.Cards and sorting need a price or the explicit on-request flag.
No photosCards fall back to a placeholder image.Neither a cover photo nor a gallery.
No agentEnquiries go to the site email instead.Contact and tour requests fall back to the address in Settings.
No neighborhoodMissing from neighborhood pages and stats.Medians and area pages are computed per Location term.
No deal typeNeither “For Sale” nor “For Rent” — hidden from Buy/Rent searches.The Buy/Rent tabs filter on the Deal taxonomy.
The six listing-health checks on the Overview screen.

Two labels differ from their screen headings: the Neighborhoods menu item opens a screen headed “Locations” (the taxonomy name), and Deal Types opens “Deals”. There is no “Add Agent” submenu; use Add New on the Agents list, the Overview button or the admin bar.

Listings

Properties: the listing editor

A property is an ordinary post of type re_property that opens in the block editor. The description is the post content, the cover photo is the featured image, and every other fact lives in a tabbed “Listing details” meta box below it.

Real Estate → Properties in wp-admin: the listing table with photo, price, deal, type, neighborhood, beds, baths, area, status, featured star and agent columns and the filter bar

The Properties list. Columns: Photo, Property, Price (with price-drop and “On request” states), Deal, Type, Neighborhood, Beds, Baths, Area, Status, a clickable ★ Featured toggle, Agent and Date. Price and the beds/baths/area column are sortable; every chip links to the matching filter.

  • Filters above the table: deal, type, neighbourhood, status (All / Active = available + under contract / each status), agent, and featured-only. A “Featured” view link sits next to All and Published.
  • Arriving from a health row (?sfre_health=…) shows an info notice with a “Show all listings” link.
  • There is no custom Quick Edit; open the listing to change its fields.
A Doorstep property open in the block editor with the tabbed Listing details meta box and the Listing summary sidebar

A listing open in the editor. The block editor holds the description; the Listing details box below is tabbed (Price & Status, Details, Location, Media, Agent, Video & Tour). The sidebar carries the Deals, Property Types, Locations and Features panels, plus the Listing summary completeness meter.

Tab: Price & Status

FieldMeta keyNotes
Pricere_priceSale price, or the monthly rent for rentals. A live readout below shows the price per area once a living area is entered.
Price periodre_price_periodTotal price (sale) or Per month (rent).
Price on requestre_price_on_requestSwitch. Hides the amount and shows “Price on request”.
Previous pricere_price_prevSet when the price was reduced; shows the “Price drop” badge and the struck-through old price.
HOA fee / Property taxre_hoa, re_tax_yearMonthly association fee and annual tax; both feed the mortgage calculator.
Statusre_statusAvailable (default), Under contract, Sold, Rented. Sold and rented homes leave the default searches but stay reachable.
Labelre_labelNone, New, Hot, Open house, Exclusive, New construction. Rendered as a chip on cards.
Featured listingre_featuredShown in “Featured” grids and first in the home-page band. Also toggled from the list column.
Listing ref / MLS #re_mlsFree text, e.g. DS-10234.
Date listedre_listedDefaults to the publish date; never in the future. Drives “days on site” and the New badge.
Next open housere_open_houseDate and time in site time. Empty = no open house.

Tab: Details

GroupFieldsMeta keys
Size & roomsBedrooms (0 = studio), Bathrooms (half steps), Living area, Lot sizere_beds re_baths re_area re_lot_area
BuildingYear built, Garage / parking spaces, Floor (0 = ground, negative allowed), Stories in buildingre_year_built re_garage re_floor re_floors_total
HighlightsView (Ocean, Bay, City, Garden, Pool, Skyline), Energy rating (A+ to G, hidden when not rated), Waterfront, Pets allowed, Furnishedre_view re_energy re_waterfront re_pets re_furnished

Tab: Location

Street address, City, State and ZIP (re_address, re_city, re_state, re_zip) plus a MapLibre pin picker: click the map or drag the pin to the exact building, or press Find address on map to geocode the typed address through OpenStreetMap Nominatim (it only runs when you click). The coordinates are stored in re_lat and re_lng; a listing without them is flagged by the health check and left off every map.

Tab: Media

  • Photo gallery (re_gallery): Add photos opens the Media Library; drag to reorder; the first photo becomes the cover when no featured image is set. Removing a photo here never deletes it from the library.
  • Floor plans (re_floor_plans): a repeater with Title, Beds, Baths, Area and a plan image per row, with move up/down and remove.

Tabs: Agent, Video & Tour

  • Listing agent (re_agent_id): a select starting with “No agent (use the site contact)” and a preview card with Edit agent. The agent card, contact form and tour requests on this listing go to that agent.
  • Video URL (YouTube or Vimeo) and 3D tour URL (Matterport or any embeddable tour). The property video block renders nothing when both are empty.
  • Two values are derived on save and not editable: re_price_sort and re_ppa (price per area).

The Listing summary box in the sidebar shows a price preview and an “N% complete” meter with a checklist: price, 5+ photos, beds/baths/area, address and map pin, deal/type/neighbourhood, agent, and a description of 40+ words. Aim for 100% before publishing; the Overview health rows will then stay clean.

People

Agents and their profiles

An agent is a post of type re_agent: the bio is the content, the short bio is the excerpt, the headshot is the featured image, and the page-attributes order sets the directory order.

Real Estate → Agents: photo, name, role, contact, track record and active listings columns

The Agents list: Photo, Name, Role, Contact, Track record (homes sold and rating) and Active listings, which links to that agent’s filtered property list and shows the lifetime total underneath.

TabFieldsMeta keys
ProfileRole, Agency, License #, Years of experience (0–80), Languages (comma list)re_role re_agency re_license re_years re_languages
ContactPhone, Email (enquiries about this agent’s listings are emailed here), WhatsApp (international format)re_phone re_email re_whatsapp
Track recordHomes sold, Rating (0–5), Reviewsre_sold re_rating re_reviews
SocialInstagram, LinkedIn, X, Facebookre_social (JSON)
Areas servedCheckbox tree of neighbourhoods; shown on the profile and used to suggest agents on neighbourhood pagesre_areas (slugs)
The “Agent profile” meta box.

Agents are what makes enquiries route correctly: a listing with an agent that has an e-mail address sends contact and tour requests to that agent (with a copy to the office address in Settings). A listing with no agent, or an agent without an e-mail, falls back to the site address.

Vocabulary

Neighbourhoods, types, deals and features

Four taxonomies attached to properties. Deals and features are flat checkboxes in the editor; types and locations are hierarchical.

Real Estate → Neighborhoods: the hierarchical Locations taxonomy with tagline, image and map columns

The Neighborhoods screen (taxonomy re_location). Cities are parents, neighbourhoods are children. Each term carries a tagline, a cover image and a map centre; the list shows a “No pin” chip where coordinates are missing.

TaxonomyMenu labelHierarchicalPublic URLTerm fields
re_dealDeal TypesNo/deal/for-sale/None. Seeded with For Sale and For Rent; the Buy/Rent tabs filter on it.
re_typeProperty TypesYes/property-type/condo/None in the admin. Seeded: Condo, Apartment, House, Townhouse, Villa, Penthouse, Loft, Land, Commercial.
re_locationNeighborhoodsYes (city › neighbourhood)/area/miami/brickell/Tagline, Cover image, Map center (lat, lng, zoom) with the pin picker, and a read-only Median asking price computed in the background from active residential sale listings.
re_featureFeaturesNo/feature/pool/Icon: a searchable grid of the plugin’s icon set, or Auto. 26 features are seeded on activation (Pool, Ocean view, Waterfront, Boat dock, Garage, Gym, Doorman, Concierge, Balcony, Terrace, Rooftop deck, Smart home, Impact windows, Central A/C, Washer & dryer, Walk-in closet, Pet friendly, Furnished, Elevator, Spa, Wine cellar, Home office, Fireplace, EV charging, Gated community, 24/7 security).

Locations are not seeded on activation; they come from the demo import or from you. Create the city first, then its neighbourhoods underneath, and give each one a pin and a photo so neighbourhood cards and area pages have something to show.

Leads

The enquiries inbox

Every contact form, tour request and valuation request on the site becomes a private post under Real Estate › Enquiries and an e-mail. Nothing is sent to a third party.

Real Estate → Enquiries: the private inbox of contact, tour and valuation requests with a type filter

The Enquiries list (administrators only, no “Add New”). A “Filter by type” select switches between questions, tour requests and valuations; the red bubble on the menu counts enquiries received in the last seven days.

KindComes fromStored fieldsE-mailed to
QuestionContact Agent block / widget, “Ask a question” tabname, e-mail, phone, message, property, agentThe listing agent, BCC the office address from Settings
Tour requestContact Agent, “Request a tour” tabplus tour date, time and type (in person or video)The listing agent, BCC the office address
ValuationValuation Form block / widget on the Sell pageaddress, type, area, beds, baths, condition, timelineThe office address from Settings, or the site admin e-mail
Market updates / Listing alertsThe Contact page with ?topic=updates or ?topic=alertsname, e-mail, topicThe office address. There is no mailing-list backend; export from the inbox.
  • Protection: a nonce for logged-in users, a honeypot field, a signed minimum-time token and a rate limit of five submissions per ten minutes per IP. Addresses on .example or .test domains are never mailed.
  • The e-mail is HTML, has the subject “[Site] Tour request — Property title”, sets Reply-To to the visitor and links back to the enquiry in the dashboard.
  • Demo mode (Settings › Enquiries) makes forms show their success message while storing and sending nothing; use it on public staging sites.
  • Privacy: enquiries are included in the WordPress personal-data exporter and eraser (matched by e-mail), the plugin adds suggested privacy-policy text, and a daily job deletes enquiries older than the retention period you set.

In version 1.0.0 the enquiry edit screen shows the same data twice: an “Enquiry” box with Reply by email / Call buttons and an “Enquiry details” box that adds “Sent from” and whether the e-mail was sent. The list also repeats the Type, Property and Agent columns. Harmless, and scheduled for a tidy-up.

Configuration

Real Estate › Settings

One screen, six sections, one option (stepfox_re_settings). These are the values that change how prices, areas, maps and forms behave everywhere on the site.

Real Estate → Settings in wp-admin: general, appearance, map, mortgage calculator, enquiries and data sections

The Real Estate Settings screen. Everything here is also reachable from the Overview’s “Review currency, units & map settings” checklist item and from the Settings link on the Plugins screen.

General

SettingDefaultWhat it does
CurrencyUSDISO code used in structured data (schema.org priceCurrency). Twelve currencies are listed.
Currency symbol / Symbol position$ / beforeHow prices are written: $1,250,000, $ 1,250,000, 1,250,000$ or 1,250,000 $.
Area unitSquare feetSquare feet or square metres. Areas are stored as entered; changing the unit does not convert existing listings.
Country codeUSTwo-letter ISO code for listing addresses in structured data.
Market name(empty)The city or region you cover, used in headings and titles such as “Condos for sale in Miami”. Empty = the city most listings are in.
Default searchAll listingsWhether searches start on all listings, For Sale or For Rent.
“New” badge for14 daysHow long a listing shows the New badge after its listed date.

Appearance and Map

SettingDefaultWhat it does
Default color schemeLightThe scheme visitors see before they use the header toggle.
Follow device settingOnVisitors who have not used the toggle get the scheme their device prefers.
Map style (light) / (dark)bundledAny MapLibre style URL (MapTiler, Stadia…). Empty uses the bundled styles on OpenFreeMap tiles, which need no key.
Default center / Default zoom25.7617, -80.1918 / 11Used when a map has no listings to frame.
Cluster radius50 pxHow close price pins must be before they merge into a cluster.
Search as the map movesOnMap search refreshes results when the map is panned; visitors can switch it off.

Mortgage calculator, Enquiries and Data

SettingDefaultWhat it does
Interest rate / Loan term / Down payment6.5% / 30 years / 20%Starting values of the calculator on listing pages. Visitors can change them; each calculator block can override them.
Property tax rate / Home insurance1.9% / 0.35% per yearAdded to the monthly estimate alongside the listing’s HOA fee.
Send enquiries to(site admin e-mail)Receives valuation requests and anything a listing agent cannot receive; is also copied on agent e-mails.
Demo modeOffForms succeed visibly but store and send nothing.
Keep enquiries for365 daysOlder enquiries are deleted automatically once a day; 0 keeps them forever.
On uninstallOffAlso delete every listing, agent and their terms when the plugin is deleted. Settings, caches and enquiries are always removed; photos always stay.

Under the hood

What the front end computes for you

Most of what visitors see is derived from the listings. Nothing on this list needs an API key, an external account or a cron job you have to set up.

Map search

MapLibre GL with the bundled light and dark styles on OpenFreeMap vector tiles. Price pins, clustering, draw-to-search and search-as-you-move, with the result list, chips and heading refreshed over REST. One Map Search block per page; the library loads only when a map nears the viewport.

Search URLs

Every filter is a plain query parameter, so a search is a shareable link and the same URL drives the hero form, the filter bar and every archive. Pages with map bounds, drawn shapes, keywords or page numbers are marked noindex.

Market statistics

Median price, price per area, active listings, days on market and price cuts are computed from the listings, per neighbourhood and for the whole market. Location medians refresh two minutes after listing data changes.

Saved homes & compare

Favourites, the compare list (up to four homes) and saved searches live in the visitor’s browser storage. Nothing is stored on the server until a form is sent. The Saved and Compare pages are found by slug.

Mortgage calculator

Principal and interest, taxes, HOA and insurance from the Settings defaults, shown as a donut. The button opens the contact form with a pre-approval message unless you point it elsewhere.

SEO & schema

RealEstateListing + Offer + Place JSON-LD on listings, Person on agents, ItemList on archives and BreadcrumbList everywhere. Meta description, Open Graph and Twitter tags are printed only when no SEO plugin (Yoast, Rank Math, SEOPress, AIOSEO, TSF) is active.

Search parameters

ParameterValuesMeaning
dealfor-sale, for-rentBuy or rent
ptype / area / featterm slugsProperty types, neighbourhoods, features (features are ANDed)
min_price, max_pricenumbersPrice range
beds, bathsnumbersMinimum rooms
min_sqft, max_sqftnumbersLiving-area range (in the configured unit)
statusavailable, under-contract, sold, rented, anyDefault is available + under contract
sortnewest, price-asc, price-desc, sqft-desc, ppa-ascNewest, price low›high, price high›low, size, price per area
kw, bounds, shape, pg, viewtext, bbox, polygon, number, split/map/listKeyword, map viewport, drawn area, page, layout
Example: /properties/?deal=for-rent&beds=2

REST API

Route (namespace real-estate/v1)AccessPurpose
GET /searchpublicFiltered results: card HTML, pager, chips, markers, bounds and heading
GET /markerspublicMap markers, capped at 2,000
GET /cards?ids=, GET /property/{id}/cardpublicCard HTML for compare and map popups
GET /locations?q=publicNeighbourhood type-ahead
POST /render-batch, /contextsedit_postsEditor previews
/wp/v2/re_property, /wp/v2/re_agentstandardEvery re_* field is registered post meta, so WP All Import, a CSV importer or a short script can map an IDX or MLS feed onto listings.

Image sizes the plugin registers

Listing card (4:3) 800×600Listing hero (3:2) 1600×1067Listing thumbnail (4:3) 480×360Square (1:1) 600×600Wide (16:9) 1200×675Face (1:1) 300×300

Dark mode is a runtime toggle, not a theme switch: the server writes the scheme on the <html> element, a pre-paint script reads the visitor’s stored choice, then the device preference, then the site default, and the map style follows. The block theme’s “Night” style variation is different: it permanently swaps the palette in the Site Editor.

Block editor

The 73 blocks

All blocks sit in the “Real Estate” inserter category and are prefixed “Real Estate —”. They are small and single-purpose: a price, a photo, a badge, a loop. Cards are built by nesting them, so anything on the demo can be opened and changed.

The block inserter in the Site Editor filtered to the Real Estate category, listing the plugin blocks

The block inserter filtered to the Real Estate category inside the Site Editor. Every block also gets an Additional CSS class(es) field and a Style ID in its Advanced panel; the Style ID is what Stepfox Looks uses to attach per-device styles.

How a block knows which listing to show

  • Property fields resolve, in order: the Property ID set in the block’s Advanced panel › the enclosing Property Loop or Property Context › the core post ID (for example inside a Query Loop over properties) › the listing being viewed.
  • Agent fields: Agent ID › Agent Loop or Agent Context › the agent of the property in context › the agent being viewed.
  • Location fields: Location ID › Location Loop › the neighbourhood archive being viewed › the deepest neighbourhood of the property in context.
  • In the editor every field previews with a sample entity. An empty value renders as hidden, so a card never shows a blank line.
  • Loops repeat whatever you place inside them. A fresh Property Loop comes with a default card (image, price, title, location, facts and a whole-card link) that you can take apart. Loop Pagination goes below a loop with Paginate on.

Property field blocks (23)

BlockRendersInspector controls
Property TitleThe listing titleHTML tag (H1–H6, paragraph, div, span; default H3); Link to listing
Property PricePrice with rent period, struck-through previous priceFormat: Full ($1,250,000) or Short ($1.25M); Show rent period; Show previous price
Property Price per AreaPrice per sq ft or m²—
Property ImageCover photo with chips, save heart and photo countImage size; Aspect ratio (4:3, 3:2, 16:9, 1:1, 3:4, 4:5, original); Link; Show photo count / chips / save heart; Loading priority
Property Link (whole card)An invisible link stretched over the card—
Property Deal / Status / Label BadgeFor Sale · For Rent; Under contract · Sold · Rented; New · Hot · Open house · Exclusive · New constructionStatus badge hides while available
Property TypeCondo, House…—
Property LocationNeighbourhood, city or full address with a pinFormat (Neighborhood, City / City, State / Full address); Pin icon
Property AddressStreet linePin icon
Property Beds / Baths / Area / Lot Size / Year Built / GarageOne fact eachShow icon; Show label; Label style (short bd/ba or long)
Property Facts RowBeds · baths · area in one row (studio and land aware)Facts list (beds, baths, area, lot, year, garage, floor, type, ppa); Separator (dot/hairline); icons; label style
Property ExcerptA teaser from the descriptionWords (22)
Property Listing IDMLS / reference—
Property Listed Date“3 days on Doorstep” or the dateDays on site / Date listed
Property AgentThe listing agentAvatar + name / Name / Photo
Property Open House“Open house Sat 1–3pm”, hidden when none—

Agent (9) and location (6) field blocks

BlockInspector controls
Agent NameHTML tag (default H3); Link to agent profile
Agent PhotoImage size (Square, Face, Card, Large); Shape (Circle, Rounded); Link; Loading priority
Agent Role / Phone / Email / BioAppend agency; Tap to call + icon; Mailto + icon; Words (0 = full bio)
Agent StatsWhich stats (active listings, homes sold, years, rating); Label style
Agent Socials, Agent Contact ButtonsSocial links; call, e-mail and WhatsApp buttons
Location Name / Tagline / LinkHTML tag and link; the tagline; a whole-tile link
Location ImageAspect ratio (4:5 default … fill parent); Loading priority
Location Listings Count, Location Median PriceSuffix (“homes”); Show “Median” label

Loops, context and save/compare (9)

BlockWhat it doesInspector controls
Property LoopRepeats your card for every listing; style the grid on this blockSource (Latest, Featured, Current archive, Similar to this listing, This agent’s listings, In a neighborhood, Hand-picked IDs, Price reduced, Upcoming open houses); Deal; type and neighbourhood slugs; IDs; Number; Order (newest, price, largest, price per area, random); Paginate; Listing status; Phone layout (stacked or swipe rail); Empty text
Agent LoopRepeats your card for agentsNumber; Order (homes sold, active listings, rating, experience, name, random); Only agents serving a neighbourhood; Phone layout
Location LoopRepeats your tile for neighbourhoodsParent slug (“top” = top level); Hand-picked slugs; Number; Hide empty; Phone layout
Loop PaginationNumbered pages for a paged Property Loop, keeping the active filtersLoop block ID (empty = the last paged loop)
Property Context / Agent ContextPins one listing or agent for the blocks inside (a hero featuring a hand-picked home)Listing ID / Agent ID (0 = current)
Property Save (Heart) / Property Compare ToggleFavourite and compare buttonsStyle (round icon or button with label)
Saved Homes LinkThe header heart with a live countSaved page URL; Show “Saved” label

Property page components (10)

Each takes a Property source (empty = the property of the current page) and most have an optional section heading that disappears together with the block when the property has nothing to show.

BlockRendersInspector controls
Property GalleryMosaic, slider or grid with a full-screen lightboxLayout (Mosaic 1 + 4 / Slider / Grid); Photos in the layout
Property HeaderBreadcrumb, badges, title, address, price, payment estimate, save/share/compare/print, sticky price barShow each button; Show breadcrumb; Sticky price bar; Title tag
Property Key FactsIcon stripFacts list (beds, baths, area, lot, year, garage, type, ppa, floor, stories, hoa, days, status, view, energy, mls)
Property DetailsOverview, Interior, Building & lot and Financial tablesGroups; Section heading
Property FeaturesAmenities grid plus view, waterfront, pets, furnishedColumns; Section heading
Property DescriptionThe content with a “Read more” clampCollapse long descriptions; Section heading
Property Floor PlansOne tab per plan, opens full screenSection heading
Property Video & 3D TourLoads on click; renders nothing without a URLSection heading (auto)
Mortgage CalculatorMonthly estimate with donutHome price (0 = listing price); Interest rate; Loan term; Down payment; Show donut; Button text and link; Section heading
Contact AgentAgent card, call / WhatsApp / e-mail, and the Request a tour / Ask a question formProperty; Agent (empty = listing agent); Offer “Request a tour”; Sticky on desktop; Title

Listing, site and map components (16)

BlockRendersInspector controls
Search FormHero, bar or stacked search with Buy/Rent tabs, location type-ahead, type, price and bedsLayout (Hero glass panel / Bar / Stacked); Show tabs; Default deal; which fields; Results page URL; Button text; Quick chips and label
Search FiltersFilter bar or sidebar; a sheet on phonesLayout; Fields (deal, type, location, price, beds, baths, area, features, keyword, sort); Results URL; Show result count; Show active chips
Property GridA grid of cards without building the card yourselfSame sources as the loop; Number; Order; Status; Columns; Card style (Card / Row / Overlay); Pagination; Empty text; Phone layout
Property CarouselA swipeable railSources; Cards per view; Autoplay and interval; Arrows; Dots; Card style
Agent Card, Agents GridOne agent, or a gridStyle (Full / Compact / Horizontal); Show stats and buttons; Number; Columns; Order; Serves location
Location GridNeighbourhood tiles with photo, count and medianParent; slugs; Number; Layout (Editorial mosaic / Grid / Chips); Columns; Order; Show count and median; Hide empty
Market StatsMedian price, price per area, active listings, days on market, price cuts, per-neighbourhood chartLocation; Deal; Style (Band / Cards / Chart); Title; Chart metric; Chart bars
Stats CounterBig numbers that count upItems (value|label|prefix|suffix per line, or empty for live numbers); Count up; Style
Favorites List, Compare TableThe visitor’s saved homes; the side-by-side tableEmpty text; Columns; Toolbar; “Only differences” toggle
Valuation Form“What’s my home worth?”Title; Intro; Button text; Benefits panel; Instant ballpark; Two-step form
Map SearchSplit view: filters, result cards and the clustered price-pin map with draw-to-search (one per page)Deal; Type; Location; Per page; List width; Map style; Show draw; Show filters; Height; View
Area MapA teaser map linking to map searchLocation; Deal; Height; Zoom; Limit; Link text; Map style
Property MapOne listing, optional nearby comparables, directions linkProperty; Height; Zoom; Show nearby; Show area
Theme toggleThe light/dark switch that remembers the visitor’s choiceVariant (icon / switch)

The three map blocks and the theme toggle show auto-generated inspector labels in the block editor (their Elementor widgets have proper ones). The controls work as described above.

Block theme

Templates, parts and patterns

Doorstep is a full-site-editing theme. Every page type is a template of ordinary blocks that opens in the Site Editor; there is no theme options screen and no Customizer section.

Inside the Site Editor: the Doorstep front page open as blocks, List View on the left, block settings on the right

The demo front page open in the Site Editor: List View on the left reaches every block inside every card, and the Stepfox Looks sidebar on the right holds desktop, tablet and mobile values for spacing, colours and typography.

The Site Editor Templates list of the Doorstep block theme

The Templates list. Page templates such as Saved homes or Market report are matched by page slug, and are also offered in the page editor’s Template picker.

TemplateServesBuilt from
Front PageThe static home pageCover hero with Search Form, featured Property Loop, Area Map, two Location Grids, two Property Carousels, Market Stats, Agents Grid, journal Query Loop
Properties archive/properties/ and every /feature/…/ archiveHeader part and a full-height Map Search; no footer
Single Property/property/…/Property Context › Header, Gallery, Key Facts, Description, Features, Details, Floor Plans, Video, Property Map, Mortgage Calculator, Contact Agent, two “similar” loops
Agents archive, Single Agent/agents/, /agent/…/Stats Counter + Agents Grid; Agent Context with photo, name, role, stats, socials, buttons, bio, Contact Agent, the agent’s listings
Location, Type and Deal archives/area/…/, /property-type/…/, /deal/…/Hero with image, count and median + Market Stats + preset Map Search + sub-areas; Search Filters + paged loop + Loop Pagination + Location Grid
Saved homes, Compare homesPages with slug saved, compareFavorites List; Compare Table
Neighborhoods, Market report, Sell, Contact, AboutPages with slug neighborhoods, market, sell, contact, aboutLocation Grid + Market Stats + Area Map; Market Stats ×3 + report posts; Valuation Form + Stats + Agents + FAQ; office Contact Agent + Agents Grid (with ?topic= modes); Cover + Stats + Agents
Journal, Single Post, Archive, Category, Search, 404, Page, IndexThe editorial layer and fallbacksQuery Loops of posts with a Property Loop rail
23 templates in all. The feature archive uses the map-search template because the plugin sets the post type on term archives.

Template parts and navigation

  • Header: site logo, a core Navigation block with Buy, Rent, Map search, Neighborhoods, Agents, Market, Journal and List your home, the Saved Homes Link and the Theme toggle. The theme registers no classic menu locations; edit links in the Site Editor.
  • Footer: a “Get market updates” band (it files into Enquiries), link columns, ten neighbourhood chips, credits and social links.
  • Links inside the templates are written for the demo and rewritten to your own site address at render time and in the editor, so nothing points back at the demo after install.

Patterns (category “Doorstep”)

Hero with property searchNeighborhood bandSell with DoorstepAgent spotlightNeighborhood chipsBuyer FAQFeatured listingsJust listed carouselMap search teaserMortgage calculator CTAListing alerts sign-upOpen house bannerMarket stats bandClient testimonialsWhy Doorstep

theme.json: palette, type and spacing

SettingValues
LayoutContent 1240 px, wide 1440 px
PalettePaper #f7f5f0, Card, Sand #efeae1, Hairline, Ink #14181f, Slate #5d6672, Sunset coral #e0553d, Ocean teal #0f766e, Lagoon #14b8a6, Harbor navy #1d3557, Mint wash #dcefe9, Brass #8a6400, Glass bar, Glass panel, Lit edge, Transparent
GradientsSunset, Ocean, Dusk, Photo scrim
Fonts (self-hosted)Display — Fraunces, Interface — Manrope, Body — Inter, Numbers — Manrope
Font sizesTiny 12 · Small 14 · Medium 16 · Large 20 · Extra large 28 · Headline 42 · Display 72
Spacing scaleHair 4 · Tight 8 · Snug 12 · Base 16 · Roomy 24 · Block 32 · Section 48 · Band 64 · Stage 96
ShadowsFlat, Rest, Card, Lifted card, Floating panel, Hairline ring, Coral focus ring
Style variation“Night” (styles/dark.json) swaps the palette permanently; the header toggle is the runtime alternative

Because the theme has no stylesheet, restyling is done per block: select a card in List View, open the Stepfox Looks panel and change the value for desktop, tablet or mobile. The change becomes a block attribute, so there is no child theme to maintain and nothing to override.

Elementor edition

Doorstep for Elementor

The Elementor theme renders the same records through 28 native widgets and 4 dynamic tags. With Elementor Pro the layouts are editable Theme Builder templates; without it, every route has a complete PHP fallback built from the same components.

The Elementor editor: the Doorstep front page open with the native widget workspace

The demo front page open in the Elementor editor. Widgets live in a “Real Estate” panel category; each one has Content controls plus a Style tab with colours, card corner radius, gap and typography.

Appearance → Doorstep Setup in the Elementor edition: system check and the Install the demo layout button

The Appearance › Doorstep Setup wizard checks Elementor, the plugin, Elementor Pro (optional) and permalinks, then installs the demo layout: the kit, the pages, the menus and (with Pro) the Theme Builder templates. It is safe to re-run.

Widgets (category “Real Estate”)

WidgetContent controls
Map SearchDeal; Property type; Neighborhood; Results per page; Follow the archive; Results panel width; Map style (follow scheme / always light / always dark); Draw-to-search; Filter bar; Height; Initial view (map + list, map only, list only)
Area Map, Property MapNeighborhood or Source; Deal; Maximum pins; Link text; Height; Zoom; Map style; Show nearby listings; Show area
Search Form, Search FiltersDefault deal; Results page URL; Button text; Quick chips; Layout; which fields / filters; Show result count; Show active chips
Property Grid, Property CarouselListings (nine sources); Deal; Type; Neighborhood; Hand-picked; Number; Order; Listing status; Empty-state text; Follow the archive; Columns; Card style; Pagination or Cards per view, Autoplay, Arrows, Dots
Property CardThe one canonical card, for Loop Grid items or featured spots (no block equivalent): Card style (Card, Row, Photo overlay, Mini); Image size; Title tag; Summary and features; Badges; Save and Compare buttons; Photo count; Agent footer
Property Gallery, Header, Key Facts, Details, Features, Description, Floor Plans, Video & 3D TourSource (current property or a picked one) plus the same options as the matching blocks
Mortgage Calculator, Contact AgentHome price; rate; term; down payment; button; donut — Agent (listing agent or named); Title; Schedule-a-tour tab; Sticky on desktop
Agent Card, Agents Grid, Neighborhoods, Market Stats, Stats CounterStyle; stats and buttons; Number; Order; Serving area; Columns; Layout; Chart metric and bars; Figures repeater; Count up
Saved Homes, Compare Homes, Home Valuation, Light / Dark Toggle, Saved Homes LinkEmpty-state text; Columns; Toolbar; “Only differences”; Title, intro, button, two-step form, benefits panel, instant ballpark; Style; Saved page URL
Doorstep — Search hero, Doorstep — Journal (theme widgets)Background photo, kicker, headline and tag, lede, search form, quick chips, live counts; Layout (feature + grid, lead story, card grid, compact list), columns, posts, category, empty message

Dynamic tags (group “Real Estate”)

  • Real Estate Field: any property fact (title, prices, price drop, rooms, areas, year, address parts, neighbourhood, deal, type, status, label, MLS, open house, days on market, photo count, features, view, energy rating, summary, coordinates), any agent fact (name, role, agency, phone, e-mail, WhatsApp, licence, languages, years, homes sold, rating, reviews, listing counts, short bio) or any neighbourhood fact (name, parent, tagline, listing counts, median), plus raw meta keys. Option: plain text.
  • Real Estate Image: cover photo, gallery photo N, floor plan N, agent photo or neighbourhood image, with resolution and fallback.
  • Real Estate Link: property page, map directions, video, 3D tour, neighbourhood, type or deal archive; agent page, call, e-mail, WhatsApp; all properties, all agents.
  • Real Estate Gallery: the photo set for Elementor gallery widgets, optionally including the cover and floor plans, with a maximum.

Theme Builder templates (Elementor Pro)

HeaderFooterFooter (Map search: none)Single PropertySingle AgentSingle PostSingle PageProperties (Map Search)Agents ArchiveNeighborhood ArchiveProperty Type ArchiveBuy / Rent ArchiveHome Feature ArchiveJournal (Posts Page)Blog ArchiveSearch Results404Search Result Card (Loop Item)

Each template carries its display condition (entire site, the properties archive, single property, and so on). Without Pro, the theme’s PHP files (header.php, single-re_property.php, archive-re_property.php, the taxonomy templates, single.php, search.php, 404.php…) render the same components, so nothing is missing.

Theme options

WhereWhat you can set
Customize › Doorstep header & footerHeader button label (“List your home”) and link, office address, phone, e-mail and opening hours, Instagram / Facebook / LinkedIn / X / YouTube URLs, footer legal note. Used by the PHP header and footer.
Appearance › MenusThree locations: Primary, Footer — Explore, Footer — Company. The wizard creates and assigns Doorstep Primary, Footer — Explore and Footer — Company.
Elementor › Site Settings (kit)Written by the wizard: coral / teal / ink system colours, the 16 palette colours, Fraunces / Manrope / Inter global fonts, 1240 px container, lightbox off, Google Fonts off with a self-hosted “Doorstep” font group.
Appearance › Doorstep SetupCreates the pages (Home, Journal, Neighborhoods, Market, Saved Homes, Compare, Sell, Contact, About, Privacy Policy), sets permalinks, front and posts page, menus, kit and templates. Shows a notice until it has run once.

Go live

From zero to open house

The order that avoids rework: people and places first, then listings, then polish.

Install and activate

Plugin (plus Stepfox Looks or Elementor), then the theme. Let Install Demo run if you want the Miami dataset to learn from; it removes cleanly later.

Settings

Permalinks on post name, timezone, then Real Estate › Settings: currency, area unit, country, market name, map centre and zoom, mortgage defaults, the enquiries address. Leave Demo mode off on a real site.

Add your agents

Headshot, bio, role, agency, licence, languages, e-mail (this is where their enquiries go), phone, WhatsApp, track record, social links and the areas they serve.

Create neighbourhoods

City as parent, neighbourhoods as children, each with a tagline, a cover image and a map centre. Medians fill in by themselves once listings exist.

Add properties

Title, a 40+ word description, cover photo and excerpt; tick deal, type, neighbourhood and features in the sidebar; work through the six Listing-details tabs and drop the map pin. Watch the Listing summary meter reach 100%.

Check the Overview

Clear every Listing-health row and finish the Getting-started list. Remove the demo content if you imported it.

Make it yours

Block edition: Site Editor › header links, Styles, patterns, optionally the Night variation. Elementor edition: Customize › Doorstep header & footer, Menus, the kit, and the templates.

Test the forms

Send a question, a tour request and a valuation. Each should appear under Enquiries and arrive by e-mail at the right address. Updates arrive later under Dashboard › Updates.

Good to know

Questions, answered

Is there a licence key?

No. All three packages contact stepfoxthemes.com twice a day for updates (results cached for twelve hours) and show the normal “Update available” rows. Dashboard › Updates › Check Again bypasses the cache.

What happens when I delete the plugin?

Settings, caches and all enquiries (personal data) are always removed. Listings, agents and their terms are removed only if you ticked On uninstall in Settings › Data. Media files are never deleted.

Can I import an IDX or MLS feed?

Not with a built-in connector, but every listing field is registered post meta exposed in the REST API, so WP All Import, a CSV importer or a short script can map a feed to properties. The field names are listed in the Properties section above.

Do I need a Google Maps key?

No. Maps use MapLibre GL and OpenFreeMap tiles, which allow commercial use without an account. If you prefer MapTiler or Stadia, paste the style URL into Settings › Map.

Where do favourites and compare lists live?

In the visitor’s browser. Nothing is written to your database until a form is submitted, which keeps the privacy policy simple.

Does Elementor need Pro?

No. Pro makes the Theme Builder templates editable; without it the same pages come from the theme’s PHP templates and the widgets still work on any Elementor page.

Which pages must exist?

Block edition: pages with the slugs saved, compare, neighborhoods, market, sell, contact and about, plus a posts page. The installer creates them; the templates match by slug and are also selectable in the page editor.

How is dark mode handled?

A header toggle flips the whole site, maps included, and remembers the choice per visitor. Settings › Appearance picks the default and whether to follow the device. The block theme additionally has a permanent “Night” style variation.

Ready for open house?

Two themes, one listings engine, a Miami demo with 72 homes and a map that searches. Get the Doorstep bundle for a one-time $99.

Theme overview|Product page|Elementor demo|Support

ABOUT US