The starting point
The client runs an online furniture store for home and office with a catalog of around 3,500 items. Before we started working together, the site was pulling in 2,100 organic visitors a month. A decent number on paper — but one that didn't reflect the real potential of the niche, and didn't give the owner a predictable flow of orders from organic search.
SEO had been done before us, but without a clear system. Some categories were optimized, others weren't. The URL structure had grown organically as the product range expanded. The biggest hidden problem we found in the audit: different pages on the site were ranking for the same queries and pulling traffic away from each other. Google couldn't decide which one to show — and ended up not showing any of them with any consistency.
What the audit revealed
The first two weeks were pure analytics. A technical crawl via Screaming Frog turned up 847 errors of varying severity. In parallel, we pulled 16 months of position and click data via GSC API — to understand which pages already had ranking signals from Google, and which needed to start from scratch.
Key audit findings:
- 412 pages with no unique meta tags — titles and descriptions were generated from the category name with no regard for actual search intent
- Content duplication between overlapping categories ("sofas" and "upholstered furniture") with no canonical tags
- Product Schema missing from 94% of product pages — no rich snippets with prices in search results
- URL depth of 4–5 levels for part of the catalog, slowing down crawling
- LCP of 6.8 seconds on mobile due to unoptimized product photos (uncompressed JPEG, no WebP)
- 340 orphan pages with no internal links pointing to them
Strategy: where we started
After the audit it was clear that content and link building weren't the immediate priorities. First we needed to fix the technical foundation and give Google a clear map of the site: which page owns which topic.
We built and clustered a semantic core of 4,200 keywords via Ahrefs using real SERP overlap — not "similar words in one group," but "queries where Google surfaces the same competitor pages." This produced a precise map: 68 clusters for existing categories, 14 new categories worth creating, and 290 queries for the blog.
The fundamental difference from the standard approach: we didn't start writing content before the technical problems were resolved. Fresh copy on a technically broken page is wasted effort. Google won't rank a page with indexation issues regardless of how well the text is written.
Timeline of work
Results in numbers
| Metric | Before | After 7 months |
|---|---|---|
| Organic traffic / month | 2,100 | 12,340 (+487%) |
| TOP-10 keyword positions | ~180 queries | 940+ queries |
| Search CTR | 2.1% | 4.8% |
| LCP (mobile) | 6.8 sec | 2.1 sec |
| Pages in index | 1,840 | 2,670 |
| Additional revenue / month | — | +$17,000 |
What drove the biggest impact
- Clustering and catalog restructure — eliminating internal keyword cannibalization drove the first traffic increase even before any new content went live
- Product Schema and meta tag optimization — CTR jumped from 2.1% to 4.8% through rich snippets with prices, delivering more traffic without changing rankings
- Mobile LCP improvement — Core Web Vitals directly affect rankings, especially on mobile where the majority of furniture store traffic originates