Case study
When 7.154 product listings become more than just a catalogue
International smartphone case retailer · Spain · Three years of SEO for an e-commerce site with a network of physical shops in several countries
An e-commerce catalogue without its own text is like a library where nobody has written the blurb. Thousands of shelves, thousands of titles and not a single line explaining what’s inside each book. The librarian — Google, in this case — does what it can: it arranges them in alphabetical order and hopes that someone will ask for the exact title.
This was the state of the brand’s Spanish market in August 2023: a universe of 414 keywords with only 133 ranking and a visibility of 15,5 per cent. And that’s how the catalogue still looked when we audited it thoroughly in April 2026, with one detail that sums it all up: the alt attribute for all the images literally read ‘Product image’. Zero schema markup across the entire site.
Three years later, organic clicks for the second quarter had risen from 306.649 to 447.905. That’s a 46,1 per cent increase, measured in Search Console, not estimated. Let’s begin:
+46,1%
year-on-year organic clicks
32,6 → 10,4
average desktop position
107 → 268
keywords in the Top 10
4,9 M
organic sessions in 36 months
1. The starting point: plenty of shops, but not enough brand awareness
The brand didn’t have an awareness problem. With an extensive network of physical shops spread across several countries, anyone searching for the brand by name would find it. The problem was the other 74 per cent of unbranded search demand: the person typing ‘iPhone 15 Pro case’ without yet knowing who they’re going to buy it from.
This was the situation when we started, with dates and figures:
- Visibility of 15,5% across the 414 keywords monitored (Semrush, August 2023).
- Average position of 10,9 on mobile and 32,6 on desktop (Search Console). On desktop, the brand was on the third page.
- The official licences segment — Japanese characters, animated films, superheroes and football — had zero keywords in the Top 10. Zero. Despite having paid licences.
- Titles in a generic breadcrumb format, meta descriptions cloned using the same template, and no category pages with body text.
- The organic channel accounted for 34,7% of sessions (GA4, August–December 2023).
2. What we did: 61 interventions over three years
There’s no silver bullet in a project of this scale. There were six lines of work running in parallel and sustained over 36 months. I’ll summarise the ones that made the biggest difference.
How do you write a catalogue of 7.154 products without it sounding robotic?
This was the most ambitious part of the project and also the trickiest to explain. Let me explain 🙂
Between April and May 2026, we produced 7.154 product listings with unique copy in every field and 21.462 distinct FAQs. Not a single one was repeated.
The pipeline combined automated generation with a quality control process we imposed on ourselves: every piece of text had to run through ZeroGPT and come out with 0% AI detection. This was followed by a spell-checking run that corrected 65 error patterns across some 88.000 replacements in the 7.154 documents.
It’s clear that scale without quality control is just expensive noise. That’s why the ZeroGPT gate wasn’t just for show: it was a prerequisite for publication.
The rest of the work, in brief:
- On-page optimisation of 8 licensed and institutional collections, around 70 URLs, with post-implementation verification carried out one by one.
- Structured data built from scratch: a @graph block containing BreadcrumbList, CollectionPage and ItemList with complete listings. And it wasn’t just implemented: it was moved from offset 73.069 to offset 5.895, within a tag that closes at 12.298. If the block falls outside the tag, it doesn’t exist.
- Management of an indexing incident in July 2026: audit of 150 URLs, cross-checking against seven of the brand’s Search Console properties, five versions of the plan, three corrective deployments and 5 out of 5 acceptance tests passed.
- And in parallel: ongoing management of Google Ads with account diagnostics and campaign strategy, a monthly Meta Ads report, a report on discrepancies between GA4 tracking and actual Shopify orders, and analysis of friction in the product customiser using Microsoft Clarity.
3. The results
| Metric | Before | After | Source |
|---|---|---|---|
| Organic clicks (quarter) | 306.649 | 447.905 | GSC · measured |
| Average position · mobile | 10,9 | 5,7 | GSC · measured |
| Average position · desktop | 32,6 | 10,4 | GSC · measured |
| Keywords in the Top 10 | 107 | 268 (peak 362) | Semrush PT |
| Keywords ranked | 133 / 414 | 374 / 414 (90%) | Semrush PT |
| Overall visibility | 15,5% | 39,9% (peak 64,3%) | Semrush · est. |
| Licences · % of the segment in the Top 10 | 0% | 66% | Semrush PT |
| Samsung · % of the segment in the Top 10 | 3% | 53% | Semrush PT |
| Generic terms · % of the segment in the Top 10 | 26% | 82% | Semrush PT |
| Organic channel share | 34,7% (2023) | 48,7% (2026) | GA4 · measured |
| Non-branded search in the Top 10 | 74.290 visits/month | 166.830 per month | DataForSEO · est. |
| Equivalent value in Ads | €9.616 /month | €17.489 €/month | DataForSEO · est. |
Year-on-year comparison: Q2 2025 vs Q2 2026 for Search Console metrics; August 2023 vs July 2026 for ranking metrics. The equivalent value in Ads figures are calculated by applying current CTR and CPC curves to the observed positions: they are a reference of magnitude, not an invoice.
There is one piece of data that doesn’t fit in the table, and it’s the one we like best: 238 keywords that weren’t ranking at all in 2023 now have a ranking. They didn’t improve. They simply appeared.
In cumulative volume, the organic channel generated 4.919.471 sessions out of a total of 11.380.840 over 36 months. That’s 43,2 per cent. And we treat that figure as a floor, not a ceiling, because part of the period suffered from under-reporting of attribution.
4. What we learnt: content doesn’t prevent incidents, but it cushions their impact
In July 2026, the site suffered a serious indexing issue. Of 150 URLs audited, 117 — 78 per cent — were flagged as ‘Duplicate without user-selected canonical’. 65,9 per cent of clicks and 60,8 per cent of impressions were affected. Twelve of the sixteen brand hubs had gone offline.
Here’s where it gets interesting.
Whilst 78 per cent of the category tree was collapsing, two pages did exactly the opposite: /personalisation/ improved from position 5,4 to 3,1, and /apple/iphone-17-pro-max/ gained 37,6 per cent in clicks. What did those two have that the others didn’t? Original, substantial content, written specifically for that particular page.
The second lesson was about reporting, and we’ve incorporated it as an internal standard: never report the aggregate change in impressions without breaking it down into branded versus non-branded. In this project, the metric that distinguished between seasonality and a structural problem wasn’t impressions. It was position.
I’ve seen entire management committees focused on a drop in impressions that was simply down to the fact that people search less in August. I recommend applying this distinction even if you haven’t encountered any issues: half of those alerts will resolve themselves.
To sum up: what would I do differently tomorrow?
Essentially, what this project demonstrates is that a large catalogue doesn’t compete on the basis of its size, but on its readability. And that scale only works if it comes with quality control built in.
If I had to start again tomorrow, I’d do three things before my morning coffee. First, I’d assess the situation honestly: average position broken down by branded and unbranded searches, and by device, before changing a single line. Secondly, I’d tackle the segment with the greatest imbalance between investment and visibility — in this case, the official licences, with zero keywords in the Top 10 despite being paid for. And thirdly, and most importantly, I’d write the back covers before the shelves: each entry with its own text, even if there are seven thousand of them.
Remember, at the end of the day, it’s all about the librarian being able to read your books before recommending them 😉