
Personalised embroidery and engraving is a business that rests, by its nature, on an individual approach to every order. Every customer wants something different - a different text, a different symbol, a different file. HaftClub knew it wanted to grow, but without an online store every order meant a separate conversation, a separate email, a separate file. I built a system that changes that - and that is ready to grow with the company.
The challenge
Before the store went live, HaftClub had no online sales channel at all. That meant a concrete limit: the company could only reach customers who already knew it or arrived through a recommendation. Every order, especially the fully personalised ones, required manual coordination: a phone call, an email, a file, a confirmation, a quote.
The complexity of the offer was a further challenge. Some products have a fixed set of personalisation options - text fields, selects, file upload. But some are entirely bespoke, where the owner has to see the enquiry first, contact the customer and agree a price individually. One system had to handle both scenarios.
International sales were on the horizon too - from the start, the system had to be ready for different currencies and different markets.
%25201.avif%3F2026-04-17T17%253A54%253A25.446Z&w=3840&q=80)
%25201.avif%3F2026-04-17T17%253A54%253A13.090Z&w=3840&q=80)
%25201.avif%3F2026-04-17T17%253A54%253A18.567Z&w=3840&q=80)
%25201.avif%3F2026-04-17T17%253A53%253A56.812Z&w=3840&q=80)
%25201.avif%3F2026-04-17T17%253A54%253A06.205Z&w=3840&q=80)
01 / 05
The solution
I chose Medusa.js with Next.js and extended it with a custom personalisation module - more advanced than anything a standard e-commerce engine offers.
The personalisation forms are built in the admin panel and assigned to specific products. Every form can have a completely different configuration - text fields, selects, file uploads. But that is not all: the forms also handle paid add-on options. When choosing a product, the customer can buy specific personalisation variants, and the order price updates dynamically.
The second key element is an enquiry module for fully bespoke products. The customer fills in a form describing their project, the owner receives the enquiry, contacts the customer and agrees a price. Once both sides agree, a single click turns the enquiry into an order. No retyping data by hand, no chaos.
The whole thing is prepared for international sales - multi-currency support and infrastructure ready for expansion without rebuilding the system. Payments through Stripe, delivery through InPost.
Forms with paid add-ons
The customer personalises a product and buys add-on variants in one flow - the price updates dynamically.
Enquiry module
Bespoke projects arrive as enquiries to the owner - once the price is agreed, a single click turns them into an order.
The results
The store eliminated manual coordination for standard orders - the customer personalises the product themselves and the data goes straight into the order. The owner spends her time and attention on what genuinely needs her: the fully bespoke projects, where her knowledge and experience actually matter.
The flexibility of the system means new products can be introduced without a developer - no matter how much they differ from the previous ones. And an architecture ready for multiple currencies and markets means that when HaftClub decides to expand, the store will be waiting.