Product · 2024

Bespoke In-House CRM & Ordering Portal

Design, development and ongoing supervision of a bespoke in-house CRM and ordering portal for Shutters Factory Ltd — initially built on CodeIgniter in 2018, fully refactored to Laravel with API integrations from 2021, following Agile methodologies throughout.

Shutters Factory bespoke Laravel CRM and order pipeline dashboard

The brief

As Shutters Factory grew from a retail operation into a multi-channel business serving both B2C customers and a network of B2B trade resellers, off-the-shelf CRM and order management tools stopped being adequate. The product range was too specific, the pricing logic too complex, and the operational workflows too particular to the window covering industry for a generic platform to handle cleanly.

In 2018 we began building a bespoke in-house CRM and ordering portal — a system designed from the ground up around the way Shutters Factory actually operates.

Phase 1 — CodeIgniter (2018–2021)

The first version of the system was built on the CodeIgniter PHP framework. It covered the core operational needs of the business at the time: company and client management, pricing configuration, quoting and order processing. It was purpose-built, fast to deploy and well-suited to the scale of the business in 2018.

Phase 2 — Migration to Laravel (2021 onwards)

As CodeIgniter matured into a legacy framework and the business’s requirements grew in complexity, a full refactor became the right decision. From 2021 we migrated the entire codebase to Laravel — a modern, well-supported PHP framework with a rich ecosystem and strong API capabilities.

The migration was not a straight port. Every module was refactored with Laravel conventions, and the move was used as an opportunity to introduce proper API architecture, improve the data model and lay the groundwork for future integrations. We worked alongside the internal Shutters Factory development team and a second external team throughout the process, coordinating delivery under Agile methodologies — supervising the build, establishing the implementation roadmap and setting priorities across sprints.

What the system manages

Quick Quote generation and multi-tier B2B pricing management

Companies. B2B resellers who purchase from Shutters Factory are managed as company accounts — with their own pricing tiers, trading names, contacts and order history.

Users. Full authentication and authorisation management, with role-based access control across internal staff, B2B company users and administrators.

Pricing lists. Configurable default pricing structures for both B2B and B2C channels, covering the full product catalogue. Pricing rules can be set per company, per product type and per volume tier.

Multiple trading names. A single company can operate under multiple trading names within the system — reflecting the real-world structure of larger trade accounts and franchise-style resellers.

Clients. B2C and B2B end clients managed internally, with full contact history, job history and notes.

Quotes. A full quoting workflow for new jobs — product selection, configuration, pricing, margin and client details — producing a formatted quote ready to send.

Quick Quote. A streamlined quoting mode designed for B2C enquiries: a salesperson can generate an accurate estimated price for a job in under 30 seconds, without going through the full quote workflow. Designed for phone enquiries and showroom visits where speed matters.

Orders. Full order management for both B2B and B2C — from confirmed quote through to production, dispatch and completion. Order status, history and documentation all managed in one place.

Remakes. A dedicated module for managing remakes — orders that need to be reproduced due to damage, measurement error or product fault — with its own workflow, tracking and reporting separate from the main order pipeline.

Calendar. A scheduling module allowing the team to book and manage client visits — both B2B account visits and B2C home surveys and installation appointments — with visibility across the team.

The calendar goes well beyond a simple diary. It is backed by an intelligent scheduling algorithm that handles the complexity of a field-based operation:

  • Timing validation. The algorithm checks for conflicts and validates realistic timing between consecutive visits, accounting for travel rather than just clock time.
  • Distance and travel time calculation. Integrated with the Google Maps and Distance Matrix APIs, the system calculates the actual travel time between any two visit locations — ensuring back-to-back appointments are physically achievable.
  • Smart slot suggestions. When booking a new visit, the system analyses the assigned team member’s existing workload, their availability windows, and the geographic position of the new appointment relative to their existing schedule — then surfaces the best available slots, ranked by travel efficiency and workload balance.
  • Google Calendar integration. Confirmed appointments sync with Google Calendar, keeping field staff and office teams aligned without manual diary management.

The result is a scheduling tool that actively helps the team make better decisions — reducing wasted travel time, avoiding overloaded days and ensuring the right person is assigned to the right visit at the right time.

HubSpot integration — two-way CRM sync

Smart survey appointment scheduling with Google Maps distance matrix routing

The system is fully integrated with Shutters Factory’s HubSpot accounts via the HubSpot API, creating a two-way data sync between the bespoke CRM and the sales team’s primary pipeline tool.

Leads captured through the website and other inbound channels flow automatically into HubSpot — and from there, into the bespoke CRM — ensuring the sales team always has a complete, up-to-date picture of every prospect and client without manual data entry across two systems. Equally, updates made inside the CRM — status changes, contact details, job outcomes — sync back to HubSpot, keeping the sales pipeline accurate in real time.

This integration was built specifically to support the sales team: they continue to work in HubSpot as their primary interface, while the operational team works in the bespoke CRM, and both systems stay in sync automatically. No duplicated records, no stale data, no information lost between the two platforms.

A system built for the long term

What started as a focused operational tool in 2018 has grown into the operational backbone of the Shutters Factory business. Six years of continuous development, two framework generations and a full Agile delivery process have produced a system that is genuinely tailored to the business — something no off-the-shelf platform could replicate. It remains in active use and active development today.

2018 Year the CRM was first built and deployed
6+ Years of continuous development and active use
< 30s Time to generate a B2C quick quote

New project enquiries welcome

Ready to build something that actually works?

Whether you need a new web application, a cloud migration, an automated workflow or a growth campaign — tell us what you are trying to achieve and we will show you how to get there.