In January 2026 one of our clients β an e-commerce site for home goods β came with the brief: "we've been outside the top 30 on our main commercial queries for a year, nothing works". Ninety days later those same queries sat in top 3. This article walks through what we did, in what order, which metrics we tracked and why the approach is reproducible for most mid-competition sites. Anonymised but real numbers.
Starting point
The site was 4 years old, 8,000 monthly organic visits, mostly informational blog queries. Commercial categories β product pages β had almost no organic. Across the 30 main commercial keywords the average position was 78. Organic revenue around $2,500/month. Goal: bring commercial categories into the top 10, ideally top 3.
Month 1: technical audit and foundation
First two weeks β full technical audit. Findings: 2,400 filter-parameter duplicates (no canonicals); mobile LCP 4.8s (huge unoptimised product images); cannibalization β 8 category pairs fighting for the same queries; sitemap was 60% URLs returning 404 or noindex; 70% of product cards had no Product JSON-LD. Rock bottom. Remaining two weeks of month one we fixed the base: canonical on parameters, image optimisation (WebP + lazy load + proper sizes), merging duplicate categories via 301, sitemap regen, baseline JSON-LD. End of month: LCP down to 2.1, indexed duplicates 80 (from 2,400), clean sitemap.
Month 2: content and structure
Month two β content and structure. Rewrote title and meta description for all top-30 commercial categories on a clean template: "{Category} β buy with Moscow delivery | {Brand}", description 140β160 chars with a unique offer. Added unique 500+ word text to each category: range description, how-to-choose tips, FAQ at the bottom. On product cards β unique descriptions not copy-pasted from manufacturer sites. Enabled AggregateRating via real customer reviews (which existed but weren't marked up). End of month: positions already 25β35, visible progress.
Month 3: links and final push
Month three β link building and final tweaks. We launched a guest-posting campaign: 8 articles on topical resources with links to commercial categories. All links natural, through context ("more in the catalogue"). In parallel β internal linking: from every relevant blog post (already getting traffic) we added contextual links to commercial categories. This transferred part of the blog's "authority" to commercial pages. End of month three: 18 of 30 keywords in top 3, another 7 in top 10. Organic traffic grew from 8,000 to 23,000/month, organic revenue from $2,500 to $10,600/month.
Why this worked the way it did
Three factors explain the result. One β the client arrived with a strong foundation they weren't using. The site was 4 years old; it already had domain reputation, behavioural metrics, a baseline link profile β we didn't build from scratch, we "unlocked" accumulated potential via technical and content fixes. Two β sequencing. Had we started with link building in month one, links to a technically broken site would do nothing. Had we rewritten content without fixing duplicates β cannibalization would eat the gains. Three β focus on a limited keyword set. 30 keywords instead of 300 β each got attention, none was left "lightly optimised".
What would NOT have worked here
Had the client's site been 6 months old instead of 4 years β the same actions would lift to top 15, not top 3. Top 3 requires accumulated domain authority that buys time. Had competition been extreme (say "buy laptop Moscow" against Wildberries and Ozon) β top 3 would be unreachable without tens of millions in link budget. Had the client had no real product reviews β AggregateRating would have nothing to mark up. The case worked because three conditions aligned: site age, mid-competition, real reviews.
Frequently asked
Can this result be reproduced on a new site?
On a site under 1 year β no, top 3 needs domain age. On a 2+ year site with similar competition β yes; in our experience this methodology averages "top 5 in 3β4 months" in 70% of cases.
Which tools were used in the case?
Site Metrics Tool for rank monitoring and alerts (Agency plan), Screaming Frog for crawls, Search Console and Yandex Webmaster for GSC/Webmaster data. Nothing exotic.
How much did the engagement cost?
A team of three for three months + a guest-posting budget of $2,500 + tools subscriptions of ~$300/month. Roughly $15,000 total. Paid back in the second post-engagement month via revenue uplift.