The short answer
Indie House is an independent perfume and fragrance retailer with multiple physical locations and a growing online presence. The store has a passionate local following and a standout in-store experience built around custom fragrance creation classes, curated product collections, and knowledgeable staff who help customers find scents that match their personality and preferences.
The problem was that none of that translated online. The website existed, but it was not built around how customers actually shop for niche fragrances or book experiences. Booking a custom fragrance class was confusing and unreliable. Purchasing products online was clunky. Inventory across the multiple locations was not synchronized, so customers would regularly find products listed as available online only to discover they were out of stock at their preferred location. And from a discovery standpoint, almost no new customers were finding the store through search. If you did not already know Indie House existed, you were unlikely to stumble across it through Google, an AI-powered search tool, or a local discovery query.
Over four months, I redesigned the entire digital customer journey from discovery to purchase, rebuilt the class booking system, implemented real-time inventory synchronization across all locations, and layered in a full SEO, AEO, and GEO strategy to make the store findable for the first time. Online revenue grew 45%, organic search traffic tripled, and the out-of-stock complaints that had been eroding customer trust dropped dramatically.
Problem
The in-store experience was excellent. The online experience was not.
Indie House's strength is the in-store experience. Walking into one of their locations feels personal and curated. The staff knows fragrances deeply. The custom fragrance creation classes are their signature offering: customers come in, learn about scent families and fragrance composition, and create a personalized scent that is uniquely theirs. It is an experience-first business, and the in-store execution is exceptional.
But the website told a completely different story. It functioned more like a digital brochure than an extension of the brand experience. There was no visual richness, no editorial sensibility, and no sense that you were interacting with a boutique that takes pride in curation and craft. The gap between walking into the store and landing on the website was jarring.
This matters because an increasing share of Indie House's potential customers start their journey online. They search for "custom perfume experience," "fragrance creation class near me," or "indie perfume shop." If the website they land on feels generic, hard to navigate, and disconnected from the quality of the actual experience, they leave. The website was not just underperforming. It was actively misrepresenting the brand.
The booking flow for custom fragrance classes was broken
Custom fragrance creation classes are one of Indie House's highest-margin offerings and one of the primary drivers of new customer acquisition. A customer who comes in for a class often becomes a repeat buyer of the fragrances and products they discover during the experience. Getting more people into classes is one of the most direct ways to grow the business.
The online booking process for these classes was working against that goal at every step:
Discovery was unclear. A first-time visitor to the website could not quickly understand what a custom fragrance class was, what it cost, what to expect, or why it was worth doing. The class information was buried on a subpage with minimal detail and no imagery that conveyed the experience. Customers had to already know they wanted to book a class before the website would help them do it. There was no path for someone who was just curious.
The booking form was confusing. Booking a class required navigating to a separate page, filling out a multi-step form that asked for information that was not relevant to the booking, and selecting from a list of available times that was not always up to date. The form did not clearly indicate which location the class was at, whether the selected time was confirmed or tentative, or what the cancellation policy was. Customers would fill out the form and not know if they had actually secured a spot.
Confirmation was unreliable. After submitting the booking form, customers received a confirmation email that arrived inconsistently. Some received it immediately, some received it hours later, and some did not receive it at all. This meant customers would show up unsure if their booking was actually confirmed, or they would call the store to verify, adding manual work for the staff and creating a poor first impression.
No upselling or context-setting. The booking flow ended at the confirmation. There was no information about what to expect at the class, no suggestions for products to explore before arriving, no social proof from previous attendees, and no prompt to add friends to the booking or purchase a gift card version. The booking flow treated the transaction as an end point rather than the beginning of a customer relationship.
Inventory was not synchronized across locations
Indie House operates multiple physical locations, and at the time, each location maintained its own inventory tracking system. These systems were not connected to each other or to the website. The website displayed product availability based on periodic manual updates rather than live data.
The consequences of this were significant:
Customers encountered out-of-stock products after browsing. A customer would browse the website, find a fragrance they wanted, and either attempt to purchase it online or drive to a location to buy it in person, only to discover it was not available. This happened frequently enough that it was actively damaging customer trust and creating a reputation problem. Repeat customers learned to call ahead before making a trip, which is a workaround that should never be necessary.
Online purchases failed after checkout. In some cases, customers completed an online purchase and received a confirmation, only to be contacted afterward and told that the item was not actually in stock. This is one of the worst experiences in e-commerce. The customer has committed to a purchase, received a confirmation, and then been told the store cannot fulfill it. Every instance of this costs more than just the lost sale. It costs credibility.
Staff spent time on manual inventory reconciliation. Because the systems were not connected, staff at each location spent time manually counting inventory and communicating stock levels to whoever was responsible for updating the website. This was time taken away from customer service and sales, and it was inherently error-prone because it depended on manual processes that could not keep pace with actual sales velocity.
Organic discoverability was nearly zero
Beyond the on-site experience problems, Indie House had almost no presence in organic search results. The site had no SEO strategy, no structured data markup, no local search optimization, and no content strategy designed to capture the queries potential customers were actually searching for.
For a niche independent retailer competing against large beauty chains, online marketplaces, and subscription fragrance services, being invisible in search results meant relying entirely on word of mouth and foot traffic for new customer acquisition. That is a viable strategy when you have one location in a high-traffic area, but it does not scale. It also means you are invisible to the growing number of consumers who start their shopping journey by asking an AI tool like ChatGPT or Perplexity for recommendations.
Approach
Phase 1: Customer journey mapping
Before making any changes, I mapped the complete customer journey from first touchpoint to post-purchase. This meant documenting every way a potential customer could discover Indie House (search, social media, word of mouth, walk-by), every step they would take on the website (landing page, browsing, product pages, class information, booking, checkout), and every post-purchase touchpoint (confirmation emails, follow-ups, review requests, loyalty engagement).
The mapping process revealed that the journey had 14 distinct friction points where customers were likely to drop off. The highest-impact ones were concentrated in three areas: the class booking flow, the product purchase flow, and the inventory accuracy issue. Fixing these three would address the majority of the revenue leakage.
I prioritized the changes based on a simple framework: which fixes would recover the most revenue for the least implementation complexity. The booking flow and inventory sync were the two highest-impact projects. The visual and UX overhaul of product pages came next. SEO, AEO, and GEO optimization was layered on last because it requires a stable site foundation to build on.
Phase 2: Rebuilding the class booking experience
The booking flow was rebuilt from the ground up with a clear design principle: a first-time visitor who has never heard of a custom fragrance class should be able to understand what it is, why it is worth doing, get excited about it, and book a spot in under two minutes.
Landing experience. The class booking now starts with a dedicated landing section that sells the experience before asking for any commitment. High-quality lifestyle imagery shows real customers during the class. Clear copy explains what happens during the session, how long it takes, what you take home, and what it costs. Social proof from previous attendees is displayed prominently. The goal is to take someone from "what is this?" to "I want to do this" before they ever see a booking form.
Simplified booking form. The booking form was reduced to the essential fields: location, date, time slot, number of guests, and contact information. Available time slots are pulled live from the scheduling system, so customers only see times that are actually open. The location selector displays the address and a map snippet for each option. Pricing is displayed clearly before the customer commits, including any group discounts for multiple guests.
Instant confirmation. Booking confirmation is now immediate and multi-channel. The customer sees an on-screen confirmation with all the details of their booking, receives an email confirmation within seconds, and gets an optional calendar invite they can add with one click. This eliminated the uncertainty that was causing customers to call the store to verify their booking.
Pre-visit engagement. After booking, the customer receives a pre-visit email sequence that sets expectations for the class, introduces the instructor, suggests arriving a few minutes early, and recommends exploring the store's product collection before or after the class. This serves two purposes: it reduces no-shows by keeping the class top of mind, and it primes the customer to make additional purchases during their visit.
Post-class follow-up. After attending a class, the customer receives a follow-up with a link to their custom fragrance profile, recommendations for similar products available in the store, a prompt to rebook or gift a class to a friend, and a review request. This converts a one-time class attendee into a repeat customer and a source of word-of-mouth referrals.
Phase 3: Real-time inventory synchronization
The inventory problem required connecting the separate inventory management systems at each location into a single source of truth that the website could query in real time.
Unified inventory layer. I worked with the team to implement a middleware layer that connects to the point-of-sale and inventory systems at each location. When a product is sold at any location, whether in-store or online, the inventory count updates across all systems within seconds. The website queries this unified layer rather than any individual location's system.
Location-aware product pages. Every product page now displays live stock levels broken down by location. A customer can see at a glance which locations have the product they want and in what quantity. If a product is out of stock at their preferred location but available elsewhere, the page suggests the alternative location with a map link. If it is out of stock everywhere, the customer can opt into a back-in-stock notification rather than hitting a dead end.
Automatic listing management. Products that drop below a threshold stock level are automatically flagged on the website with a "low stock" indicator, which also serves as a soft urgency cue for purchase decisions. Products that go to zero at all locations are automatically moved to an "out of stock" state with a restock notification option. When inventory is replenished, the product page reactivates automatically. This eliminated the manual update process entirely and ensured the website always reflects the actual state of inventory across the business.
Order routing. For online purchases, orders are now routed to the location with available stock closest to the customer's shipping address. This reduces shipping time and cost while ensuring that orders are fulfilled from the location best positioned to handle them. If a customer requests in-store pickup, the order is routed to their selected location with a confirmation that the item is reserved and ready.
Phase 4: Visual and UX overhaul
With the booking flow rebuilt and inventory synchronized, the next phase was redesigning the product browsing and purchase experience. Selling fragrance online has a unique challenge: the customer cannot smell the product. Every design decision needs to compensate for the absence of the primary sense that drives fragrance purchases in person.
Product page redesign. Product pages were rebuilt with high-quality lifestyle photography that shows the fragrance in context rather than just a bottle against a white background. Each product page includes detailed scent notes broken down by top, middle, and base, an ingredient list, the inspiration behind the fragrance, curated pairing suggestions with other products in the collection, and customer reviews with specific commentary about the wearing experience.
Scent profile navigation. I introduced a scent profile browsing system that lets customers filter products by fragrance family (floral, woody, citrus, oriental, fresh), by occasion (everyday, date night, professional), and by season. This mirrors the consultative process that happens in-store, where a staff member asks questions to narrow down the right fragrance. The online version cannot replicate the full in-store consultation, but it can guide a customer toward the right product faster than a flat product grid.
Streamlined checkout. The checkout flow was simplified to reduce cart abandonment. Guest checkout is available for first-time buyers who do not want to create an account. Shipping options are displayed clearly with estimated delivery dates. The option to pick up in-store is prominently featured for local customers, which also drives foot traffic. Every step of the checkout process was designed to maintain the sense of quality and curation that defines the Indie House brand, rather than defaulting to a generic e-commerce template.
Mobile optimization. Over 70% of Indie House's web traffic comes from mobile devices, so every design decision was made mobile-first. Product images are optimized for fast loading on cellular connections. The booking form works seamlessly on small screens. The navigation is thumb-friendly. The checkout flow does not require zooming or horizontal scrolling at any step.
Phase 5: SEO, AEO, and GEO optimization
With the customer experience rebuilt on a stable, synchronized foundation, the final phase was making the store findable to people who did not already know it existed.
Technical SEO foundation. Site speed optimization, proper URL structure, XML sitemaps, canonical tags, and internal linking architecture. The site was restructured around the queries real customers use: "custom perfume class [city]," "independent fragrance shop near me," "niche perfume store [city]," "create your own fragrance [city]." Each core page targets a specific intent cluster rather than trying to rank for everything.
Structured data and schema markup. Comprehensive schema was implemented for products (with pricing, availability, and reviews), local business listings (with hours, locations, and service descriptions), events (for upcoming fragrance classes), and FAQ content. This structured data layer makes the site's content significantly more accessible to both traditional search crawlers and AI models that extract information for generated answers.
Local search optimization. Google Business Profiles for each location were fully optimized with consistent NAP (name, address, phone) data, category selections, business descriptions, photos, and a review generation strategy. Local landing pages were created for each location with unique content that speaks to the surrounding neighborhood and customer base, rather than duplicating the same generic content across locations.
AI search visibility (AEO and GEO). Content was optimized for AI-powered search tools and answer engines. This meant creating content structured as direct, authoritative answers to the specific questions AI models surface about niche fragrances, custom perfume experiences, and independent retailers. The goal is that when someone asks ChatGPT, Perplexity, or Google's AI Overview "where can I make my own perfume in [city]," Indie House is the cited answer.
Result
| Metric | Impact |
|---|---|
| Online revenue | +45% growth |
| Class booking completion rate | Significantly improved from prior flow |
| Average booking-to-visit time | Reduced with instant confirmation |
| Inventory accuracy on website | Real-time sync across all locations |
| Out-of-stock complaints | Dramatically reduced |
| Organic search traffic | Tripled within 4 months |
| AI search visibility | Present in major AI answer platforms |
| Mobile conversion rate | Increased with mobile-first redesign |
| Cart abandonment rate | Decreased with streamlined checkout |
The most meaningful change was not any single metric. It was that the online experience finally matched the quality of the in-store experience. Before the redesign, the website was a liability. It was actively undermining the brand by presenting a generic, frustrating experience to potential customers who had been referred by enthusiastic friends or who found the store through a local search. After the redesign, the website became an extension of the brand. Customers who discover Indie House online now get the same sense of curation, quality, and personal attention that they would get walking into a physical location.
The inventory synchronization solved a trust problem that was costing the business repeat customers. When a customer can rely on the website to accurately reflect what is in stock and where, they shop with confidence. When they cannot, they stop checking the website entirely and either call ahead or simply go elsewhere. Real-time inventory is not a feature. It is the minimum standard for a multi-location retailer that wants to be taken seriously online.
The SEO, AEO, and GEO work opened a new customer acquisition channel that did not exist before. For the first time, potential customers who had never heard of Indie House were discovering the store through organic search and AI-powered recommendations. This is the foundation for sustainable growth that does not depend on increasing ad spend or relying solely on word of mouth.
What I'd do differently
Launch the inventory synchronization before the UX redesign. The new booking flow and redesigned product pages drove more online traffic faster than anticipated, and for the first two weeks the old inventory data was still feeding some product pages while the sync integration was being finalized. A handful of customers had the exact out-of-stock experience we were trying to eliminate, but now on prettier pages. Starting with the backend data sync and running it in parallel with the frontend design work would have ensured that every new visitor saw accurate stock information from day one. The lesson is straightforward: fix the data layer first, then improve the presentation layer. A beautiful product page with wrong inventory data is worse than an ugly product page with accurate inventory data.