Implementation Guide
For developers and agencies building or redesigning a website for an accommodation operator who uses Guesty. It covers what the plugin does, the two ways to present a property, the full set of shortcodes, and the things worth checking before you design against it. Where a capability is not built in today it is marked so you never design against something before it exists.
01What it does
The plugin pulls live property data, availability and pricing from Guesty. The static content, photos, description, amenities, location and from-price, syncs into WordPress and renders as native HTML on your own pages. The live quote and the search are real time. There is no iframe and nothing to maintain by hand.
The plugin is enabled with the operator's own per-organisation Guesty API credentials, which we set up. Until those are in place it is installed but inactive. Once connected, the listings pull in.
02How it works
Each property becomes a real WordPress post under a custom post type, with a permanent URL and server-rendered HTML. The factual content arrives from a scheduled sync, and only the price quote and search run live in the browser. That means the pages behave like any native WordPress page for SEO, caching and speed, while availability and pricing stay current.
03Two ways to present a property
Option 1 — the plugin builds and owns the page
Leave the default on and the plugin creates and maintains a page for every listing, with a fixed layout. You can switch sections off and restyle it, but you cannot reorder or rebuild the structure. Lowest effort, no template work.
By default the page shows the title, the photo gallery, the specs and the live booking panel. Beneath that come an About this stay block that opens with the property summary then Guesty's 'the space' copy, any video, the amenities, the location map and neighbourhood, a good to know block with the host note and lastly guest reviews. Each of those sections can be switched off under Properties, then Settings, then Sections. Two Guesty fields are off by default and switched on in the same place when you want them: the Guesty notes and the house rules.
Option 2 — you build the page yourself
The route for a full custom design. You build the page however you like, attach the live listing to it, and the plugin syncs the Guesty content onto that page and renders each piece through a shortcode you place. Your markup, layout and photos are never touched. The content blocks render server side, so the description, amenities and the rest sit in the page source for SEO, and the data comes from the sync, so there is nothing to upload by hand.
Both models can run on the same site. Let the plugin own the simple listings and hand-build the hero properties.
04Requirements and compatibility
The plugin runs on a current WordPress site. Because it is centrally maintained, it is kept in step with WordPress releases, so you are not chasing compatibility. The content blocks are standard shortcodes and Gutenberg blocks, so they work in the block editor and in any page builder that renders shortcodes. We confirm the exact environment, including the PHP version, when we connect your site.
05Installation and updates
The plugin is not distributed through the public WordPress directory. We provide it directly and connect it to your Guesty account. Updates are delivered automatically from our maintained release channel, so it stays current without manual reinstalls, and a fix reaches every site we look after at once.
06Connecting your site
The live search and quote only answer requests from approved domains. Send us your production domain and any staging or preview domains up front and we register them. A domain that is not on the list returns no search results or quotes, so this is the first thing to sort on any new environment.
Switching a listing to your own page
- Go to Properties, then Settings, then the Connection tab. Under Listing pages, untick Create a property page for each Guesty listing. That switches the plugin to adopt mode. It only stops new pages being created and changes nothing that already exists.
- Build or redesign the listing page however you want, on any post type. You can do this later, you just need the record type to exist.
- Go to Properties, then Match listings, and attach the live listing to that page. This binds the page to the property without altering your content.
- Run a sync from Properties, then Settings, then Sync now. That pulls the Guesty content onto the matched page.
- Drop the tags where you want each piece.
Matching attaches the Guesty connection to your existing post and leaves it in place. It never migrates the page or creates a second one, so a property never ends up with two competing pages.
07Shortcodes and blocks
Content blocks
Each reads the listing attached to the current page and renders server side from the synced data, so it sits in the page source.
[tac_title]the property title[tac_gallery]the photo gallery[tac_price]the from-price per night[tac_specs]bedrooms, bathrooms and capacity[tac_description]the property summary and description[tac_space]Guesty's 'the space' detail, shown beneath the summary[tac_amenities]the amenities list[tac_map]the location map[tac_notes]the Guesty notes, off by default in the plugin layout[tac_house_rules]the house rules, off by default in the plugin layout[tac_callouts]the listing's call-out pills, where the operator has marked tags as call-outs
Live blocks
[tac_quote]the booking box: dates, guests, a live price breakdown and the reserve button. No attributes, reads the current page's listing.[tac_reviews]guest reviews. No attributes, hides itself if there are none.[tac_calendar]an availability calendar. Optionalmonths(defaults to 2) and an optionallistingby ID.
Search bar styles
The search page ships with an extended bar by default: Where, dates and a Guests and rooms popup that carries guest, bedroom and bathroom steppers, where bedrooms and bathrooms are a minimum and Any means no filter, plus up to five tag toggles with operator-set wording, so a tag like pet friendly can read Travelling with pets. A simpler single-row bar is available as the alternative under Properties, then Settings, then Tags, then Search bar style.
Index, landing and showcase pages
[tac_search] is the search and results grid. Use show="all" or show="available". For landing pages, pre-filter with suburb, amenities (comma separated), tags (comma separated) and lock="true" to fix the filters.
With lock on, the filter is permanent and the locked controls are hidden, which suits a fixed page like a pet-friendly or single-suburb page. Without lock, it is a starting point the guest can change. Amenity and tag values must match the actual strings in the operator's Guesty data, which Guesty does not name consistently, so set the block to the real values found across the synced listings. Tag matching is not case sensitive.
[tac_grid] shows the results grid on its own, with no search bar and no filter controls, for a showcase page that presents a fixed set of properties without letting the guest search on dates. It takes the same suburb, amenities and tags pre-filters, plus max to cap how many show and order, which is random by default or first for feed order. When more match than the cap, a random set is drawn on each load.
Block equivalents exist for the search grid and calendar, tac/booking-search and tac/booking-calendar, if blocks are easier than shortcodes.
08Theming and styling
The components inherit your site fonts and colours by default, so they blend with your CSS out of the box. To override anything, every colour, font, corner radius and button style is exposed under Properties, then Settings, then Look & feel. Each field is blank by default, which means inherit, so you only set what you want to change. The plugin's styles are scoped to their own classes, so they do not bleed into the rest of the site, and it only loads its CSS and JS on pages that carry one of the tags or a matched listing.
Custom WordPress blocks can sit between the plugin's shortcodes on a property page. Once the page is matched, each shortcode renders its piece and you can place whatever you like around them, a brief-us CTA, a related-properties carousel, an editorial block. A full CSS-variable token system, for tighter alignment to a design system, is on the roadmap.
09Booking patterns
- Instant Book or Request to Book Built in
Whichever the operator has set in Guesty. The plugin follows the Guesty setting rather than imposing a mode. The reserve button hands the guest to the Guesty hosted checkout, which runs whatever mode Guesty is set to: an instant booking, or a request to book with the card captured and no charge until the operator confirms. - Enquiry only Built in Per-listing on the roadmap
The plugin shows an enquiry form instead of a price whenever there is no availability, and an offboarded property reads as no availability, so it falls back to enquiry automatically. Driving enquiry-only on a chosen listing from a Guesty tag, with the calendar suppressed, is on the roadmap. - Hidden or by-invitation listings Roadmap
Hiding listings from the public search based on a Guesty tag, so invitation-only properties stay out of search while their pages remain reachable by link, is on the roadmap. To keep listings off the site entirely, by tag, see Exclude tags under Tags and filtering. - Both CTAs on one listing On request
A listing can carry a reserve CTA and an additional enquiry CTA on the quote widget where both are wanted.
11Maps, location and privacy
- Maps Built in
An interactive map ships by default on the free OpenStreetMap base, with no key and no cost. Add a Google Maps API key to switch to Google, with basic in-plugin controls to hide points of interest, hide transit and mute the palette, or paste a Google cloud Map ID to apply a fully custom style built in the Google console. Google is a paid Google product, billed per map load above a free monthly allowance, and the key should be restricted to your live and test domains. - Default zoom Built in
Set how close in the property map opens, on both the free and Google maps, under Properties, then Settings, then Maps. - Location privacy Built in
Turn on approximate location and the property map shows a shaded circle instead of a pin, with a radius, colour and opacity you set and the operator logo in the centre. The centre is shifted on the server, so the exact coordinates never reach the page. It carries to the search map too, where the pins sit approximately rather than on the exact address. Because the map sits on a light background, the circle takes its own logo upload, set under Maps, rather than reusing a search logo built for a dark background. - Map off Built in
On a build-your-own page, simply leave[tac_map]off the template.
12Reviews
The plugin pulls reviews from the Guesty API, with moderation, and the block auto-hides on any property with none. Reviews cannot be hard-coded per property, they need to be in Guesty.
Reviews render as HTML, not as Review or AggregateRating structured data. Because the pages are real server-side HTML the markup can be added to the template, but it is not generated out of the box and is treated as defined work.
13SEO and crawlability
- Render model. Server rendered. Each plugin-built property is a real WordPress post at
/property/{slug}, output as HTML, so it sits in your XML sitemap and is indexed like any page. The only client-side call is the live quote, which loads after the page paints and does not affect crawlability. On a build-your-own page you have full control of the markup. - Meta and social. Per-property meta titles, descriptions, canonical tags and Open Graph are handled by your site SEO plugin, such as Yoast, which reads the property pages like any other post.
- Image SEO. Image alt text is generated from the listing title and suburb on import.
- Schema markup. RealEstateListing, Product, AggregateRating, Review, BreadcrumbList and ImageObject are not emitted out of the box. The pages carry the structured fields, so this markup can be added to the templates as defined work.
- Preserving existing URLs. On the build-your-own model the plugin attaches to your existing property post, leaving its URL and content in place, so established SEO equity is kept. It never creates a second page for a property that already exists.
- Removed properties. When a property is delisted in Guesty the plugin flags it for review rather than deleting or unpublishing it, and you set a 301 redirect target on the retired page, for example to its suburb page or a comparable home.
- Landing pages. Build a normal, fully indexable WordPress page and drop in a filtered search block, so a suburb or a theme becomes a real page that can rank.
14Photos and content migration
The plugin pulls photos from Guesty into your WordPress media library, best for SEO and speed, keyed so the daily sync does not re-download them. Hotlinking from Guesty is an option. On a page you have already built you can keep your own photography, replace it with Guesty's, or run both, and you can add extra photos and videos the sync never overwrites.
The plugin reads whatever is in Guesty, so photos need to live in Guesty first. Moving them from a previous system into Guesty is part of the property management migration rather than something the plugin does. Once they are in Guesty the plugin brings them across automatically.
15Booking flow and payment
The plugin's scope ends at the reserve CTA on the property detail page. The rest of the flow runs on Guesty.
- Booking mode. Instant Book or Request to Book is whatever the operator has set in Guesty. The plugin reflects it, it does not set it.
- Payment. Card capture and payment run through the operator's Guesty payment setup, such as Stripe via Guesty Trust. The payment is handled by Guesty, not by the plugin.
- End to end. On the property page the plugin handles date selection and a live quote including fees. The reserve button hands the guest to the Guesty hosted checkout for guest details, terms, payment or card capture, and confirmation. Whether that is an instant charge or a card captured with no charge until the operator confirms is set in Guesty.
- Confirmation. The confirmation page is handled by the Guesty booking engine. The confirmation email is branded to the operator through their Guesty account templates.
- A fully branded, end-to-end checkout in a custom design system means building a custom checkout against the Guesty Booking Engine API rather than using the hosted page. That is a defined, separate piece of work.
16Analytics
You can run Google Analytics 4 on the site as normal, alongside the plugin. Richer in-funnel tracking, search and reserve events and conversion measurement, is on the way as part of our analytics work. Note that the checkout completes on Guesty, so full end-to-end conversion tracking spans the two domains.
17Performance, caching and security
- Page load. Each property is its own static WordPress post with images served from the media library, not hotlinked, so individual page load is the same as any native WordPress page and does not degrade as the portfolio grows. The only live element is the quote, which loads asynchronously.
- Caching and CDN. The static property pages can be cached and served through a CDN like any WordPress page. The live availability and quote are never cached, so prices and dates are always current even behind a page cache.
- Security. The operator's Guesty credentials are held by us and never stored in WordPress. The site talks to a single secured endpoint, so there are no API keys sitting in the WordPress database or theme.
18Working alongside a custom WordPress site
- Coexistence. The plugin only governs the property pages and the blocks you place. Service pages, blog, about and owner content are standard WordPress and untouched.
- CSS. The plugin's styles are scoped to their own classes, fonts inherit from your theme and colours are set in the plugin, so it unifies with a design system without bleeding into the rest of the site.
- Recommended split. The plugin for the property and booking side, your team for the rest of the site. The right split depends on the end result you want.
19Support and maintenance
We maintain the plugin and apply updates and fixes as part of the service. When Guesty notifies us of upcoming changes we update the plugin in advance to avoid downtime. Issues are reported to us directly and response times run from when you report them: within one working day for anything that stops bookings, and within seven working days for everything else. The support arrangement and any service credit sit in the operator's service agreement.
20Roadmap and custom development
The plugin is a live product that we extend continuously. Some capabilities are planned, and others we build as scoped custom work for a specific site, for example listing and review schema markup, per-listing enquiry and hidden listings driven by tags, a full design-token system, and a fully branded custom checkout. If one of these is on your critical path, tell us and we will confirm where it sits and what it would take.
21Getting started
The path onto the plugin is short. We have a quick setup call, connect your Guesty account, register your production and staging domains, run the first sync, and you build from there. For the product overview, see the Direct Booking Plugin page.
Talk to us about your build
Tell us about the site you are building and we will get you connected. If you would rather talk it through, book a call and we will walk you through the plugin.

