What we took on and what we built
Crown Pavilions came to us with a WordPress site whose homepage loaded 41 stylesheets and 41 separate script files, and which published test pages that search engines could reach. We rebuilt crownpavilions.com on a platform that renders every page before a visitor asks for it, moved the content across at the addresses it already held, and put the products, the prices and the photography into a system the team edits without a developer. We then worked the site every week for eight months across nine workstreams, and this report logs all 169 deliveries.
continuous work
changes shipped
tasks logged
live
built
Every count covers the UK site at crownpavilions.com, from 20 January 2026 to 08 August 2026. We list all 169 tasks behind the third figure at the end of this report.
Scope of engagement
This engagement covered technical SEO, on page SEO and the full engineering of the new crownpavilions.com website. Ongoing link acquisition and digital public relations campaigns did not form part of the commissioned scope, so this report does not cover them.
Everything here describes the UK site. We worked in weekly cycles and released changes straight to the live site rather than holding them back for a single launch date. That is why the log below reads as a run of small dated deliveries rather than a handful of milestones.
We wrote this report from four sources. The first is the change history of the site itself. The second is the delivery log our team keeps as we work. The third is archived copies of the old site held by the Wayback Machine. The fourth is a set of checks we ran against the live site on 07 August 2026. The comparison section names the snapshot behind each measurement, so anyone can repeat the check and get the same number.
Old site versus new site
We measured the old site from the copies the Wayback Machine stored before we touched anything, and we measured the new site the same way so both sides come from one source. Where a row describes how the site behaves today, we checked it against the live site rather than trusting the code.
We kept every row to something a third party can reopen and count. Where we hold evidence for only one side, the row is not in the table.
| Area | Old site · archived | New site · 2026 |
|---|---|---|
| Platform | WordPress with Elementor and WooCommerce. The homepage carried a WP Rocket generator tag and mentioned elementor 4,286 times. Products sat behind WooCommerce templates and the sitemap came from Yoast. | One codebase that renders every page ahead of time and reads its content from a headless CMS. One stack |
| Homepage weight, uncompressed | 555,168 bytes of HTML. | 316,817 bytes of HTML. The archive stored that same page gzip encoded at 39,969 bytes, and the live site serves it compressed today. 238,351 bytes lighter |
| Files the homepage loads | 41 stylesheet links, 41 external script files and 33 inline style blocks. | 1 stylesheet link, 4 external script files and 1 inline style block. 41 stylesheets to 1 |
| Product structured data | None. The Ascot page sold a gazebo from £22,850 and declared no Product, Offer or AggregateRating anywhere in the document. The price existed as plain text only. | Product markup carries the name, the price, the product code and the category. The homepage markup carries the business record, an aggregate rating, the address, the coordinates, the opening hours and the FAQ block. Price now machine readable |
| Social sharing image | An award badge measuring 290 by 38 pixels and weighing 7,522 bytes, set on every homepage snapshot we pulled. | The site's hero photograph. Badge replaced by photography |
| Homepage description | One description, identical across every snapshot from 13 September 2025 to 24 January 2026. It still told visitors to make the most of “this summer” in the January copy. | A description that names the products, the timber and the show sites, read from the live homepage on 07 August 2026. Description rewritten |
| Test pages in public | Five scratch pages the archive reached, including /blank-test/, which held no page content and still weighed 218,963 bytes across 21 stylesheets and 36 script files. | Removed. We also took our own placeholder pages and preview routes off the public site. 5 scratch pages cleared |
| URL structure | Products under /product/, offers under /offers/, use cases under /uses/ and WordPress taxonomy archives under /category/. The archive holds 278 distinct crawlable addresses across those prefixes. | One address format for every page, backed by 1,203 redirect rules. /wooden-gazebos redirects to the trailing slash form and that page carries a canonical tag, both checked live on 07 August 2026. 1,203 rules live |
| Sitemap and crawler instructions | A Yoast sitemap index listing eight child sitemaps, three of which covered WordPress category, tag and product category archives rather than pages anyone wrote. | A sitemap built from the site's real routes with the internal preview and listing paths left out. /sitemap-index.xml and robots.txt both answered when we checked them on 07 August 2026. Taxonomy archives dropped |
The old stack assembled each page on request out of a page builder and its plugins. The new one builds every page as a file before anyone asks for it, so the server hands over something that already exists.
Weight is the part of speed we can prove for both sides, because the archive stored the actual bytes. The old homepage sent more than half a megabyte of HTML before a single photograph loaded.
Each of those 41 stylesheets and 41 scripts was a separate request the browser had to finish before it could finish the page. Cutting them to one and four removes most of that queue.
The old Ascot page showed its price in the page title and nowhere a search engine could read it as a price. Product markup is what qualifies a page for the richer search result, and it is what shopping and AI surfaces read when they match a page to a question.
Facebook needs an image of at least 200 by 200 pixels before it shows any preview picture, and the guidance for a large card asks for 1200 by 630. At 38 pixels tall the old badge sat well under that floor, so every share of the homepage risked appearing as a bare link.
The description is the sales line under a search result, and it is the last thing a person reads before deciding whether to click. The old site carried the same one on its homepage across every snapshot the archive holds for that period.
The archive only stores pages a crawler could fetch, so those five were publicly reachable. /blank-test/ is the clearest measure of what the old stack cost by default, because an empty page there weighed more than two thirds of the whole new homepage.
Two addresses for one page split what that page earns between them, and both get crawled. Settling on a single form and redirecting everything else keeps each page's history attached to it.
A sitemap tells a search engine which pages matter. Submitting tag and category archives spends that attention on pages the software generated rather than pages the business wrote.
Method. Old site figures come from the Wayback Machine's unmodified copy of the homepage stored on 07 November 2025, at https://web.archive.org/web/20251107132200/https://www.crownpavilions.com/, and from the archived Ascot product page of the same date. New site figures come from the archived homepage of 01 June 2026, at https://web.archive.org/web/20260601165558/https://www.crownpavilions.com/, so we measured both sides the same way. We checked every row describing present behaviour against the live site on 07 August 2026. We hold no speed measurement for the old site, so this table compares page weight and file counts and makes no claim about load times. Two things the old site did well sit outside the table for the same reason: it carried a correct mobile viewport tag and it lazy loaded 57 of the 102 images on its homepage, so we claim no improvement on either.
Nine workstreams
We grouped the work into nine workstreams in the first weeks and kept it grouped that way throughout. Each chapter below describes what the workstream was for and lists a handful of dated deliveries from it, with what we did and why it mattered. The complete list of 169 tasks, grouped the same way, sits at the end of this report.
Platform rebuild and migration integrity
A rebuild loses its search rankings in the migration, not in the design. We wrote tooling that pulled the content out of WordPress rather than retyping it, and we kept each page at the address it already held wherever we could. Everything else in this report sits on top of that.
We took the old WordPress site apart and moved its content across. Our tooling read the export, unpacked the page builder layouts, resolved every image and pushed each record into the new CMS, carrying the draft and published states with it. Years of writing, photography and specification detail came over intact, and a migration that quietly loses content loses the rankings that content had earned.
We imported the old pages at the addresses they already had rather than letting the new system invent its own. Address parity is the single biggest lever in a migration, because a page that keeps its address keeps every link and every ranking pointing at it with nothing lost in a hop.
We built the new front end on a framework that renders pages ahead of time instead of assembling them on each request. Pages that already exist as files when a visitor asks for them are the fastest thing a site can serve, and it means the site stays up even when the CMS does not.
We removed the placeholder and test pages our own build was publishing, which came to 18 coming soon pages, a sample product page and a temporary product list. A coming soon page in a search result is worse than no page at all, and each one was a live address a crawler spent effort on.
We wrote the brand's selling points into a single data file, 16 for garden rooms and 16 for gazebos and summer houses, and put one grid of them on the category pages, on every product page and on the why pages. Triple glazing as standard, TRADA certification, marine grade fabrics and installation included are the reasons a buyer picks Crown over something cheaper, and the site had barely mentioned them.
We moved the site's content store onto a new platform behind a switch that let the site read from either one, then turned it on once every collection had crossed. Migrations that rewrite the site at the same time as the data are how sites lose their rankings, and this one changed nothing a visitor or a search engine could see.
Redirects and URL hygiene
The old site published years of addresses the new one does not use, and links from magazines, directories and old social posts still point at them. We wrote a permanent redirect for every one with a sensible destination, then built a checker that proves the rules work rather than assuming it. The live file carries 1,203 rules.
We worked through the addresses the old site published and wrote a permanent redirect from each one to its replacement, covering blog posts, product pages, category pages and short aliases. Every old address that still carries a link now passes that value to the page that replaced it instead of landing on nothing.
We kept the redirect list inside the hosting platform's rule limit. Cloudflare counts every rule that follows a wildcard against a cap of 100, so we moved the wildcards to the end of the file. Rules past that cap are ignored without warning, so hundreds of redirects would have looked correct in the file and done nothing on the live site.
We built a checker that walks the whole rule list, requests each address and records where it actually lands. A file this size cannot be checked by eye, so the checker is what turns the redirect map from an assumption into a result we can reproduce after any change.
We cleared the backlog of missing addresses Search Console had been reporting, writing a rule for every one with a sensible destination. A missing page tells Google to drop the address and tells the visitor they made a mistake, so this was the largest single recovery item in the remediation work.
We settled the site on one address format for every page. It had been answering on both the trailing slash form and the form without it, which meant two addresses for every page splitting the signals between them, and we turned on page compression in the same change.
We retired the dead offers section the old site left behind and pointed every old offer address permanently at the wooden gazebos range. The links those pages earned over the years now reach a page that sells, and that redirect answered correctly when we checked it on 07 August 2026.
Structured data and search engine signals
Search engines and AI assistants read a page through its markup as much as its text. We published a sitemap and a crawler policy at launch, marked up the questions and the products, and connected the website to the other places the company appears.
We published an XML sitemap generated from the site's real routes at build time, left the internal preview and listing paths out of it, and published a robots file pointing at it. A sitemap is how a search engine learns about pages nothing links to yet, so publishing one at launch got the new addresses discovered in days rather than whenever a crawler wandered in.
We marked up the FAQ blocks on the homepage and on the use case pages, built from the questions already shown there. Marked up answers can appear directly in a search result and feed the answers assistants give, and the questions had already been written.
We added product codes and categories to the product markup, which had carried the name and the price and nothing else. A fuller record is what qualifies a page for the richer product result, and it helps shopping and AI surfaces match the page to the thing someone actually asked about.
We put the live Trustpilot rating into the homepage markup, reading the current score and review count from the site settings rather than fixed numbers that go stale, and extended the profile list to name the company's LinkedIn and X profiles alongside Facebook, Instagram and YouTube. The rating block is what puts stars on a search result, and the profile list is how Google learns that the company on this site, the company on LinkedIn and the company on X are the same company.
We set an explicit policy for AI crawlers, naming the ones that may read the site and the ones that may not. The assistants that send referral traffic can read it and the bulk scrapers that send nothing back cannot. A growing share of buying research now happens inside an assistant rather than on a results page.
We published a plain text map of the site at its root listing the key pages, the product categories, the use case pages and the contact details. Assistants read that file instead of guessing the shape of the site from its navigation, which gives them a clean route to the pages Crown wants quoted.
On page SEO and metadata
Metadata is the part of a page a person reads before they decide to open it. We carried the old site's editorial settings across rather than losing them in the migration, then wrote what the new site was missing.
We carried the old site's search settings across with the articles. Each WordPress article held its own search title, description and target term, and we brought all three into the new CMS rather than letting the import drop them. Those settings were years of editorial decisions about how each article should appear, and losing them would have meant Google rewriting every listing from scratch on the day of the migration.
We wrote the page descriptions. Several main pages including the homepage had gone live with none, so Google composed its own from whatever text it found first. The descriptions we wrote name the products, the materials and the show sites, which means the listing says what Crown sells rather than whatever fragment a crawler picked up.
We rebuilt the search and social metadata on every blog page so titles, descriptions and share images come from fields the editors already fill in, and added published and updated dates, section and tag information, image dimensions and alt text, next and previous links across paginated listings and visible breadcrumbs. Twelve separate faults had been stopping blog pages presenting properly in search and on social.
We put the blog archive back into search. The listing layout had been marking every page after the first as not for indexing, so page two onward of every category had dropped out of Google and older posts sat behind a wall nothing crawled through. Removing it opened up years of writing that had gone invisible.
We corrected the roof options described on gazebos and summer houses. The selling points offered a cedar roof only, when gazebos take cedar or thatch and summer houses take cedar. The roof is one of the first decisions a gazebo buyer makes, and describing half the choice sent people away to ask a competitor whether thatch was possible.
Content and blog infrastructure
The old site kept blog and news as two sections with overlapping articles. We rebuilt them as one system, put a real date and a named author on every piece, then worked on the content itself. The live site carries 154 articles today.
We rebuilt the blog as one system with a single article type, one listing page and one article template, and moved the legacy files out. One system means one address per article, one place to publish and one template to improve, where splitting the archive across two sections had been dividing the ranking value between them.
We gave every article a real publication date. Articles had been ordered by the date their record was created, which for everything brought over was the day of the migration, so every article on the site looked as though it had been written on the same day. Search engines read that date, and so does a reader deciding whether an answer is still current.
We put a named author with a photograph and a biography on every article, and added a related articles block underneath. Google reads authorship as one signal of whether advice comes from someone who knows the subject, and so does a reader considering a building that costs as much as a car.
We audited all 71 FAQ answers against the current selling points, the current pricing and the live addresses, found 16 problems across 14 answers and wrote replacement copy for each. One answer told visitors that garden rooms come with double glazing when every garden room ships with triple, and FAQ answers travel further than ordinary page copy because search results and AI answers quote them.
We wrote the comparison pages that answer why Crown costs more, covering ten criteria that define a premium garden room with a six brand roster, like for like pricing and nine detailed tables, plus a second page comparing the gazebo range against a named competitor. The price question is the one that decides the sale, and it was being answered in a phone call or not at all.
We corrected a claim in the comparison table about foundations. The row overstated what Crown offers as standard, so we changed it to say the option is available subject to a ground screw test. A comparison page only works while every row survives being checked, and one overstated claim on a page built to prove Crown is the honest option would have undone the whole argument.
CMS enablement and content operations
The point of the rebuild was that the team stops asking a developer to change a price. We modelled the content the business actually has, moved the products, showrooms, galleries and articles into it, and automated the release so publishing waits on nobody.
We stood up the content management system the site runs on, added its query interface, wrote the library that lets the site read from it and packaged the whole thing so it deploys the same way every time. This is the foundation everything else sits on, and every change the team makes without a developer goes through it.
We automated the release so publishing does not need a developer, wiring the CMS to trigger a rebuild and redeploy on its own and adding the diagnostics needed to see why a deploy failed when one did. Publishing used to end with someone asking a developer to release it.
We fixed a data fault that was silently cutting lists off at ten items. The CMS returns ten entries from a nested list unless the query asks for more, and ours did not, so galleries, features and related items across the site were quietly truncated. This was invisible from the admin panel, where an editor could add a twelfth gallery image, watch it save and never see it appear.
We found and removed 67 duplicate pages we had introduced. A catch all route in our own build was publishing 67 legacy records at their own addresses alongside the real pages, so we removed the route and left the data untouched. We introduced it and we caught it. Two addresses describing the same product split its ranking signals so neither wins, and clearing them gave every page a single address again.
We cut the number of CMS calls each build makes. The testimonials block ran its own query on roughly 240 pages, so one build made the same call 240 times, and we moved those queries into shared helpers that hold the result for the length of the build. That turned publishing from something the team had to ration into something routine, and nothing about the rendered pages changed.
We made the video hero take its slide copy from the video edit. The editor already sets markers while cutting the film, so we read that marker file at build time and turn each marker into a slide, with the marker name as the heading and its link as the button. Nobody retypes headings into a CMS and nobody waits on a developer to change them, which turns the homepage hero from a yearly project into something the marketing calendar can use each season.
Conversion and lead capture engineering
A site like this earns its keep in enquiries. We replaced the old plugin forms with our own handling, recorded where each enquiry came from, and made sure a lead that fails to send becomes a message rather than a silence.
We built a form system that records where every enquiry came from, storing each one with the campaign parameters from the visit that produced it. Marketing can now see which campaign, which channel and which page produced a lead instead of guessing, and that is the number that decides where the next pound of advertising goes.
We added a Book a Visit form to every showroom page and fixed a fault that was clearing what the visitor had typed as the page finished loading. A showroom visit is where this product sells, and putting the booking on the page for that specific showroom removes the step where the visitor has to find the contact page and explain which one they meant.
We set up an alert for when a lead fails to send, so the team gets a message with the details rather than the enquiry disappearing. Silent lead loss is the most expensive failure a site can have, because nobody knows to look for it.
We repaired the showroom list that had been empty on the booking form. The form fetched its list without the credential the CMS requires, so the request came back with nothing and the dropdown rendered empty on the live site. Anyone trying to book a visit reached a form with nothing to choose, on the highest intent action the site has.
We brought every finance figure on the site under one module. It holds the plan terms and works out the monthly figures, so every payment shown on the site comes from one place. We built the representative example the regulator requires, put it behind a disclosure on product pages with the headline rate always visible above it, and put an open version on every listing page. Where a product had no figures we removed the monthly claim rather than showing an estimate. The lender's compliance audit had failed the site, and the finance route would have stayed closed until it passed.
We made a finance policy change a single edit rather than a hunt. The plan quotes two separate figures and the choice between them moves every monthly payment on the site, so we raised it and the client instructed us which one to use. Every revision after that landed as one change to one constant in one module. Before this work the same calculation sat inside six separate components, so each revision would have meant finding all six and hoping we had.
Performance and Core Web Vitals
This site sells on photography and now carries film, and those are exactly the things that make a page slow. The work here kept the pictures and the video without asking every visitor to wait for them.
We made the homepage show its main image sooner. We held back everything the first screen does not need, told the browser to fetch the hero image first, converted the brand fonts to the modern compressed format and served them from our own domain instead of a font service. The largest image on the homepage is what Google times when it measures loading, and the same fonts serve every other page on the site.
We converted the site's photography to a modern image format. We wrote a tool that finds every heavy image, converts it, rewrites the references in the code and reports the bytes saved, then ran it across the whole library while keeping the originals so we could roll back. Photography is the heaviest thing on the page for a business that sells on how its buildings look, and lighter files mean the pictures arrive sooner for someone standing in a garden on a phone.
We loaded the garden room 3D configurator only when a visitor scrolls to it. The tool sits well down the page, so loading its heavy embed up front would have slowed the part everyone sees. Holding it back gives the buyer the tool without charging every visitor for it.
We tuned the homepage video so it does not cost the page its speed, capping the streaming quality, limiting how far ahead the player buffers and holding the video back until the page has finished the work that matters first. A video hero is the usual way a site loses its loading score.
We served product and blog images through the hosting network's edge cache. Images had been pulled from the media store on every page view, so we routed them through the site's own address and added a header that lets us confirm the cache is working. Visitors now get images from a server near them, and the media store went from being hit once per visitor to roughly once per image, which pulled a running cost back under its allowance.
Site health, QA and continuous fixes
Most of what breaks a site breaks quietly. We put automated checks in front of every release, and we record our own mistakes the same way we record the inherited ones.
We built automated tests that submit the site's forms before every release, filling in and sending the contact form, the brochure request and the showroom visit booking and checking that the campaign tracking travelled with them. A form that quietly stops working costs enquiries for weeks before anyone notices.
We set up screenshot testing that flags any unintended visual change, capturing every page in several browsers, comparing each against the approved version and collecting the differences in a gallery we review. On a site this size a change to one shared component can break a page nobody thought to check, and the screenshots surface that in minutes instead of after a customer reports it.
We fixed a gallery that was only ever showing its first ten images, because the query behind it never asked for more. Buyers were seeing a fraction of the photography that exists, and for a business that sells on how its buildings look, hidden images are lost enquiries.
We caught and reversed files our own image tool had removed. The tool we wrote to shrink the image library deleted archive files it should have left alone, and a local setting was hiding some of them from review. We found the fault inside our own change on the same day, restored every file and added tests covering the cases that tripped it up. Nothing reached a customer.
We made the mobile menu impossible to break. An error anywhere else on the page could stop the menu script running, which left the hamburger button dead, so we isolated the menu to run on its own regardless of what else fails. On a phone the hamburger is the only route to anything, and a menu that silently refuses to open ends the visit there.
We made the build refuse to publish a site with missing content. If a content collection came back empty the build carried on and published pages with nothing in them, so we made an empty collection stop the build instead. A silent empty build is the worst kind of failure, because the site stays up and looks broken.
Work shipped each month
Each bar counts the engineering changes we released that month. The shape of it follows the shape of the job. January and February carried the migration and the front end build, March and April carried the launch and the fixes that followed it, and the months after that carried content, handover to the team and finance compliance.
Changes shipped per month
The full task log
We list every one of the 169 tasks in this report below, grouped into the same nine workstreams, with what we did, why it mattered and the month it shipped.
Redirects & URL Hygiene (18 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Built a real 404 page for visitors who land on a dead address | The new site had no 404 page, so a mistyped or retired address gave the visitor a blank. We built one that explains what happened and links back into the main sections of the site. | Someone who hits a broken link now has a route back in rather than a reason to leave. It also gave us a clean signal to work against while we cleared the redirect backlog. | Feb 2026 |
| Repaired navigation links that pointed at addresses the site no longer used | The gazebo mega menu and the use case menu still carried paths from before that content moved into the CMS. We matched every link to the live address. | Visitors stopped hitting dead ends straight from the main menu. Search engines follow those menu links on every page of the site, so one broken entry wastes crawl effort everywhere. | Feb 2026 |
| Pointed every footer link at a live page | The footer links were written into the code and had drifted out of step with the pages in the CMS. We wired them to the real page addresses instead. | The footer sits on every page of the site, so each wrong link there was multiplied across the whole site. Fixing them cleared a large block of internal dead ends in one change. | Mar 2026 |
| Corrected the finance page address used across the site | Links to the finance page pointed at an address that no longer existed. We updated the product finance block and the homepage to use the live one. | Finance is one of the routes a buyer takes before enquiring. A broken link on that route loses the enquiry, not just the page view. | Mar 2026 |
| Rebuilt the redirect map so old site addresses still reach a live page | We worked through the addresses the old site published and wrote a permanent redirect from each one to its replacement. The list grew through March as we covered blog posts, product pages, category pages and short aliases. | Every old address that still carries a link from a magazine, a directory or a social post now passes that value to the page that replaced it. Without the map those links would have landed on nothing. | Mar 2026 |
| Kept the redirect list inside the hosting platform's rule limit | Cloudflare treats every rule that follows a wildcard as a dynamic rule and allows only 100 of those. We moved the wildcards to the end of the file so the ordinary rules stopped counting against that limit. | Rules past the limit are ignored without warning. Left alone, hundreds of redirects would have looked correct in the file and done nothing on the live site. | Mar 2026 |
| Cleared the backlog of missing addresses Search Console had been reporting | We exported Google's list of addresses returning nothing and wrote a rule for every one with a sensible destination. Old blog posts go to the news section, old category and tag pages go to the matching news category, and old brochure and offer addresses go to their live equivalents. | A missing page tells Google to drop the address and tells the visitor they made a mistake. A permanent redirect keeps the ranking value and lands the visitor somewhere useful. This was the largest single recovery item in the plan. | Mar 2026, Apr 2026 |
| Built a checker that tests every redirect rule against the live site | We wrote a script that walks the whole rule list, requests each address and records where it actually lands, then writes a report we can read at a glance. | A redirect file this size cannot be checked by eye. The checker means we prove the rules work rather than assume it, and we can rerun it after any change. | Mar 2026 |
| Settled the site on one address format for every page | The site answered on both the version with a trailing slash and the version without, which meant two addresses for every page. We made the trailing slash the single form and turned on page compression at the same time. | Two addresses for one page split its ranking signals and double the crawling. Picking one form gives each page a single address that keeps everything it earns. | Mar 2026, Apr 2026 |
| Kept expired promotions and thank you pages out of search results | Old reader offer and anniversary promotion pages were still indexable long after they ended, and the brochure thank you page could rank in place of the brochure page itself. We excluded them and added a control in the page layout so any page can be held back from search. | An expired offer ranking above the live range wastes the click and disappoints the visitor. Keeping the thank you page out of search means people reach the form rather than the page that follows it. | Mar 2026, Apr 2026 |
| Removed a redirect hop from every internal link | Internal links pointed at the version of each address without a trailing slash, so every click went through a redirect before reaching the page. We updated them across 47 files, including the whole navigation. | A redirect on every click costs the visitor time and dilutes the value each internal link passes on. The links now land on the page directly. | Mar 2026 |
| Corrected internal links that still used pre-launch addresses | Links across the site pointed at privacy and post paths the launched site does not use. We repointed them at the live privacy policy and news addresses. | These sat inside the contact and brochure forms and on every blog card. Each one was a dead end at the exact moment a visitor was closest to enquiring. | Mar 2026 |
| Corrected the remaining footer and navigation link targets | We repointed the last few footer and navigation entries that were still aimed at addresses the site had moved on from, and removed the clearance link from the footer once that sale ended. | Footer and navigation links appear on every page, so a stale one is not a single broken link but hundreds. Removing a finished sale from the footer also stops the site advertising something the team can no longer honour. | Mar 2026 |
| Corrected three redirect rules that sent people to the wrong place | The sitemap address pointed at a file that did not exist, /offers went to the homepage instead of the offers listing, and the garden room brochure download had no rule at all. | These three were worse than missing rules. Each one looked handled and quietly sent search engines and buyers somewhere useless. | Apr 2026 |
| Caught the old blog author pages and feed addresses | The previous site published author archive pages and an RSS feed at addresses the new site does not use. We pointed them at the news section and the homepage. | Those addresses still carried links and were returning nothing. Redirecting them recovered that value and removed a whole block of errors from the Search Console report. | Apr 2026 |
| Stopped search engines crawling tracking parameter copies of pages | Social and advertising platforms append their own tracking parameters to a link. Each variation looks like a separate address to a crawler. We told the crawlers to ignore them. | One page was being crawled many times over under near identical addresses. Blocking the variations focuses crawling on the real pages and removes a duplicate content risk. | Apr 2026 |
| Retired the legacy /news/offers/ section with permanent redirects | We removed the dead offers section the old site left behind. Every old offer address now points permanently to the wooden gazebos range. | Visitors and search engines no longer hit broken pages. The links those old pages earned over the years now pass their value to a page that sells. | May 2026 |
| Pointed the magazine reader offer address at the right showsite | The reader offer link first went to the wrong showsite. We corrected it to the Chessington location the offer applied to. | The offer ran in print with that address printed on it. Sending those readers to the wrong showroom would have wasted the visits the campaign paid for. | May 2026 |
Structured Data & Search-Engine Signals (11 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Documented every route the site publishes | We wrote a reference listing every address the site generates and the file that produces it, then corrected it twice as the routes changed. | That list is what we check redirects, sitemap coverage and QA against. Without it, noticing that a page has stopped being published is guesswork. | Feb 2026 |
| Published an XML sitemap and told search engines where to find it | The new site published no sitemap and no crawler instructions. We generated a sitemap from the real routes at build time, left out the internal preview and listing paths, and published a robots file pointing at it. | A sitemap is how a search engine learns about pages that nothing links to yet. Publishing one at launch got the new addresses discovered in days instead of waiting for a crawler to find them. | Mar 2026 |
| Marked up the FAQ blocks so search engines can read the answers | We added FAQ structured data to the homepage and to the use case pages, built from the questions already shown on those pages. | Marked up answers can appear directly in a search result and feed the answers AI assistants give. The questions were already written. The markup is what makes them count outside the page. | Mar 2026 |
| Added product codes and categories to the product markup | The product structured data carried the name and the price but no product code and no category. We added both. | A fuller product record is what qualifies a page for the richer product result in search. It also helps shopping and AI surfaces match the page to the thing someone actually asked about. | Apr 2026 |
| Put the live Trustpilot rating into the homepage markup and linked the brand's profiles | We added a rating block to the business structured data that reads the current Trustpilot score and review count from the site settings rather than carrying fixed numbers that go stale. We also extended the profile list so the markup names the company's LinkedIn and X profiles alongside Facebook, Instagram and YouTube. | The rating block is what puts stars on a search result, and stars make a listing stand out against the ones around it. The profile list tells Google that the company on this site, the company on LinkedIn and the company on X are one company, which is how a brand earns a knowledge panel and how AI answers learn which source to cite. | Apr 2026 |
| Set an explicit policy for AI crawlers | We named the crawlers that may read the site and the ones that may not. The assistants that send referral traffic can read it. The bulk scrapers that send nothing back cannot. | A growing share of buying research now happens inside AI assistants rather than on a results page. Letting the right ones read the site keeps Crown quotable in those answers while closing the door on collection that returns nothing. | Apr 2026 |
| Made the indexing control in the CMS actually work | Every blog post carried a field for keeping the post out of search and the site never read it. We wired the field through the post layout so the setting reaches the page. | Editors need a way to hold a page back from search. A control that silently does nothing is worse than no control, because the team believes a page is hidden when it is not. | Apr 2026 |
| Gave every static page a social preview image | Thirteen pages had no image set for sharing, so a link to them showed a blank card. We set an image on each one and later changed the site wide default to a stronger photograph. | A link to the site now shows a photograph of the product wherever anyone shares or pastes it. Blank cards earn fewer clicks, and the sales team sends these links to buyers directly. | Apr 2026, May 2026 |
| Opened connections to the CMS early and named the brand's social account | We told the browser to start its connection to the CMS and the analytics endpoints as soon as a page begins loading, and added the tag that attributes shared links to the company's own account. | Every page that loads an image from the CMS now saves the connection delay, which feeds straight into the load speed measures Google reads. | Apr 2026 |
| Linked up pages nothing pointed at and removed leftover test pages | Several real pages had no link anywhere on the site, and two test pages from the build were still published. We linked the orphaned pages from the footer and the navigation, deleted the test pages and refreshed the sitemap. | A page with nothing linking to it is hard for a search engine to find and harder still to rank. Test pages in the index waste crawl budget and can surface in a search for the brand. | Apr 2026 |
| Published a plain text map of the site for AI assistants | We published a file at the root of the site listing the key pages, the product categories, the use case pages and the contact details in plain text. | AI assistants read that file instead of guessing the shape of the site from its navigation. It gives them a clean route to the pages Crown wants quoted when someone asks an assistant about luxury garden buildings. | Apr 2026 |
Performance & Core Web Vitals (5 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Made the homepage show its main image sooner | We held back everything the first screen does not need, told the browser to fetch the hero image first, converted the brand fonts to the modern compressed format and served them from our own domain instead of a font service. | The largest image on the homepage is what Google times when it measures loading speed. Fetching it first and cutting the font handshake moves that measure directly, and the same fonts serve every other page on the site. | Mar 2026 |
| Converted the site's photography to a modern image format | We wrote a tool that finds every heavy image on the site, converts it, rewrites the references in the code and reports the bytes saved. We ran it across the whole image library and kept the originals so we could roll back. A second tool lists images nothing uses so we can retire them. | Photography is the heaviest thing on the page for a business that sells on how its buildings look. Lighter files mean the pictures arrive sooner for someone standing in a garden on a phone, and image weight feeds straight into the load speed scores Google reads. | May 2026 |
| Loaded the garden room 3D configurator only when a visitor scrolls to it | We added the configurator section to garden room product pages and held its heavy embed back until it comes into view. | The tool sits well down the page, so loading it up front would have slowed the part everyone sees. Holding it back gives the buyer the tool without charging every visitor for it. | May 2026 |
| Tuned the homepage video so it does not cost the page its speed | We capped the streaming quality, limited how far ahead the player buffers and held the video back until the page has finished the work that matters first. | A video hero is the usual way a site loses its loading score. Capping and deferring it means the homepage keeps the moving footage without paying for it in speed. | Jun 2026 |
| Served product and blog images through the hosting network's edge cache | Images were pulled from the media store on every page view. We routed them through the site's own address so the hosting network keeps a copy close to the visitor, and added a header that lets us confirm the cache is working. | Visitors now get images from a server near them instead of one origin far away. The media store went from being hit once per visitor to roughly once per image, which pulled a running cost back under its allowance. | Jul 2026 |
On-Page SEO & Metadata (8 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Carried the old site's search settings across with the articles | Each WordPress article held its own search title, description and target term. We checked how many articles actually had each field, then brought all three across into the new CMS rather than letting the import drop them. | Those settings were years of editorial decisions about how each article should appear in search. Losing them would have meant Google rewriting every listing from scratch on the day of the migration. | Jan 2026 |
| Reworked the showroom section on the about page | We gave each venue its own subheading, replaced the Surrey photograph and made the call to action stand out. | The about page is where a cautious buyer checks the company is real, and the showrooms are the proof. Naming each venue as a heading also means the page says where Crown has a presence in a way a search engine can read. | Feb 2026 |
| Wrote the page descriptions that decide whether a search result gets clicked | Several main pages including the homepage went live with no description, so Google composed its own from whatever text it found first. We wrote descriptions that name the products, the materials and the showrooms. | The description is the sales line under a search result. Writing it ourselves means the listing says what Crown sells rather than whatever fragment a crawler happened to pick up. | Mar 2026 |
| Rebuilt the search and social metadata on every blog page | Blog pages now take their titles, descriptions and share images from the fields editors already fill in the CMS. We added published and updated dates, section and tag information, image dimensions and alt text, next and previous links across paginated listings, visible breadcrumbs, and written descriptions for every category listing. | Twelve separate faults were stopping blog pages presenting properly in search and on social. Fixing them together means every post now carries the dates, the image and the description that decide how it looks when someone finds it. | Apr 2026 |
| Put the blog archive back into search | The blog listing layout marked every page after the first as not for indexing, so page two onward of every category dropped out of Google. We removed it. | Older posts sat behind page two and Google never crawled through to them. Removing the block opened up the whole archive, which is years of writing that had gone invisible. | Apr 2026 |
| Standardised how the site writes show site | Customer facing text used our internal spelling, showsite. We changed it to show site across 24 files and left the addresses alone. | Internal shorthand in customer copy reads as careless on a premium brand. The corrected wording also matches how people search for somewhere to visit. | May 2026 |
| Corrected the roof options described on gazebos and summer houses | The selling points offered a cedar roof only. Gazebos take cedar or thatch, and summer houses take cedar. We wrote the choice into the selling points, the quality features and the technical specifications on the products it applies to. | The roof is one of the first decisions a gazebo buyer makes. Describing only half the choice sent people away to ask a competitor whether thatch was possible. | May 2026 |
| Corrected the wording on the why Crown Pavilions page | The page said features come standard where it should read come as standard. We fixed it. | Small grammar faults on the page that argues for a premium price quietly undercut the argument. This is the page a buyer reads when they are deciding whether Crown is worth the difference. | May 2026 |
Site Health, QA & Continuous Fixes (22 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Built automated tests that submit the site's forms before every release | We set up browser driven tests that fill in and send the contact form, the brochure request and the showroom visit booking, then check the campaign tracking data travelled with them. | A form that quietly stops working costs enquiries for weeks before anyone notices. These tests catch that before the release goes anywhere near a customer. | Jan 2026 |
| Added browser security headers and kept the marketing tools working behind them | We added the headers that force encrypted connections, control what a page is allowed to load and limit what the browser may do. We then worked through every legitimate service the site uses, including analytics, call tracking, advertising pixels and the video players, and allowed each one by name. | The headers close a class of attack and clear a warning every audit tool raises. Naming each third party rather than leaving the door open also gives Crown an exact record of what runs on the site. | Jan 2026, Apr 2026, May 2026, Jun 2026, Jul 2026 |
| Fixed build failures that were blocking releases | Three separate faults stopped the site building on the deployment platform, covering how linked libraries resolve, a syntax rule the build tool enforces and a dependency file that behaved differently there. | Every one of these blocked publishing entirely. Content the team had already approved sat unreleased until the build ran clean again. | Jan 2026, Feb 2026, Apr 2026 |
| Set up screenshot testing that flags any unintended visual change | We capture a screenshot of every page in several browsers and compare it against the approved version. We built a gallery for reviewing the differences and extended the capture to cover the CMS driven pages as well. | On a site this size a change to one shared component can break a page nobody thought to check. The screenshots surface that in minutes instead of after a customer reports it. | Feb 2026, Mar 2026 |
| Built a repeatable customer review using twelve buyer profiles | We wrote twelve customer profiles covering the buyer types Crown sells to, and two review processes that walk the site as those people and report what confused them. | It turns a vague sense that a page feels wrong into a specific list of things a specific buyer could not find. We use it to decide which page to work on next rather than guessing. | Feb 2026 |
| Fixed two product page faults that were hiding content | The premium package banner pushed the product image down the page, and the care and maintenance accordion cut off longer answers. We overlaid the banner and made the accordion measure its real content height. | Both faults sat on the page a buyer reads before enquiring. One pushed the photograph out of view and the other hid the specification detail the buyer came for. | Feb 2026 |
| Fixed a gallery that was only ever showing the first ten images | The CMS returns ten items per page unless you ask for more, and the gallery query never did. We corrected the query and gave the bespoke section its full address at the same time. | Buyers were seeing a fraction of the photography that exists. For a business that sells on how its buildings look, hidden images are lost enquiries. | Feb 2026 |
| Cleared out components nothing on the site used any more | We moved 24 dead or duplicated components out of the live code into a backup folder, and folded a duplicate call to action section into the one the site actually uses. | Dead code is where regressions hide, because someone eventually edits the copy that is no longer rendered anywhere. Removing it makes every later change faster and safer. | Feb 2026 |
| Fixed a run of small faults across the contact page, buttons and maps | We repaired a contact page layout that broke at certain widths, centred and matched button widths on phones, corrected the product page call to action, fixed the showroom map popup and removed a stray reference that had been committed by mistake. | None of these is large on its own. Together they are the difference between a site that feels finished and one that feels almost finished, on the pages where a buyer decides whether to trust the company. | Feb 2026, Mar 2026, Apr 2026, May 2026 |
| Ran full journeys as each customer profile and published the reports | We built a process that walks a real browser through a multi page journey as one of the customer profiles, captures a screenshot at every step and writes up what that person would have thought. We then built a viewer so the reports can be read like a document. | It shows the site the way a buyer meets it, in sequence, rather than page by page in isolation. Several of the fixes in this report started as a sentence in one of those journeys. | Feb 2026, Mar 2026 |
| Took the internal preview and listing pages off the public site | The build was publishing a content browser, a preview route and a sample product page that only we ever used. We deleted all three. | Internal pages in the index waste crawl budget and can surface in a search for the brand. Removing them also closed a public route into unpublished content. | Mar 2026 |
| Made small controls easier to tap and faint text easier to read | The hero slide dots were two pixel targets. We wrapped each one in a full size button and lifted the contrast on the review count text, the breadcrumb links and several other link colours. | A control too small to hit reliably and grey text on white are the two faults accessibility checks raise most often, and both cost real visitors. | Mar 2026, May 2026 |
| Stopped one incomplete article from breaking the whole build | An article saved without an address stopped the site building at all. We made the route skip it instead. | One editor saving a draft could take down the entire release. Nothing about the site should be that fragile to normal editorial work. | Mar 2026 |
| Fixed images that were missing or broken on the live site | Several images existed on our machines but never reached the live site, and two paths used the wrong capitalisation, which works locally and fails on the deployment server. | A broken image on the founders story or the showroom section reads as a site nobody looks after. These are the pages carrying the brand's credibility. | Apr 2026, May 2026, Jun 2026 |
| Wrote the remediation plan the technical fixes came from | We audited the site, wrote up every fault we found in priority order with the reasoning behind each one, and worked the list in stages rather than fixing whatever surfaced first. | Ad hoc fixing is how the same fault comes back twice. Working from a written plan means the client can see what was found, what was fixed and what is still open. | Apr 2026 |
| Caught and reversed files our own image tool had removed | The tool we wrote to shrink the image library removed archive files it should have left alone, and a local setting was hiding some of them from review. We restored every file, then added tests covering the cases that tripped the tool up. | This is our own quality process working. We found the fault inside our own change on the same day, put the files back and closed the gap that allowed it. Nothing reached a customer. | May 2026 |
| Gave the header back the screen space it was taking on phones | The top bar now hides as the visitor scrolls down and returns when they scroll up, and we tuned how far they need to scroll before it comes back so it stops flickering. | On a phone the header was eating a quarter of the screen on every page. Giving that space back to the photography and the copy is what people came to see. | May 2026 |
| Held the golf simulator page back from the listing until its photography was ready | The page was written and useful before the imagery existed, so we kept it out of the listing grid, then added the six illustrations and put it back. | A page in the listing with placeholder pictures next to finished ones reads as unfinished across the whole section. Holding one card back cost nothing and protected the rest. | May 2026 |
| Made the mobile menu impossible to break | An error anywhere else on the page could stop the menu script from running, which left the hamburger button dead. We isolated the menu so it runs on its own regardless of what else fails. | On a phone the hamburger is the only route to anything. A menu that silently refuses to open ends the visit there. | Jun 2026 |
| Made product gallery videos play reliably in every browser | The gallery video used an embedded frame that some browsers refused to start. We switched to a native player, set it to start silently, added a retry and made it replay when the visitor returns to that slide. | A video that shows a still frame and never moves looks like a broken page. Product video is the closest a buyer gets to walking into the building before they visit a showroom. | Jun 2026 |
| Removed a document holding live credentials from version control | A working document had live access credentials in it and was being tracked alongside the code. We stopped tracking it and kept it outside the repository. | Credentials in a code repository are the most common way an account is compromised, because the repository outlives everyone's memory of what is in it. | Jun 2026 |
| Made the build refuse to publish a site with missing content | If a content collection came back empty the build carried on and published pages with nothing in them. We made an empty collection stop the build instead. | A silent empty build is the worst kind of failure, because the site stays up and looks broken. Now a content problem stops the release rather than reaching the public. | Aug 2026 |
Conversion & Lead-Capture Engineering (27 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Built a form system that records where every enquiry came from | We replaced the plugin forms the old site used with our own submission handling. Every enquiry is stored with the campaign parameters from the visit that produced it. | Marketing can now see which campaign, which channel and which page produced a lead instead of guessing. That is the number that decides where the next pound of advertising goes. | Jan 2026 |
| Published the printed brochures as downloads with covers and categories | We collected the printed brochures, converted them into a structured catalogue the site can read, gave each one a cover image and sorted the downloads by product category. | A buyer can now take the same document the sales team hands out at a showroom. It is the highest intent action on the site short of an enquiry. | Jan 2026 |
| Rebuilt the contact form with spam protection and clear error messages | The form now checks each field as the visitor fills it in, shows the problem next to the field rather than at the top, scrolls to the first error allowing for the sticky header, and screens out bots without asking a person to solve a puzzle. | Most abandoned forms are abandoned at an error the person cannot find. Showing the problem in place keeps the enquiry alive, and the bot screening keeps the sales team's inbox worth reading. | Feb 2026 |
| Built the brochure request page and pointed every brochure link at it | We built a brochure request page with its own form and spam screening, generated a cover image for each brochure, and repointed the header, the footer and every remaining brochure link across the site. | The brochure is the main way a browsing visitor becomes a named contact. Before this, brochure links went to several different places and some went nowhere at all. | Feb 2026 |
| Added a Book a Visit form to every showroom page | We built the booking form into the showroom detail pages and fixed a fault that was clearing what the visitor had typed as the page finished loading. | A showroom visit is where this product sells. Putting the booking on the page for that specific showroom removes the step where the visitor has to find the contact page and explain which one they meant. | Feb 2026 |
| Moved the phone number and address into one place | The contact details were written into a dozen components separately. We pulled them into a single shared record every part of the site reads. | The phone number is the most consequential text on the site. One place to change it means it can never again be right in the footer and wrong on the contact page. | Feb 2026 |
| Moved form delivery onto the hosting platform and repaired the destinations | We moved form handling off the CMS and onto the hosting platform, wired the submissions into the automation the team uses and corrected a delivery address that had gone stale. | Enquiries stopped depending on the CMS being awake. The team receives them in the tool they already work in rather than logging into an admin panel to check. | Feb 2026, Mar 2026, May 2026 |
| Set up an alert for when a lead fails to send | If an enquiry fails to reach its destination the team now gets a message in Slack with the details rather than the enquiry disappearing. | Silent lead loss is the most expensive failure a site can have, because nobody knows to look for it. Now a failure becomes a notification the same minute. | Mar 2026 |
| Corrected which form fields the site insists on | Some fields the sales team needs were optional and some fields nobody used were compulsory. We worked through each form and set them to match how the team actually qualifies a lead. | Every extra compulsory field loses a share of the people filling the form in. Every missing one costs the sales team a call to ask the question. This balanced the two. | Mar 2026 |
| Built the cookie consent banner and recorded the answer against each enquiry | We built the consent banner and wired the visitor's choice through to the enquiry record, so every stored lead carries the consent that came with it. | Consent that is collected but not recorded is no defence at all. Storing it alongside the enquiry means the team can prove, per lead, what the person agreed to. | Mar 2026, Apr 2026 |
| Put finance in front of buyers on the product and home pages | We added a finance section to the product pages and the homepage, and updated it as the client changed the deposit terms and the imagery. | Finance turns a price that stops a buyer into a monthly figure they can weigh against a holiday. Putting it on the product page means the buyer sees it while they are still interested rather than after they have left. | Mar 2026 |
| Removed the monthly finance line from the package cards | The package comparison cards each carried their own monthly figure. We took it out and left the pricing to the finance section that shows the full terms. | A monthly figure with no terms next to it is exactly what a lender's audit objects to. We took it out of the cards so every monthly payment the site shows now sits beside the terms that explain it. | Mar 2026 |
| Wired promotions from the CMS onto product pages and cards | The team can set a promotion in the CMS and it now appears on the product page, on the product card in a listing and in the banner, with the label, badge and colour coming from the CMS rather than the code. | A seasonal offer used to need a developer to appear anywhere. Now marketing runs a promotion themselves and it shows up everywhere it should, consistently, on the same day they decide to run it. | Mar 2026, Jun 2026 |
| Stored every enquiry in a database and asked buyers how they found Crown | We moved form submissions into a database the team can query, and replaced the options in the how did you hear about us field with the channels the business actually uses. | The team can now count leads by source rather than reading an inbox. Asking the question in the buyer's own words is the only attribution that captures word of mouth and print, which advertising tracking never sees. | Mar 2026 |
| Built a quick capture form for the sales team | We built a short form the customer service team fills in during a call, which lands in the same place as every web enquiry. | A phone enquiry written on paper never reaches the reporting. Capturing it in the same place as the web leads means the pipeline reflects everything, not just the part that came through the website. | Mar 2026 |
| Repaired the showroom list that had been empty on the booking form | The booking form fetched its showroom list without the credential the CMS requires, so the request came back with nothing and the dropdown rendered empty on the live site. We found it while caching that call and fixed both together. The form now lists all six active showrooms. | Anyone trying to book a visit reached a form with nothing to choose. This is the highest intent action on the site and it could not be completed. | Apr 2026 |
| Put the correct trading entities on every form, footer and policy | The site named one company where two trade. We set the correct attribution and data protection wording across the forms, the footers and the privacy policy. | A privacy notice naming the wrong company is a compliance problem and a trust problem at the same moment a visitor is handing over their details. | Apr 2026 |
| Added a buy now pay later section to the finance page | We added the section and the accompanying illustration explaining how the deferred payment option works. | Buyers ordering ahead of a summer installation want to know they are not paying before they have the building. Saying so on the page removes a question that otherwise waits for a phone call. | Apr 2026 |
| Added an announcement bar the team controls from the CMS | We built a bar above the header that draws its message from the current promotion, carries a link to the latest offers and stays dismissed for a day once the visitor closes it. | It puts the current offer on every page of the site without a developer. Remembering that someone dismissed it means a returning visitor is not shouted at twice. | May 2026, Jul 2026 |
| Put a call to action at the points where visitors were finishing a section with nowhere to go | We added calls to action below the selling points grid on the comparison page, under the why Crown Pavilions and brand story sections on the homepage, and moved the promotional banner to sit under the finance section. | A visitor who has just read the argument for the price is as convinced as they will get. Leaving that moment without a next step wastes the work the copy just did. | May 2026 |
| Shortened the brochure form by folding the message box away | The free text message box sat open on the brochure form. We collapsed it behind a link so people who want to say something still can. | A shorter form gets completed more often. The box was making a three field request look like a long one, on the action most likely to turn a browser into a contact. | May 2026 |
| Built the Surrey Magazine reader offer landing page | We built a landing page for the magazine offer with its own booking form, and later made the wording cover any showroom rather than naming one, so the offer works wherever the reader wants to visit. | The magazine ran the address in print. A campaign with a real page behind it can be measured, and the booking form on that page attributes every visit back to the advertisement that paid for it. | May 2026 |
| Brought every finance figure on the site under one module | We built a single module that holds the plan terms and works out the monthly figures, so every payment shown on the site comes from one place. We built the representative example the regulator requires, put it behind a disclosure on product pages with the headline rate always visible above it, and put an open version on every listing page. Where a product had no figures we removed the monthly claim rather than showing an estimate. We rebuilt the footer with a legal zone carrying the registered office, the company number, the regulator's register number and the lender disclosure word for word. | The lender's compliance audit had failed the site, and the finance route would have stayed closed until it passed. Advertising a monthly payment is regulated, and the site now shows one only where it can show the full example beside it. | Jun 2026, Jul 2026 |
| Kept the advertised finance package in step with the client's current offer | The client changed the finance package several times through the summer. Each time we updated the terms the site quotes and the figures that follow from them. | A monthly payment on the website that no longer matches what the sales team can arrange costs the sale twice, first at the enquiry and again in the call that corrects it. | Jun 2026, Jul 2026 |
| Published the terms and conditions for the competition | We wrote and published the competition terms and revised them as the client refined the rules. | A prize promotion without published terms is a legal exposure and a reason for entrants to distrust it. Having them on the site makes the competition usable in advertising. | Jun 2026 |
| Made a finance policy change a single edit rather than a hunt | The plan quotes two separate figures and the choice between them changes every monthly payment shown on the site. We shipped one reading of it, raised the question with the client, and they instructed us which figure to use. Every revision after that landed as one change in one module. | The client revised that decision more than once in the days after launch, at the same small cost each time. Before this work the same calculation sat inside six separate components, so each revision would have meant finding all six and hoping we had. | Jul 2026 |
| Let several promotions share the homepage banner | The banner could only show one promotion at a time. We made it cycle through every active one, stopped promotions leaking onto product cards they were not meant for, removed a date strip that was showing internal scheduling, and tidied the spacing. | Crown runs more than one offer at a time in season. The banner is the most valuable space on the site and it was showing one thing while three were live. | Jul 2026 |
Content & Blog Infrastructure (23 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Rebuilt the blog as one system with a single article type | The old site kept blog and news as separate sections with overlapping articles. We built one article type with categories and tags, one listing page, a shared listing layout and a single article template with a hero, body, sidebar and share bar, then moved the legacy files out. | One system means one address per article, one place to publish and one template to improve. Splitting the archive across two sections had been dividing the ranking value between them. | Feb 2026 |
| Gave every article a real publication date | Articles were ordered by the date their record was created in the CMS, which for everything brought over was the day of the migration. We added a publication date field, moved the real dates onto it and sorted the archive by that. | Every article on the site looked as though it had been written on the same day. Search engines read that date, and so does a reader deciding whether an answer is still current. | Feb 2026 |
| Moved the FAQs into the CMS and merged three FAQ components into one | FAQ answers were written into three different components in the code. We moved the content into the CMS behind one component and migrated the category values cleanly, including the entries already live in production. | FAQ answers feed search results and AI answers, so a wrong one travels a long way. Having them in the CMS means the team corrects an answer in minutes rather than filing a development request. | Feb 2026 |
| Reordered the category pages so the products come first | We moved the product grids up to sit directly under the introduction, gave each category its own brochure image in the mega menu and gave every section on the page a stable anchor so it can be linked to directly. | A visitor on a category page came to see the range. Making them scroll past supporting copy to reach it costs the clicks that lead to a product page. | Feb 2026, May 2026 |
| Put a named author with a biography on every article | We built an author record holding a photograph and a biography, added an author block to the article template, and added a related articles section under each post. | Google reads authorship as one signal of whether advice comes from someone who knows the subject. It matters to the reader too, when the advice concerns a building that costs as much as a car. | Mar 2026 |
| Added a definition section and a model comparison table to the garden rooms page | We wrote an opening section that defines what a luxury garden room is and how it differs from a shed or a prefabricated unit, and built a table comparing the Crown models side by side. | A category page that opens straight into the range assumes the visitor already knows what a luxury garden room is and how it differs from a shed. The definition answers that first, and the comparison table keeps someone choosing between two Crown models on the site instead of opening five tabs to work it out. | Mar 2026 |
| Cleaned up the blog listings and embedded video | We allowed video embeds to play inside articles, added spacing after the author biography, hid a post that was nothing but a link to a video, and remapped a set of article images to files the site actually serves. | The listing is the shop window for years of writing. A post with no content behind it and articles with missing images both cost the reader's confidence at the first click. | Mar 2026, Jul 2026 |
| Built the celebrity customers page and the EcoGrid foundation page | We built a page covering the well known customers who own a Crown building, with their testimonials and photographs, and a page explaining the EcoGrid foundation system. | Both pages answer a question the sales team was answering by hand. One is social proof at the top of the range, the other is the technical answer a buyer needs before they can picture the building in their own garden. | Mar 2026 |
| Moved every blog image off the old WordPress server onto our own | Hundreds of article images were still being loaded from the old WordPress uploads folder. We designed the migration, brought every file across, converted it and repointed the articles at the copies we host. | Images loaded from a server nobody maintains disappear the day it is switched off, and every article that used one would have broken at once. They now sit on infrastructure Crown controls. | Mar 2026 |
| Removed references to a product the range no longer sells | Several pages still mentioned a pizza oven option. We took it out of the bespoke pages, the summer house range, the annexe and kitchen use case pages and the celebrity page. | A buyer who asks for something the site advertises and cannot have it starts the relationship with a disappointment. It is also the kind of drift that accumulates until nobody trusts any detail on the site. | Mar 2026 |
| Reworked the package and pricing guide presentation | We rebuilt how packages and the pricing guide render, trimmed the garden room package data down to what the brochure actually says, refreshed the hero photography and added a dedicated mobile hero. | Packages and price are the two things a buyer compares between suppliers. Presenting them clearly, from data that matches the brochure, is what makes the page usable as a comparison rather than a brochure of its own. | Mar 2026 |
| Audited all 71 FAQ answers against the current products and prices | We read every FAQ and checked it against the current selling points, the current pricing and the live addresses. We found 16 distinct problems across 14 answers and wrote replacement copy for each. Four needed the product team to confirm a figure, so we flagged those rather than guessing. | Three answers contradicted a selling point outright, including one telling visitors garden rooms come with double glazing when every garden room ships with triple. Three linked to a contact address that no longer exists. A buyer comparing brands reads that and drops Crown over a feature Crown actually leads on. | Apr 2026 |
| Wrote the comparison pages that answer why Crown costs more | We built a long comparison page covering ten criteria that define a premium garden room, a six brand roster, like for like pricing and nine detailed tables behind tabs. We wrote a second page comparing the gazebo range against a named competitor, and refreshed both as the competitors changed their own offers. | The price question is the one that decides the sale, and it was being answered in a phone call or not at all. A page that answers it in public also catches everyone searching a competitor's name alongside Crown's. | Apr 2026, May 2026 |
| Worked through the product content corrections the client sent | We made the roof description specific to each product, corrected the skylight detail on the St Tropez, added the decking note on gazebos, corrected the timber and roofing membrane details on garden rooms, marked the features that belong to the premium package only, and removed an option the range no longer offers. | Product specification is what a serious buyer reads just before they call. When the website and the brochure disagree, the sales team spends the call correcting the website and the buyer wonders which to believe. | Apr 2026, Jul 2026 |
| Rebuilt the garden room package specifications from the printed brochure | We rewrote the Professional and Premium package content from the current brochure, word for word, and grouped it into labelled sections covering structure and cladding, insulation for both build types, electrics, doors and flooring, with the groundworks footnote that appears on both brochure pages. We updated the Sandringham and the Buckingham clearance packages the same way. | The package list is the page a serious buyer reads before they call, and it disagreed with the brochure they were holding. Matching it exactly removes that friction and gives the page real depth on the terms buyers search, such as SIPs, Rockwool, EPDM and triple glazing. | Apr 2026 |
| Produced the keyword research and the partner site article programme | We delivered keyword research and location keyword tables, then wrote two sets of articles: one set for the Crown site and one set written for each of the six garden centre partners that host a Crown display, each written around the location that partner serves. | Crown sells through garden centres across the country, and each of those partners serves a local area Crown cannot cover from its own site. The keyword tables told us which questions buyers in each area actually ask, and writing each article around that partner's own location handed the business copy it could pass straight to the partner. | Apr 2026 |
| Rewrote the comparison page and linked it from the product pages | We rebuilt the comparison page from the ground up and built a call to action band that links to it from the garden rooms category page and from every product page. | The comparison page was the strongest argument on the site and nothing pointed at it. Linking it from the pages a buyer is already reading puts the argument in front of them at the moment the price is on screen. | Apr 2026 |
| Gave the solar partnership a proper feature block on the garden rooms page | We added the heading, the photograph and the supporting line to the solar feature block and linked it to the solar page. | The solar partnership is a reason to choose Crown that nobody else in the range offers, and it was a paragraph with no picture. It also catches buyers searching for an off grid garden office. | Apr 2026 |
| Restored the blog images the site had lost | Forty two images that published articles referenced were missing from the site, and more were missing from the archive. We traced each one back to the backup and put them all back. | An article with a broken image reads as abandoned, and these were the articles bringing people to the site from search in the first place. | May 2026 |
| Let each article carry a separate image for phones | The article hero used one wide image on every screen, which cropped badly on a phone. We added a second image field so the editor can choose a portrait crop for small screens. | A wide crop squeezed into a narrow screen shows a corner of the building instead of the building. The hero is the first thing a reader sees, and it sets whether they read on. | Jul 2026 |
| Put a customer testimonial on the news listing page | We added a testimonial band to the news listing. The first version read from the CMS and we simplified it to a fixed entry, which is what runs today. | The news listing is a page people browse rather than arrive on with a purpose. A customer quote in that space carries the visit toward the product pages instead of ending it. | Jul 2026 |
| Corrected a claim in the comparison table about foundations | The foundations row overstated what Crown offers as standard. We changed it to say the option is available subject to a ground screw test. | A comparison page only works while every row survives being checked. One overstated claim on a page built to prove Crown is the honest option would have undone the whole argument. | Aug 2026 |
| Published the customer story posts with proper photography | We published two articles about a customer's build, wrote the testimonial headline around the customer's own words and their name, and replaced the placeholder pictures with exterior photographs of the finished building. | A named customer telling their own story is the most persuasive thing on a site like this, and it is content no competitor can copy. Named customers and real locations are the detail search engines and AI answers read as evidence. | Aug 2026 |
CMS Enablement & Content Operations (27 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Stood up the content management system the site runs on | We set up the CMS, added its query interface and wrote a library that lets the site read content from it directly, then packaged the whole thing so it deploys the same way every time. | This is the foundation everything else sits on. Every change the team makes without a developer goes through it. | Jan 2026, Feb 2026 |
| Built a plugin that posts content changes into Slack | We wrote a CMS plugin that sends a message to Slack when content is created, changed or published, with an admin screen for choosing which types to watch. | On a site that rebuilds after each change, nobody sees an edit happen. The Slack message tells the team what changed and when, without anyone sitting in the admin panel. | Jan 2026, Feb 2026 |
| Built tooling to move content between the working and live CMS | We wrote scripts that pull content from one CMS instance into another, filter by record or address, apply bulk changes on request and compare the site's product data against the printed brochures. | It means we can rehearse a content change against real data before it touches the live site, and it is how we checked all thirteen products against their brochures rather than reading them by eye. | Jan 2026, Feb 2026 |
| Modelled the content types the business actually has | We built types for products, showrooms, use cases, articles, FAQs, testimonials and brochures, each with the fields the team fills in and a sensible order in the admin screen. We corrected a field name that had been misspelled across four product types. | A content model that matches how the business talks about itself is the difference between a CMS the team uses and one they avoid. Everything they can edit today exists because it was modelled here. | Feb 2026 |
| Fixed a data fault that was silently cutting lists off at ten items | The CMS returns ten items from a nested list unless the query asks for more, and ours did not. Galleries, features and related items across the site were quietly truncated. We corrected the queries and wrote the rule into the project documentation so it does not return. | This was invisible from the admin panel. An editor added a twelfth gallery image, watched it save, and it never appeared on the site. Nobody would have found it by looking. | Feb 2026, Mar 2026 |
| Gave editors a preview of unpublished content | We built a preview route that renders a draft as the finished page, keyed off the record rather than the address so it works before a page has a public one, and added an in page overlay that shows which CMS record produced what you are looking at. | Without preview the only way to see a page is to publish it. Editors can now check their work in the real design before anyone else can see it. | Feb 2026 |
| Wired every product page and product card to the CMS | Product names, prices, specifications, packages, images and highlights all now come from the CMS. We handled grouped package items, package tiers, original prices for a discount and prices that are not numbers, such as a free upgrade. | Prices and specifications change, and every change used to need a developer, a review and a release. Now the team edits a price and the site rebuilds itself, which is also what keeps the product markup search engines read accurate. | Feb 2026, Mar 2026 |
| Moved the use case pages into the CMS | The garden office, gym, studio and annexe pages had their content written into the code. We built a use case type, moved the editorial content across and made the listing grid build itself from whatever exists. | These pages catch people searching for what they want the building for rather than what it is called. Adding a new one is now an editorial job, and the listing, the routes and the structured data all follow automatically. | Feb 2026, Mar 2026 |
| Moved the showroom details into the CMS | We built a showroom type holding the address, opening times, photography and map reference, wired the showroom pages and cards to it, and renamed the fields to a consistent style before the content grew. | Showroom details change more often than anything else on the site, and they are the details a visitor acts on. Getting them wrong sends someone to a closed site on a Sunday. | Feb 2026 |
| Moved customer testimonials into the CMS | We built a testimonial type with a featured entry the team chooses, and wired the testimonial block to read from it. | Social proof works best when it is fresh and relevant to the product being viewed. Letting the team swap the featured quote themselves means it stays current. | Feb 2026 |
| Automated the release so publishing does not need a developer | We wired the CMS to trigger a rebuild and redeploy automatically, moved off a fragile webhook onto a proper interface, and added the diagnostics needed to see why a deploy failed when one did. | Publishing used to end with someone asking a developer to release it. Now a change in the CMS reaches the live site on its own, which is what makes everything else in this list usable by the team. | Feb 2026 |
| Made text written in the CMS render properly on the site | We added typography styling for CMS written content and audited which HTML elements the editor actually produces, so headings, lists, quotes and tables all match the site design. | Editors write in the CMS and see plain text. Without this, a carefully structured article arrives on the site as one undifferentiated block, which loses the reader on the way down the page. | Feb 2026 |
| Let editors add a subheading to each care and maintenance item | We added an optional subheading field to the care and maintenance component and rendered it on the product pages. | Care instructions are long and were arriving as undifferentiated paragraphs. A subheading per item is the difference between an owner finding the answer and calling to ask. | Feb 2026 |
| Moved the photography galleries into the CMS with the right size for each screen | The galleries were built from files sitting on the server. We moved them into the CMS, rewrote the gallery pages to read from it and made the thumbnails and the lightbox each request the size they actually need. | The team adds photography from a new build without a developer, which is the content that sells this product. Serving a thumbnail sized image as a thumbnail also stops a gallery page pulling down megabytes it never displays. | Mar 2026, May 2026 |
| Retired the temporary content types left over from the migration | The import created its own set of types to hold the raw WordPress content. Once every page read from the real types we removed them and cleaned up what referenced them. | Two sets of content types is how a CMS becomes confusing to edit. Editors now see one place for each thing rather than a live version and an imported one sitting next to it. | Mar 2026 |
| Built a general page type with address validation | We added a page type the team can use for content that is not a product or an article, with validation that stops two pages claiming the same address. | Without it, every new page needed a developer. The address check matters as much, because two pages at one address is how a site quietly starts serving the wrong content. | Mar 2026 |
| Set up a daily backup of everything in the CMS | We wrote a backup that exports the full content set, including components, dynamic sections and media references, keeps a week of history and runs every day. | The CMS holds years of writing, product specifications and photography. A daily copy turns a mistaken bulk edit from a rebuild into an hour of work. | Apr 2026, May 2026, Jul 2026 |
| Found and removed 67 duplicate pages we had introduced | A catch all route on the new site was publishing 67 legacy records out of the CMS at their own addresses alongside the real pages. Roughly 14 duplicated a live page outright, 14 were dead pages carried across in the migration and the rest were expired promotional pages. We removed the route, kept the data untouched and triggered a rebuild to clear them. | We introduced this and we caught it. Two addresses describing the same product split its ranking signals so neither one wins, and Search Console had been reporting the site for duplicate content. Removing them gave every page a single address and freed 67 addresses of crawl budget that returned nothing. | Apr 2026 |
| Moved garden room packages, pricing and finishes out of code and into the CMS | Those three things lived in static files only a developer could change. We added the matching fields to the garden room type, rewrote the components to read from the CMS, ran a one time migration to move the existing content across and deleted the old files. | A price change used to need a developer, a code review and a release, so the site drifted out of date between them. Now the team edits the price and the site rebuilds itself. | Apr 2026 |
| Let editors publish a homepage banner without inventing a fake sale | A banner could only exist as part of a promotion or a clearance event, so running a showroom announcement meant creating a fake promotion with a discount label, which then leaked a discount ribbon onto product cards. We relaxed the required fields so a banner needs only a title, dates and images, and removed the clearance fallback from the banner logic. | The team now puts a banner on the homepage in about two minutes with no developer and no side effects on product pricing. Before this, every announcement either waited for a developer or shipped with a fake discount attached. | Apr 2026 |
| Cut the number of CMS calls each build makes | Several components fetched their own data every time they rendered. The testimonials block ran its own query on roughly 240 pages, so one build made the same call 240 times. We moved those queries into shared helpers that hold the result for the length of the build. | The CMS plan allows a fixed number of calls a month, and a single build was burning between 500 and 2,000 of them. That capped the site at roughly 25 to 100 rebuilds a month, which is not enough for a team editing daily. Caching turned publishing from something to ration into something routine, and nothing about the rendered pages changed. | Apr 2026 |
| Replaced the homepage image carousel with a streaming video hero | We built a full width autoplaying video hero that streams at a quality matched to the connection, with overlay content that changes at set points in the video. We built it against a test page first, then wired it into the homepage. | The homepage is the page most first time visitors see, and a carousel of stills does not show a garden building the way a moving shot does. This is the first thing a buyer judges the brand on. | May 2026 |
| Made the video hero take its slide copy from the video edit | The editor sets markers in the edit as part of cutting the video. We read that marker file at build time and turn each marker into a slide, so the marker name becomes the heading, its description becomes the subheading and its link becomes the button. Repeated markers collapse into one slide, the heading holds still when only the subtitle changes, and a slide with no markers falls back to copy set on the page. | Nobody retypes headings into a CMS and nobody waits on a developer to change them. The copy falls out of the edit the video team was doing anyway, which turns the homepage hero from a yearly project into something the marketing calendar can use each season. | May 2026, Jun 2026 |
| Made the video hero play on every browser and phone | We worked through the ways browsers refuse to start a video, including the way Chrome rejects unmuting, the native player Safari and iOS require and a race between two slides changing at once. We also fixed the marker strip clipping and derived the still frame from the video itself so no one has to export one. | A hero that shows a frozen frame is worse than a photograph, because it reads as a page that has broken rather than a page with a still image. Deriving the still frame automatically also removed a step the editor would otherwise repeat for every video. | May 2026, Jun 2026 |
| Added an upcoming events section the homepage manages itself | We added start and end date fields to the article type and built a homepage section showing up to four upcoming events, soonest first. It reads the events category, hides anything whose end date has passed and disappears entirely when nothing is coming up. We also made the expiry work on a statically built page and laid the cards out sensibly when there is only one. | Crown runs showroom openings and seasonal showcases that used to sit buried in a blog category. Putting them on the homepage puts footfall driving content in front of everyone who lands. The automatic expiry matters as much, because a homepage advertising last month's event damages trust more than an empty slot. | May 2026 |
| Let garden rooms show a floor plan for every size variant | Garden rooms had no floor plan field and the other product types could hold only one image. We added a multiple image field, folded the single and multiple shapes into one list in the site code and replaced the single thumbnail with a row that opens in a swipeable lightbox. Each thumbnail takes its caption from the file name, so naming a file Standard 4x3m shows the customer Standard 4x3m. | Buyers want to know whether the building fits and how the space works, and garden room shoppers could not see a plan at all. Showing every size variant keeps them on the page instead of sending them to a competitor who does. The file name caption means the team publishes new plans without a developer and without a field to maintain. | May 2026 |
| Extended the video hero to category and product pages | We built a lookup that matches a video to the page it belongs on by its address, held the result for the build, and wired the category layout and the product route to use it. | One video hero on the homepage is a nice touch. The same treatment on every category and product page means the team can put moving footage of the actual building at the top of the page that sells it. | Jun 2026 |
Platform Rebuild & Migration Integrity (28 tasks)
| Task | What we did | Why it mattered | When |
|---|---|---|---|
| Took the old WordPress site apart and moved its content across | We wrote tooling that reads the WordPress export, unpacks the page builder layouts into real content, resolves every image and pushes each record into the new CMS. It covers products, pages, articles, use cases and showrooms, and it carries the draft and published states across correctly. | Years of writing, photography and specification detail came over intact rather than being retyped. A migration that quietly loses content loses the rankings that content had earned. | Jan 2026, Feb 2026, Mar 2026 |
| Imported the old pages at the addresses they already had | We brought the WordPress pages and showroom entries across and kept each one at the address it was already published on rather than letting the new system invent its own. | Address parity is the single biggest lever in a migration. A page that keeps its address keeps every link and every ranking pointing at it, with no redirect in between and nothing lost in the hop. | Jan 2026 |
| Designed and built the new front end | We built the site on a framework that renders pages ahead of time rather than assembling them on each request, starting from the homepage design and working out through the sections, the type scale and the colour system. | Pages that already exist as files when a visitor asks for them are the fastest thing a site can serve, and speed is one of the things Google measures directly. It also means the site stays up when the CMS does not. | Jan 2026, Feb 2026 |
| Set up the hosting and the release path | We containerised both the site and the CMS, set up the reverse proxy and certificates, documented every environment variable and moved the site onto the hosting platform it runs on today with automatic releases. | A release path that anyone can run is what makes frequent publishing safe. It also means a rollback is a minute rather than an evening. | Jan 2026, Feb 2026, Mar 2026 |
| Repaired the formatting of imported text as it came across | Some imported fields arrived as plain text with no markup, which rendered as one unbroken block. We wrapped them properly during the import and set up code formatting so the generated pages stay readable, including the whitespace inside meta tags. | Imported content that renders as a wall of text loses the reader. Fixing it during the import meant nobody had to reformat hundreds of records by hand afterwards. | Jan 2026 |
| Extracted real content out of the old site's page builder layouts | The old pages were built in a page builder that stores content wrapped in layout data. We analysed its structure, wrote extraction tooling covering the widget types the site actually used and pulled the text and images out as clean content. | The alternative was retyping every page. Extracting it meant each page kept its original wording word for word rather than a fresh approximation of it. | Jan 2026, Feb 2026 |
| Made the import repeatable against any environment | We reworked the import so each content type has its own translation step, added retry handling for failures, made it target a chosen server and made it bring images across by default. | A migration you can only run once has to be perfect first time. Making it repeatable meant we could rehearse against a copy, find the gaps and run it again rather than patching the live site afterwards. | Jan 2026 |
| Built a tool that compares the build against the design section by section | We built a comparison pipeline that lines up each section of the built page against the approved design, with a magnifier for close work, and used it to work through the differences run by run. | It turns a vague sense that something looks off into a numbered list of specific differences. That is the difference between a design that ships at eighty percent and one that ships as drawn. | Feb 2026 |
| Reduced four hero components and four galleries to one of each | The build had grown several versions of the same thing. We wrote one hero, one breadcrumb and one gallery, migrated every page onto them, and moved the replaced versions out of the live code. | Every duplicate is a place a later fix gets forgotten. One component means a change to the hero improves every page at once rather than the three someone remembered. | Feb 2026 |
| Built the showroom map and chose it against alternatives | We built several versions of the map, put them side by side on a page, chose the interactive one and removed the rest. It shows every showroom, routes the visitor from where they are, and no longer takes over the page when someone scrolls past it. | A showroom visit is where this product sells, and the map is the step between wanting to visit and knowing how to get there. Building the alternatives and comparing them cost less than choosing wrong and rebuilding. | Feb 2026 |
| Built the navigation the range needs | We built a full width mega menu that shows each collection, the models within it and the use cases beside them, made the top level items clickable in their own right and rebuilt the layout for the categories that need three zones. | The range is wide enough that a plain menu hides most of it. A menu that shows the collections is also a set of internal links on every page, which is how ranking value reaches the deeper product pages. | Feb 2026, Mar 2026, Apr 2026 |
| Built the pages that carry the brand story | We built the about page, the contact page, who we are, why Crown Pavilions, the bespoke garden rooms page, the reviews page with the Trustpilot feed and the founders story sections on the homepage and the about page. | These pages are what a buyer reads when they are deciding whether a company that asks for this much money is real. They also carry the brand entity signals that connect the website to the company Google knows about. | Feb 2026, Mar 2026, May 2026 |
| Removed the placeholder and test pages from the public site | The build was publishing 18 coming soon placeholders, a sample product page and a temporary product list. We deleted all of them and cleared out the folders left over from the earlier prototype. | A coming soon page in a search result is worse than no page. Each one was also a live address that a crawler spent effort on and a visitor could land on from search. | Feb 2026, Mar 2026 |
| Put analytics on every page from one place | We added the analytics tag to the shared page layout so every page carries it, rather than each page adding its own. | Analytics added page by page always ends with pages nobody remembered. Putting it in the layout means the numbers cover the whole site, which is the only way they are worth reading. | Feb 2026 |
| Rebuilt the product page template | We rebuilt the product page around a nested layout, reordered the sections so the range, the specification and the packages come in the order a buyer reads them, made the product cards taller so the photography carries, and used the dedicated mobile image where a product has one. | The product page is where the enquiry happens. Getting the order right means the buyer meets the argument for the price before the price, rather than after it. | Feb 2026, Mar 2026 |
| Built the paginated listing pages the range needs | We built listing pages that page through every content type and raised the page size so a listing shows a useful number of items rather than a handful. | A listing that shows twenty items when eighty exist hides three quarters of the range. Pagination that works is what lets a search engine walk the whole catalogue. | Feb 2026 |
| Made the showroom finder show driving distance and route | We built a proximity finder that takes the visitor's location, orders the showrooms by driving distance rather than straight line, shows the route and handles a partial postcode. We also replaced the default map popup with our own so it stops covering the route it just drew. | The distance that matters is the drive, not the crow's flight. Somebody who can see it is forty minutes away books a visit. Somebody who cannot tell assumes it is too far. | Feb 2026 |
| Made the related products block choose by price rather than at random | The related products under each product were fixed. We made the block pick products near the same price from the same range. | Someone looking at one model wants to see what else sits at their budget. Showing a model at twice the price ends the browse instead of continuing it, and internal links between related products are also how ranking value spreads through the range. | Feb 2026 |
| Reworked the homepage hero imagery and its behaviour on each screen size | We refreshed the hero image set, gave each slide its own subtitle naming the product type it shows, served the desktop image set to tablets so the picture stopped looking soft, and moved the breakpoint that decides which set a phone gets. | The hero is the first thing every visitor sees and the image Google times the page load against. A blurry hero on a tablet reads as a cheap site selling an expensive product. | Mar 2026, Apr 2026, May 2026 |
| Wrote the brand's selling points into one place and put them across the site | We wrote the selling points into a single data file, 16 for garden rooms and 16 for gazebos and summer houses, and built one grid that renders them. We placed it on the garden rooms, gazebo and summer house category pages, on every product page and on the why pages, and rebuilt the why Crown Pavilions page around it with two dedicated variants. | Triple glazing as standard, TRADA certification, marine grade fabrics and installation included are the reasons a buyer picks Crown over something cheaper, and the site barely mentioned them. Putting them high on every category and product page answers the comparison question before the visitor leaves to ask it somewhere else, and gives each page substantial on topic text of the kind Google reads as expertise. | Apr 2026 |
| Built the smokeless BBQ collection page | We built a page for the smokeless BBQ, an electric grill that drops into a dining table inside six of the wooden gazebos. Six sections cover the product, how the extraction and the infrared element work, the two formats with their dimensions and power ratings, and a grid linking to each compatible gazebo. | The product existed with no page, so nobody searching for it could find it and the sales team had nothing to send. The six model cards also carry visitors who arrived on a niche accessory search straight into the gazebo range, and push internal link value into six pages that already earn revenue. | May 2026 |
| Built the garden golf simulator use case page | We added a golf simulator page to the garden room use case section covering the questions a buyer actually asks, including ceiling height for a full swing, lighting and blackout for camera based launch monitors, a dedicated electrical circuit, climate control, acoustic treatment and a hardwired network run. It slots into the existing use case system, so the listing, the route, the breadcrumb markup and the FAQ block all picked it up from one data file. | The old Crown site had a golf simulator page and the new one did not, so a topic the brand used to cover had been given away. The brand's own articles already told readers to put a simulator in a garden room and those links had nowhere to land. Golf simulator buyers sit in Crown's price bracket and search with high intent. | May 2026 |
| Built a foundations overview page and linked it from the gazebo range | We built a page explaining the foundation options and linked it from the gazebo pages where the question comes up. | Foundations are the question that stops a buyer being sure the building can go where they want it. Answering it on the site rather than in a call removes a step between interest and enquiry. | May 2026 |
| Tidied the use case pages and their listing | We separated the hero from the first content block so an editor can change one without disturbing the other, refreshed the listing hero with a high resolution image, swapped the garden gym picture for the new photography and removed the legacy reference files left over from the migration. | The use case pages catch searches for what people want the building to do rather than what it is called. They earn that traffic only if they look as considered as the product pages. | May 2026 |
| Built routes into the gazebo comparison page from the range | The mobile menu never rendered the footer links the desktop menu shows, so the compare brands link did not exist on a phone. We made the mobile menu render them. Separately, no gazebo page linked to the comparison at all, so we built a compact band with a heading, a line of text and a button and placed it on the category page and after the gallery on every gazebo product page. | The comparison page answers the question that decides the sale, and anyone browsing gazebos on a phone had no route to it. Internal links also carry ranking value, so a page nothing points at struggles no matter how good it is. | Jun 2026 |
| Built the annexe concept page with a live configurator | We built a concept page for a garden annexe line, anchored by a configurator where the visitor picks a size, cladding, colour, floor, wall finish and furnishing package and watches the running total, the monthly figure and the matching renders update as they choose. The page opens with editorial context on what an annexe is and closes with an enquiry form that carries the chosen configuration into the lead. We kept it out of the search index while the figures stay provisional and flagged the planning copy for legal review. | Crown holds drawings for two real annexe builds and wanted to test the market before committing to a range. The page lets the business show the product, price it and collect qualified leads without building the range first, and the sales team opens each conversation already knowing the budget and the taste. | Jun 2026, Jul 2026 |
| Moved the site's content store onto a new platform without changing a page | We built a switch that lets the site read from either store, wrote a translation layer so the new one hands back exactly the shape the site already expected, moved the collections across one at a time behind that switch, then turned it on. The old path kept working throughout. We then ported the remaining fetchers, moved the images and documents across and fixed the environment differences that only show up on the deployment platform. | Migrations that rewrite the site at the same time as the data are how sites lose their rankings. This one changed nothing a visitor or a search engine could see, which is exactly the point. | Jun 2026, Jul 2026 |
| Added furnished and unfurnished pricing to the summer house packages | The Gold and Platinum packages are sold with or without furniture at different prices. We made the page show both rather than one figure that only applied half the time. | A price on the page that does not match the quote is the fastest way to lose a buyer's trust. Showing both means the page answers the question rather than starting an argument. | Jul 2026 |