Jamb and Hawker Antiques had just merged when the project landed with us: two legacy PHP sites, 70+ duplicate meta descriptions, and a custom CMS where adding a furniture category meant hoping nothing else fell over. The catalogue runs from 18th-century Irish chimneypieces to six-figure antiques, and most of it sells through enquiry rather than a cart.
We rebuilt it on Sanity and Next.js, with headless Shopify handling the pieces that do sell through checkout. The same product record routes to either a cart or an enquiry form, and variations (sizing, finish, edition) carry through whenever there's a cart to render. For the homeware that carries stock, Shopify's Buy Button sits beside the Sanity catalogue, so there's no separate storefront and no second CMS to keep in sync.
Editors assemble landing pages from page-builder blocks in Sanity, so the team can build and swap pages without a developer. Adding or retiring a product category takes minutes instead of a deploy.
The hard part was the SEO migration. Two URL spaces had to merge into one without losing decades of organic equity, and antique-specific search terms rank slowly and stay ranked for years. Before launch we built a sitemap spanning both legacy sites and mapped every page into the new structure. Internal links run through Sanity document references rather than hardcoded URLs, so a slug change in one place doesn't cascade into 404s elsewhere. After launch we watched Search Console and Vercel observability for 4xx and 5xx errors and shipped redirects the same day. Rankings held through the cutover.
Build times dropped from 30 minutes to three across 2,000+ pages, page loads stayed sub-second, and hundreds of enquiries came through in the first week. A wider Sanity Connect for Shopify rollout is queued for the parts of the catalogue that suit a checkout flow.
☎︎ Book a call with us