Context
Early-stage D2C eyewear has commerce requirements that a general-purpose platform doesn't anticipate. Customers need appointments for eye exams. Purchases often involve prescription validation. At-home try-on is a separate commercial flow with its own logistics, timing, and fulfillment logic.
Shopify handles the commerce surface well. It does not handle optometry.
Problem
- The business needed appointment booking, prescription management, and at-home try-on to work as reliably as the core commerce surface — but none of these existed as Shopify-native functionality.
- Customer experience depended on what happened between what the website showed and what operations could deliver. A broken appointment flow or a failed prescription lookup showed up immediately.
- Early growth required shipping quickly — but not so quickly that the operational layer became fragile.
Approach
Built custom microservices for each flow: appointments, prescriptions, at-home try-on. Designed them to sit on top of the Shopify platform without fighting it — custom service layer, not a fork.
The work was at the intersection of commerce platform, customer experience, and operational reliability. An endpoint that works in staging but fails under appointment load is not a shipped service.
Decisions
- Custom service layer over Shopify rather than forcing every behavior into native Shopify patterns — some problems need real services, not workarounds.
- Design for operational reliability first — these flows are customer-facing but entirely dependent on back-office execution to deliver.
- Keep customer-facing flows tightly coupled to what operations can actually fulfill, not what the product mockup assumed they could.
Impact
- Appointment, prescription, and at-home try-on flows running at scale in Mexico and Chile.
- Business grew 2x annually through this period — the commerce layer kept pace with the growth.
- Service foundations that subsequent engineering teams extended for new markets and additional product flows.