The starting point
Fara Service repairs and restores car headlights: lenses, housings, complete units. Demand here is extremely specific — people do not search for "headlight repair", they search for "Skoda Octavia A5 headlight lens". There are hundreds of such queries, each one small, and together they are the market.
The site already had 380 pages for those queries — 51 brands, across two language versions. The problem was that the pages existed physically but not for search: empty, without text, carrying technical errors. Between June and August 2025 exactly one of them received impressions in Google — and not a single click.
The site was selling the service in general, while demand was for the service on a specific car. Between the two sat 380 empty pages — already created, already indexed, and useless.
The hard part of this project
Writing 380 different texts — not the same text 380 times with a model name swapped in. Search engines tell those apart, and so do customers: someone looking for a headlight for their Octavia should get a page about the Octavia, not a template.
The second difficulty was the two language versions. Every page exists in a Russian and a Ukrainian variant, and both had to stand on their own: their own keywords, their own text, and correct hreflang pairing between them.
Main workstreams
Keywords per page, not per site
16,553 keywords: 7,938 in Russian and 8,615 in Ukrainian, with volumes pulled from Google Ads Keyword Planner for Ukraine. We mapped them with our own matcher — it handles Cyrillic, body codes, and the way people actually type: “golf 4”, “passat b5”, “bmw e39”. Without that, half the demand never reaches its page.
16,553 keywords862 texts, each written for its own model
102 brand texts and 760 model texts, in two languages. Similarity between texts is 6–10%, so this is not one piece of boilerplate with names swapped in. We validated it mechanically: all 924 internal links return 200, languages are not mixed, no foreign models appear in the texts, and the FAQ is marked up in JSON-LD.
862 textsTechnical work: removing what kept pages from ranking
Two audits — 2,620 pages with our own crawler and 4,902 URLs with a second one, plus manual checks of the server, robots, sitemaps, mirrors, DNS and SSL. The result was a 21-task specification for the developer, with ready code for Apache and VamShop and a verification command for every task.
21 tasks speccedCleared the indexing blockers
Four pages returned HTTP 500, category pages had empty H1s, the canonical on the Ukrainian version pointed at the Russian one, and categories linked to dead URLs. These are not “improvements” — they are the reasons the pages could not enter the index at all.
Blockers clearedAnd the rest
- UX audit — 17 findings with evidence: broken search, empty categories, a Ukrainian checkout on the Russian version of the site.
- Audit of 8 competitors: keywords, links, visibility, presence in AI answers.
- 14 external publications in Ukrainian with built-in internal linking.
- Contacts page rebuilt for local search: AutoRepair markup for Kyiv and Kharkiv with real addresses, coordinates and opening hours.
What changed, in numbers
We compare like with like — summer against summer, so that seasonality cannot pose as a result of the work.
August 2026 is the best month across all 16 months of available data: 671 clicks against 349 in August 2025.
Impressions rise before clicks do — pages first become visible, and only then people start clicking through.
| June–August | 2025 | 2026 | Change |
|---|---|---|---|
| Search clicks | 869 | 1,692 | +95% |
| Impressions | 57,772 | 95,961 | +66% |
| Pages with impressions | 764 | 2,277 | ×3 |
| CTR | 1.50% | 1.76% | +0.26 pp |
The model pages are the point
These are the 380 pages the whole project was built around. Counted separately, across both language versions:
Today the most visited page on the site is not the homepage. It is the Volkswagen Passat NMS page: 94 clicks over the summer against 76 for the homepage. A year ago that page did not appear in search at all.
Rankings
Tracked separately in SE Ranking. One caveat matters here: of the 135 queries in the tracker, 109 were added only on 28 August, so they have a starting point but no trend yet. We therefore compare only the 26 queries with a full history:
- Average position 41.3 → 25.9 between 29 June and 28 August 2026.
- Queries outside the top 100: 8 → 3.
- Across the full set on 28 August: 59 queries in the top 10, 115 of 135 in the top 20.
What is still missing
A 1.76% CTR is low for these positions. The site appears in search often, but gets clicked less than it should: the snippets are underperforming, people see the result and scroll past.
The next phase is exactly that: rewrite the service pages with prices, warranty and before/after photos, rework titles and descriptions on pages that collect impressions without clicks, and push up the queries sitting in positions 11–30, where one step up yields the most traffic.
And honestly about what we do not measure: this case contains no lead or sales data. In the client's analytics, form submission is not configured as a key event, so we cannot yet connect search traffic to revenue — and we are not pretending otherwise.
Where the numbers come from
Data sources
- Clicks, impressions, CTR, pages. Google Search Console, property sc-domain:faraservice.com.ua. Data covers 9 May 2025 to 19 September 2026. The first and last months in the charts are partial and shown in a lighter shade.
- Model pages. Same source, filtered to a list of 380 model page URLs across both language versions.
- Rankings. SE Ranking, daily tracking since 20 July 2026. Trend figures cover only the 26 queries with a full history for 29 June – 28 August 2026.
- Keyword volumes. Google Ads Keyword Planner, Ukraine, Russian and Ukrainian.
- Summer-over-summer comparisons are June–August 2026 against June–August 2025.
Similar problems
A catalogue with hundreds of near-identical pages is a common story. Our other work is collected in the portfolio. If this sounds like your site, the concrete next step is an audit and a breakdown of the growth points.