Ooi Solutions · Case file

The Fabric Store

A New Zealand premium fabric retailer whose image-heavy e-commerce site couldn't keep up with demand. We spent five months rebuilding the experience - and tracked every improvement.

wearethefabricstore.co.nz  ·  Jan 2025 - May 2025  ·  13 interventions

+198%Online enquiries
+76%Organic traffic
2.5×Search impressions
+84%Sample requests

Source: The Fabric Store growth & performance report - GA4, Google Search Console and lead tracking, Jan 2025 → May 2025.

Admission notes

A fabric retailer with a beautiful range - and a site that couldn't deliver it

The Fabric Store sells premium fabrics, textiles and haberdashery online and across their New Zealand stores. Every fabric swatch, colour variant and collection is a search opportunity - but the site couldn't handle the visual weight of what they sell.

The situation

  • NZ-based premium fabric and textiles retailer, online and in-store
  • Thousands of fabric swatches across dozens of collections and categories
  • High-intent customers searching by fabric type, weight, colour and use
  • Growing demand for online sample ordering and bulk fabric enquiries

What stood in the way

  • Massive unoptimised fabric swatch images - collection pages took over 11 seconds to load
  • No search or filtering on collections - customers couldn't narrow by fabric type, weight or colour
  • Weak product descriptions - fabric composition, care instructions and usage suggestions missing
  • No structured data for products - Google couldn't surface swatches in search results
  • Sample request flow buried three clicks deep with no clear CTA

Scope

13 interventions, four workstreams

Documented in full in the The Fabric Store growth & performance report.

Performance

  • Image compression pipeline for fabric swatches
  • WebP conversion with AVIF fallbacks
  • Collection page lazy-loading by viewport
  • Critical CSS extraction and inlining
  • CDN cache headers for static assets

E-Commerce UX

  • Faceted search and filtering by fabric type, weight, colour
  • Sample request flow redesign with one-click ordering
  • Product page templates with composition, width, weight and care
  • Cart and checkout performance audit

SEO

  • Product schema markup across all fabric listings
  • Collection-level meta descriptions and title tags
  • Internal linking between fabric categories and uses
  • Alt text for 2,000+ product images

Content

  • Fabric guides for sewing, upholstery and dressmaking
  • Collection landing pages with rich editorial copy
  • Fabric care and composition glossary
  • Seasonal lookbook content for new arrivals

Before & after · the pages

What changed, page by page

These are the live The Fabric Store pages as they were, and as we rebuilt them. Screenshots come straight from the client performance report.

01

Collection Page

Thousands of fabric swatches crammed into an unoptimised grid.

Before
  • Full-resolution swatch images loading on page load
  • No filtering by fabric type, weight or colour
  • No product descriptions beyond price and name
  • Zero conversion points - no sample request CTA
After
  • Lazy-loaded WebP swatch images with blur-up placeholders
  • Faceted filter bar for type, weight, colour and use
  • Rich product cards with composition and sample CTA
  • Quick-view drawer with fabric details and add-to-sample

Screenshots: The Fabric Store growth & performance report.

Core Web Vitals

The vitals, before and now

Google's threshold for a good LCP is 2.5 seconds. The main collection page was over four times that.

Baseline
11.2sLCP
4.8sFCP
7.9sSpeed Index

Where those 11.2 seconds went

TTFB6%680ms
Load delay54%6,050ms
Load time36%4,030ms
Render delay4%440ms

Source: PageSpeed Insights baseline audit.

Today · assessment passed
1.4sLCP
85msINP
0.03CLS

Other notable metrics

First Contentful PaintGood0.5s
Time to First ByteGood0.2s

Source: PageSpeed Insights, 15 Jul 2026 - real-user field data.

Read this carefully

The 11.2s baseline is a Lighthouse lab test of the main collection page. The 1.4s is field data across the site. A like-for-like re-test of /collections/all would confirm the improvement end-to-end.

Still on the list

Third-party chat widget loading synchronously (~180ms), 14KiB unused CSS from the old theme, and a deferred size-guide modal that blocks the main thread on mobile.

The fix list

Ten issues, each with a documented fix

Not recommendations - the actual changes specified, page by page, in the SOP, with the collection page as the reference implementation.

Issue foundWhat we changed
LCP at 11.2s on collection pagePreload the hero swatch image · convert to WebP with <picture> fallbacks · inline critical CSS for above-the-fold grid
Uncompressed fabric swatch imagesBulk WebP conversion at 80% quality · serve AVIF to supporting browsers via <picture>
No lazy-loading below the foldNative loading="lazy" on all swatch images below row 2 · Intersection Observer for collection grids
Render-blocking CSSExtract critical above-the-fold CSS with Critical · defer remainder
No product schemaProduct, Offer and AggregateRating schema on every fabric listing
Missing alt text on swatchesProgrammatic alt text: fabric name, colour, composition for 2,000+ images
Images without width/heightExplicit dimensions on all product images plus CSS aspect-ratio
Weak cache policyCache-Control: public, max-age=31536000, immutable for optimised assets
No search or filteringFaceted filter bar: fabric type, weight, colour, width and use case
Sample request buried deepOne-click sample request from product card · sticky CTA on collection pages

The unglamorous part

The problems that don't fit in a pitch deck

Most of this engagement was invisible infrastructure work. It's also the reason the rest worked.

Fabric swatches were 3-6 MB each

High-resolution photos uploaded directly from the camera with no compression, no WebP, no responsive sizing. The collection page loaded 40 of them at once.

Collection pages had no filtering

Thousands of fabrics in a flat grid. Customers had to scroll through everything to find what they needed - cotton, linen, silk or synthetics.

Product descriptions were one-line

Most fabrics had just a name and price. Composition, weight, width, care instructions and suggested uses were all missing.

Sample requests were invisible

The sample ordering flow was buried in account settings. Most customers didn't know samples were available.

No structured data anywhere

Zero schema markup on any product page. Google had no product information to surface in search results or shopping surfaces.

Mobile was essentially broken

The collection grid didn't reflow properly. Fabric swatches were cut off and product cards overlapped on screens under 400px wide.

Results

What Ooi delivered

Every chart below is lifted from the client performance report, drawn from GA4, Google Search Console and lead tracking.

Google Analytics - lead generation performance

Jan 2025 → May 2025 · sample requests and online enquiries tracked across all channels

Google Analytics chart showing lead generation conversions increasing month over month through May 2025

Total leads over time

Monthly, Jan 2025 → May 2025

Line chart of The Fabric Store total leads per month, rising from baseline to nearly triple the starting volume

Year-over-year growth by channel

Jan-May 2024 vs 2025

Year-over-year growth by channel showing organic and direct traffic gains across the engagement period

Evidence

The traffic engine behind the leads

Search visibility and audience growth, straight from the consoles.

Google Search Console - clicks & impressions

2.5× impressions · organic clicks up 76% · average CTR improved from 1.2% to 3.1% · average position up from 18 to 7

Google Search Console chart showing clicks and impressions trending upward through May 2025

Sessions, page views & new users

Google Analytics · monthly

Bar chart of sessions, page views and new users rising together each month

Retention

New users vs returning visitors

Retention overview showing new and returning user split

Ooi Solutions

We do this for niche retail brands at scale.

5 months, 13 interventions, +198% online enquiries - and every number on this page can be checked in GA4, Search Console or PageSpeed Insights. That's the point.

ooisolutions.in  ·  hello@ooisolutions.in