Case Study · Website Relaunch & SEO
Website Relaunch for a Test Equipment Manufacturer
A fixed-width, German-only website from 2007, rebuilt: in three languages, fast and protected against spam, with every old URL 301-redirected.
- 1 → 3
- Languages: German, plus English and French
- 0 / 100
- Lighthouse performance on mobile, 100 on desktop
- 13.95 €
- running costs per year, all included: three domains, hosting, form and email forwarding
The challenge
Stadler Prüfpumpen from Germany manufactures vacuum test pumps. Shippers, plant gate staff and tanker hauliers use them to check in under 30 seconds whether the bottom valve and outlet valve of a tank truck are tight, by hand and without electricity or compressed air. Most customers come from the chemical industry, including customers abroad.
The website dated from 2007 and sat on an advertising agency's server: a home page plus five PHP pages, a table layout with a fixed width of 806 px, no viewport. On phones, visitors only saw the shrunken desktop page. On top of that: German only, two product pages with the same text, and on the home page two sentences next to a pump photo measuring 76 × 221 px. Page titles and meta data had not changed since 2007, and by now the description showed a broken character instead of “ü”.
The brief: a new website based on a design mock-up, several variants to choose from, in German, English and French. One requirement only became apparent after the move: the agency server did not just serve the website, it also received the email. That included an info@ address the client itself did not use, but which key accounts had been writing to for years. After the move the server looked redundant, and cancelling it would have shut down exactly this address.
The implementation
- Four drafts in one afternoon. One variant close to the mock-up, plus “Night Blue”, “Technical” in the style of an engineering drawing sheet and “Dynamic” with diagonals. The client chose the next day, and three days after the first inquiry the new site was live on the domain.
- Static instead of WordPress. Plain HTML, CSS and JavaScript, without a CMS, database, login or plugins. Scans for WordPress logins and configuration files come up empty, and there are no plugin updates. Plus HTTPS with TLS 1.3, security headers from HSTS to Content Security Policy and a
security.txtper RFC 9116. The site is hosted as a Cloudflare Worker on the free plan, and every push to GitHub rebuilds it. - Three languages as separate page trees. German, English and French with translated URLs and
hreflangon every page, instead of a script that translates at runtime. Search engines see every language version as a page of its own, and everything works without JavaScript too. The language switcher leads to the same page in the other language and keeps the reading position. - Inquiry form with its own backend. Static hosting cannot accept forms. A second, small Cloudflare Worker checks every inquiry again on the server and delivers it by email to the client's existing mailbox, and “Reply” goes straight to the sender. No third party, no database. For customers abroad: 243 countries and regions with dialling codes, country names in the page language and a free-form postcode field, because many countries use letters (SW1A 1AA, 1012 AB).
- Spam protection without image puzzles. Cloudflare Turnstile instead of a classic captcha, loaded only when the form is opened, plus an invisible honeypot field, an origin check and length limits. Anyone who bypasses the form and sends straight to the endpoint gets nowhere without valid input and a valid captcha token. Known bots are stopped by Cloudflare's bot protection before they even reach the site.
- Every old URL redirected. The list of old URLs came from the web archive: five PHP pages, each redirecting with a 301 to the matching new page. Two more domains forward to the main domain with path and parameters,
http://tohttps://with a 301. - Email freed from the agency server. On the same day the client reported the info@ address: analysed the old server's nameservers, MX records and mail handling, transferred the second domain away from the agency and set up Cloudflare Email Routing on both old domains, with one rule for info@ and a catch-all address for everything else. Mail is delivered to the existing mailbox, and the agency server is no longer needed for it.
- Privacy by leaving things out. No external fonts, no analytics, no tracking, no embedded map: the address opens Google Maps only as a link. The product video loads only on click, via youtube-nocookie.com, and until then the page shows a self-hosted preview image. On page load, requests go only to the site's own domain.
- Product photos cut out, every image licence-checked. Some of the client's photos were tiny (140 × 250 px), and one was a photographed brochure. A Python script cuts out the pumps with the AI model BiRefNet, matches the colours of stainless steel and brass, adds a ground shadow and writes WebP in two sizes: a 346 KB JPEG becomes 34 KB. Background images only with a verified licence, icons drawn in-house or under an open licence, the logo retraced as SVG.
- SEO from the ground up. A title and description for every page, written from the product copy,
canonical,hreflangwithx-default, a sitemap with all language versions, structured data (Organization, WebSite, BreadcrumbList), preview images for shared links and a real 404 page in three languages. For AI search there is anllms.txt, and AI crawlers are not blocked.
Engineering highlights & quality assurance
A static site has little that can break. What remains is checked by the build before every deploy, not by a visitor:
- No deploy without a green check. A check script with 1,091 lines verifies the language trees,
hreflang, internal links, the sitemap includinglastmod, JSON-LD, CSP hashes, header and redirect files and the expiry date of thesecurity.txt. If a check fails, the old version stays online. The same script runs as a GitHub check. - Only approved files go online. The build copies only files from an allowlist into the output folder and aborts as soon as Git, Python or Markdown files end up there. Without this configuration, the deploy tool publishes the entire project folder, including drafts, scripts and Git data.
- Equal-sized boxes in every language. French often runs considerably longer than German or English. So that the menu and boxes do not jump when the language changes, every text element carries the other two translations as invisible placeholders, and the box sizes itself to the longest. Measured: 0 px height difference in Chromium across 201 window widths, in Firefox and WebKit across 101 each.
- 25 automated tests for the form. Phone validation, Turnstile, postcodes with letters. Whether the website and the form know the same dialling codes and thank-you pages is checked by the build as well.
- A sitemap without fake freshness.
lastmodonly changes when a page's title, description or content really changes (hash comparison), not on every build. - Header flicker fixed. Just below the top of the page, the header switched between large and small about 30 times per second. The cause was the browser's scroll anchoring, fixed with a threshold band (hysteresis).
The result
- Three languages instead of one, 21 pages instead of six. Three product pages per language instead of two pages with the same text, plus legal pages, a thank-you page and a dedicated 404 page.
- Every old URL reaches its target. 5 out of 5 old pages 301-redirected, three domains merged into one, checked live on 9 October 2026.
- The info@ address used by key accounts keeps working, now via Cloudflare Email Routing instead of the agency's server.
- €13.95 a year in running costs. Only the three domains are paid for. Website, form and email forwarding run on Cloudflare's free plan.
- Three days to the new site on the domain. First draft on 21 September, new site live on 24 September, opened to search engines on 26 September 2026.
- Lighthouse 98 on mobile, 100 on desktop. SEO 100 on all measured pages, no layout shift (CLS 0), largest element after 2.3 s on mobile and 0.6 s on desktop (home page, measured on 9 October 2026). Best Practices is at 81, and the deduction comes entirely from Cloudflare's bot protection script, not from the site's own code.
Hire me for this
Website Relaunch
What went into this project, at a fixed price: an inventory of the old site, redirects for every old URL and the email move, plus SEO, spam protection, languages and hosting as building blocks. For your website too, if nobody has touched it in years.
More projects
AWS Cost Optimization
65% AWS cost reduction ($3,850 → $1,330 / month) via safe legacy decommissioning, zero downtime.
Legacy-DB Reverse Engineering & Migration
1.47 million parts liberated from a 1.2 GB password-protected manufacturer database and migrated into the client's new system, zero rule violations, fully auditable.
Book Lister AI
Desktop app that scans used books in under 30 seconds, extracts data via Gemini vision, live-prices, and lists on eBay, +400 % throughput.