Graham Sanderson Interiors
A Luxury Interior Design Retailer
The Situation
The business had been running on ExpressionEngine 2 for years. The site was the primary sales channel for a luxury interiors retailer, processing real payments and managing a complex product catalogue of made-to-measure curtains, blinds, wallpapers, and homeware. ExpressionEngine 2 had reached end of life, leaving the site exposed to security vulnerabilities with no core updates available. The e-commerce store was built on a heavily customised version of the Store module, with over 70 third-party add-ons and more than 10 bespoke custom plugins handling everything from price calculations and product filtering to checkout and shipping logic. The payment gateway was SagePay, which was presenting reliability and compatibility challenges. The business needed a specialist who understood both the ExpressionEngine platform and the specific way their store had been built, without the risk of losing years of customisation.What We Did
Karl carried out a comprehensive audit of the entire site before any upgrade work began, producing a detailed report covering every add-on, custom plugin, and area of customisation. This gave the client a clear picture of what the upgrade would involve and what risks needed managing. The full migration from ExpressionEngine 2 to ExpressionEngine 7 was then carried out, with each of the 70+ add-ons and 10+ custom plugins assessed, updated, or replaced. The custom Store e-commerce module required substantial work to bring forward, including modifications to the pricing calculator, product filtering, and shipping logic. The payment gateway was migrated from SagePay Server to Stripe Payment Intents, modernising the checkout significantly. Apple Pay and Google Pay were subsequently added via Stripe's Express Checkout Element, giving customers more ways to pay. The site was migrated to a dedicated server and full-page caching was implemented using LiteSpeed, with cache warming scripts to keep performance consistent across the catalogue. Post-upgrade testing was thorough and collaborative, with the client involved throughout before the new site went live. Karl has continued on a retainer basis since the launch.The Outcome
The site now runs on ExpressionEngine 7 with all customisations intact and the e-commerce store fully operational. The SagePay dependency has been removed, replaced by a modern Stripe integration that supports Apple Pay and Google Pay alongside standard card payments. Full-page caching has significantly improved performance across the catalogue. The client has continuity of support from a specialist who understands the full history of how the site was built and the business logic it carries.I cannot recommend Karl highly enough for his expertise and professionalism during our website upgrade. The transition from ExpressionEngine v2 to v7 was a significant undertaking, but Karl managed the entire process seamlessly, ensuring that every detail was addressed. The update of over 70 add-ons and 10 custom plugins was executed flawlessly, and the custom enhancements to our E-Commerce Store module have greatly improved our online shopping experience. The move to a more secure dedicated server has given us peace of mind regarding our site's performance and security. Karl's dedication to our project was evident at every stage, and the final result is a modern, efficient website that truly represents our brand.
Lisa Sanderson, Director ~ Graham Sanderson Interiors Ltd.
A Luxury Interior Design Retailer