Holiday Bookings

Increase On-Site Conversions


A popular holiday company wanted to improve conversions on their website. Their plan was to extend their existing CMS with property availability and search functionality but there was no available solution for their provider. We were approached by a local design agency to build a custom plugin to achieve these goals.


We liased with the property booking provider and established details of their API then planned layout and visual approach with the design agency. SEO, accessibility and performance were the clients main concerns. With this in mind we settled on a progressive enhancement solution. Lightweight cacheable pages are assembled on the server and then pushed to the client. Javascript is used to augment them with minor flourishes. The entire solution is now able to be run with or without javascript available, and is fully responsive across devices.

This hybrid of serverside rendered pages and background fragment requests allows us to provide the fastest performance in all situations, as well as providing canonicalised links for SEO purposes.


Firstly, we built out the backend in PHP. We then locally proxied all API connections in order to produce a cacheable layer for end users to access, ensuring the pages are up-to-date and lightning fast. When updating the cache the PHP calls the provider’s API and builds a complete page of minified HTML. At the same time we also cache a page fragment of the rendered results.

Once the server-side implementation was performant and correct, we augmented this with a very lightweight javascript interceptor, based on libraries already included in the site to avoid unnecessarily adding additional assets to the site. This intercepts the search functionality and routes the request through an XMLHttpRequest to fetch just the cached fragment. As the fragment is much smaller than the complete page and doesn’t require a refetch of the many assets the larger site uses the loading of this fragment is very fast. On a good connection we can almost entirely mask this loading time with a simple transition animation, giving the impression of instantaneous results. The interceptor then updates the URL in the address bar so if the user wishes to share the page they will return directly to the fully rendered page without having to repeat their search.