Illustrative case study

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

SEO case studyB/L No. KL-10M-2026Freight forwarder · Ruse

Kamenov Logistics

How a Danube freight forwarder rebuilt a 2011 site into a lead machine in five languages

+139%RFQs from organic · 10 months

  • BG
  • EN
  • RO
  • DE
  • TR
+139%RFQ · ORGANICKMNU 20HREFLANGSCHEMACWVDUNAV · DANUBE · RKM 495 · RUSE
Consignee
Kamenov Logistics
Port
Ruse, Bulgaria
Industry
Industry, Energy & Mobility
Plan
Signal
Voyage
10 months

01Cargo as received

A 2011 site carrying 2026 freight

A decade-old site with broken language versions, thousands of crawl errors and no way to request a quote on mobile.

Kamenov books barge, road and container freight out of the Port of Ruse, across the Danube to Giurgiu and onward to Constanța, Vienna and Istanbul. Its buyers search in five languages. Its website answered in one, and badly.

Fourteen years of plugins had left language folders pointing at each other, an index five times larger than the business, and a quote form that a logistics manager on a phone at a loading bay simply could not submit.

Inspection report · month 17 findings · 3 critical
HoldSeverityFindingQty
CrawlCritical2,140 crawl errors: 1,312 hard 404s from ?page_id= URLs, 486 soft 404s, 342 redirect chains2,140
HreflangCriticalNo hreflang; DE and RO copies canonicalised to the Bulgarian page, so they never ranked0 / 5
MobileCriticalRFQ form in a fixed 960 px table; impossible to submit on a phone11 fields
VitalsHighMobile LCP 6.2 s from a 2.4 MB hero JPEG; CLS 0.31; 4.8 MB page weight6.2 s
SchemaHighNo structured data; the port address existed only as text inside a footer image0 types
ContentMedium14 freight lanes squeezed onto one 'Services' page; customs FAQs locked in PDFs1 page
IndexMedium1,180 URLs indexed for a business that needs about 200; duplicate print views1,180

02Stowage plan

Four tactics, eight containers, one quay

The engagement ran on our Signal technical SEO plan. Every fix was loaded in order, so nothing heavy sat on something unfinished.

  1. BAY 01

    Site rebuild

    Replace the 2011 CMS with nine static-rendered templates and one content model shared by every language, then move 1,180 legacy URLs across with a single-hop 301 map.

  2. BAY 02

    Hreflang

    Generate reciprocal hreflang for Bulgarian, English, Romanian, German and Turkish from the content model, with x-default and native-language slugs, so each market sees its own page.

  3. BAY 03

    Schema markup

    Mark up the business, its quay address and each freight lane with Organization, LocalBusiness, Service and FAQPage, named identically across languages.

  4. BAY 04

    Core Web Vitals

    Set a 2.0 s mobile LCP budget per template, ship AVIF heroes and system fonts, defer third-party scripts, and rebuild the quote form for thumbs.

Quay 3 · Port of Ruse · Select a container to read its manifest

Manifest · fix 01 / 8Site rebuild

Retire the 2011 CMS

Found on inspection
1,180 indexed URLs on a 2011 PHP CMS, ?page_id= parameters, no templates shared between languages.
Loaded
Static-rendered rebuild: 214 pages from 9 templates, one content model for all five languages.
Delivered
Index trimmed to pages that earn their place; every template measured before launch.

03Voyage log

10 months, upstream

  1. M01

    Audit

    Full crawl, log-file sample, field CWV data and a form test on six phones.

    18 RFQ2,140 err6.2 s

  2. M02

    Manifest

    Information architecture for 14 lanes; the 1,180-row redirect map drafted and signed off.

    17 RFQ1,980 err6.2 s

  3. M03

    Build

    Nine templates built against a 2.0 s LCP budget; quote form prototyped and tested.

    19 RFQ1,610 err6.0 s

  4. M04

    Launch

    Bulgarian and English go live with redirects. Expected dip while Google re-crawls.

    16 RFQ420 err2.6 s

  5. M05

    Romanian · German

    Two more markets launched with reciprocal hreflang validated in Search Console.

    22 RFQ210 err2.4 s

  6. M06

    Turkish

    Fifth language live; x-default set; leftover machine-translated pages removed.

    26 RFQ140 err2.3 s

  7. M07

    Schema

    Organization, LocalBusiness, Service and FAQ markup shipped across all languages.

    30 RFQ90 err2.1 s

  8. M08

    Vitals pass

    Third-party chat deferred, image pipeline tuned; INP held under 200 ms.

    34 RFQ62 err2.0 s

  9. M09

    Lane pages

    Route pages expanded with transit times and customs notes per market.

    39 RFQ44 err1.9 s

  10. M10

    Handover

    Monitoring, redirect log and a content playbook handed to the in-house team.

    43 RFQ36 err1.9 s

04Delivered

Cargo on arrival

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

  • RFQs from organic / month

    43

    from 18 · +139%

  • Crawl errors

    36

    from 2,140 · −98%

  • Mobile LCP

    1.9s

    from 6.2s · −69%

Organic RFQs per month (modelled)

Month 10: 43 RFQsCrawl errors 36Mobile LCP 1.9 s

Rankings manifest · month 1 → month 10

QueryLangBeforeAfterVol/mo
спедиция РусеBG142320
контейнерен превоз РусеBG91140
freight forwarder BulgariaEN386590
Danube barge freightEN100+4210
Ruse port customs clearanceEN27390
casă de expediții GiurgiuRO100+3170
Spedition BulgarienDE468480
Bulgaristan nakliye firmasıTR629260

Next sailing

Get a plan like this

A Signal engagement starts with the same inspection: crawl, languages, vitals and the path to your quote form.

← All case studies