Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

Marchetti Ricambi · Officina SEOWorkshop manual · Ecommerce SEO18 months · Ed. 1

Marchetti Ricambi — Tractor & farm-machinery parts e-shop · Bologna

How an Emilian parts shop sold tractor spares across the EU from one catalogue

Modelled outcome, month 18

+€540k

organic revenue

One Italian catalogue, rebuilt so every spare part says which tractor it fits, in six languages, to every marketplace Google runs.

1MR-2210-HP€142k / yr2MR-3305-CK · €118k3MR-5120-PT€96k / yr4MR-1180-IP€91k / yr5MR-1402-WP€88k / yr6MR-0907-FK€84k / yr7MR-6631-FA · €77k8MR-7004-SW€64k / yr
Fig. 1 · Tractor, exploded view · 8 of 11,400 SKUs shown

Parts list · select a part

Item 1 · OEM 5179714

Hydraulic lift pump

Fits: Fiat 640 · 780 · 880, Someca 640

€142k of €760k modelled organic revenue a year · 19%

01

Fault description

An Italian-only store with no compatibility data, while farmers abroad searched by tractor model and part code.

Marchetti Ricambi had stocked spares for Fiat, Same and Landini tractors in a Bologna warehouse for three decades. Online, the shop spoke only Italian and listed parts by their Italian names. Anyone who searched for an OEM code or a tractor model found nothing.

The buyers were out there. A farmer in Lower Bavaria keeping a 1972 Fiat 640 running doesn't search "pompa idraulica". He types "Hydraulikpumpe Fiat 640" or just the number cast into the old part. Across the EU, that demand went to marketplaces and dealers who listed the code.

Specifications at intake
Catalogue
11,400 SKUs
Fitment data
0 SKUs
Languages
1 (it-IT)
Merchant Center
6,900 disapproved
Organic revenue
€220k / yr
Region
Bologna, Italy
02

Inspection report

A fault-finding chart, laid out the way a workshop manual would print it. Six faults turned up in the crawl, the feed and the catalogue. Each one kept the shop out of results outside Italy.

01 Catalogue

Symptom: 11,400 SKUs, 0 with fitment data

Cause: Compatibility lived in a supplier PDF, not on the product page

Remedy: Model × part fitment table, 38k rows, imported per SKU

02 Search demand

Symptom: Searches abroad named model + OEM code

Cause: Titles read "Pompa idraulica" with no model or code

Remedy: Title formula: part · OEM code · fits models

03 International

Symptom: 1 language, no hreflang, IT-only shipping

Cause: Single storefront; Google served it to nobody outside Italy

Remedy: Five subfolders with hreflang clusters and x-default

04 Feeds

Symptom: Merchant Center: 6,900 items disapproved

Cause: Missing GTIN/MPN, price mismatch, no shipping by country

Remedy: Rule-based feed with MPN = OEM code, per-country shipping

05 Structured data

Symptom: No Product or Offer markup

Cause: Theme rendered price in an image badge

Remedy: Product, Offer, isAccessoryOrSparePartFor schema

06 Crawl

Symptom: 212k faceted URLs indexed

Cause: Filter combinations by colour and brand left open

Remedy: Facet allowlist; noindex the rest; model hubs instead

03

Assembly procedure

The work ran on our Commerce SEO plan. Four tactics, fitted in order, because each one depends on the one before.

  1. Step 1 · Compatibility schema

    Fit every part to every tractor

    We turned the supplier fitment PDFs into a structured table: 38,000 model-to-part rows. Each product page now prints a "Fits" table and carries Product markup with isAccessoryOrSparePartFor, and each tractor model got a hub page listing every part that fits it.

  2. Step 2 · Product feeds

    Write titles the way farmers search

    A feed rule rebuilds every title as part, OEM code, then models: "Hydraulic lift pump 5179714 for Fiat 640, 780, 880". MPN carries the OEM code, so part-code searches match exactly, and translated titles go out per market.

  3. Step 3 · Hreflang

    One catalogue, six storefronts

    We built subfolders for de-DE, de-AT, fr-FR, es-ES and pl-PL from the same SKUs, with reciprocal hreflang, prices in local currency where needed and an x-default for everywhere else. Model names stay as they are; part names and copy are translated.

  4. Step 4 · Merchant Center

    Get the free listings approved

    We fixed 6,900 disapprovals: MPN and brand on every item, shipping and returns per country, and prices matching the page. Then the free listings and the Shopping tab started showing parts to buyers in each new market.

Before: Shopping result, modelled

Pompa idraulica sollevatore

marchettiricambi.it · IT only

€ 389,00

After: Shopping result, modelled

Hydraulikpumpe 5179714 für Fiat 640, 780, 880

marchettiricambi.it/de-de · Free listing

Passend für: Fiat 640 · 780 · 880, Someca 640

389,00 € · Versand nach DE 3–5 Tage

04

Service schedule

Workstream123456789101112131415161718
Audit & fitment dataactiveactiveactiveactive
Compatibility schemaactiveactiveactiveactiveactiveactive
Feed rules & titlesactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactive
Hreflang storefrontsactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactive
Merchant Centeractiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactive
Model hub pagesactiveactiveactiveactiveactiveactiveactiveactiveactiveactiveactive
  1. M1–2Crawl, catalogue and feed audit. Fitment PDFs parsed into a draft table.
  2. M3–4Disapprovals cleared: 6,900 to 410. Facet allowlist ships; 212k thin URLs leave the index.
  3. M5German storefront live with hreflang. First orders from Bavaria within three weeks.
  4. M6–8Compatibility schema on all 11,400 SKUs. 1,240 tractor-model hubs published.
  5. M7–9Austria and France go live. Free-listing clicks pass 8,000 a month.
  6. M10–12Spain launches. Title formula A/B-tested by feed rule; the OEM-code-first variant wins.
  7. M13–15Poland goes live: market six. Revenue run-rate passes €590k.
  8. M16–18Seasonal feeds tuned to harvest and hay months. Run-rate reaches €760k.
05

Performance figures

€760k
Organic revenue / year€220k → €760k
6
Markets live1 → 6
21k
Free-listing clicks / month2k → 21k

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Fig. 2 · Organic revenue run-rate and markets live
€0k€200k€400k€600k€800kITDEATFRESPLM0M3M6M9M12M15M18€760k / yr21k clicks / mo (dashed, right scale)
  • it-IT Italy · M0
  • de-DE Germany · M5
  • de-AT Austria · M7
  • fr-FR France · M9
  • es-ES Spain · M12
  • pl-PL Poland · M15

Table 1 · Tracked queries

QueryMktM0M18
pompa idraulica fiat 640IT#14#1
hydraulikpumpe fiat 640DEnot ranking#2
5179714DEnot ranking#1
kupplungssatz fiat 480ATnot ranking#3
pompe à eau fiat 540FRnot ranking#2
eje toma de fuerza same explorerESnot ranking#4
pompa wtryskowa fiat 640PLnot ranking#3
ricambi trattori fiatIT#23#5

End of manual · Commerce SEO

Get a plan like this

Got a catalogue that only speaks one language? We'll map what fits what, fix the feed, and take it to the markets where people are already searching.

← Back to all case studies