Case study
A website for a forklift rental company
MMHT, based near Konin and Koło in central Poland, rents, services and sells forklifts and pallet trucks. The company got a new website built around long-term rental and a phone call, with an enquiry form that doesn't expect anyone to know a machine's specs.
- Client
- MMHT, mmht.pl
- Role
- Content strategy, design, build, testing and deployment preparation
- Type
- Service website with an enquiry form
- Stack
- Astro, TypeScript, CSS, Vercel, Playwright
- Status
- Ready, awaiting launch

The problem
MMHT started out trading machines. Trading is getting less profitable, so the business is moving to rental. Its best customer is a small or mid-sized manufacturer or warehouse that wants a truck for months and doesn’t want to think about servicing or inspections.
The old site read more like a sales catalogue. Visiting it over https:// triggered a full-screen browser warning, because the server presented the hosting provider’s certificate instead of one for mmht.pl. There was no robots.txt and no sitemap, four versions of the address served the same content, and most pages shared the same title. On mobile, PageSpeed Insights gave it 69 for performance, with the largest element taking 11 seconds to load.

The second problem sat with the customer. Someone renting a forklift for the first time usually doesn’t know the names of the machines or their specs. Force them to choose and they guess, often wrongly. The owner answers the phone in a minute. Written enquiries take longer.
The solution
The site was rebuilt from scratch and leads with rental. Sales and servicing have their own pages.
- The first screen says what the customer gets: a truck that works, with servicing, inspections and certification included in the rental. Next to it, the company’s edge: the technician turns up with the parts, not just to take a look.
- Choose by task. Five truck types described by what they do: moving pallets, putting them on racks, picking orders. A sixth tile leads to a guide for people who don’t know what to pick.
- How rental works. Three steps: a conversation about the job, agreeing terms, servicing handled by MMHT.
- Contact on a red band at the end of every page, with the same number and button.
There are no invented numbers or promises. The fleet of “over 100 trucks” is there because the owner confirmed it. Linde and Still are named as equipment the company rents out, with a note that MMHT isn’t an official dealer for either. Where photos of the company’s own machines and a price list are still missing, the code holds marked gaps, not stock images.

The truck guide answers the owner’s remark that people have no idea what’s even out there. Each type has its own SVG icon drawn from reference photos, a jargon-free description and examples of the work it does. The same names come back in the form’s first question, so anyone who has read the guide recognises them straight away.
Phone first, a form for people who won’t call
The number +48 600 815 876 is the largest text in the header, and the header stays at the top of the screen while scrolling. On a phone, the number is visible together with the headline and the button before anyone scrolls.

The form is called “Get a quote” and says right away that MMHT will call back to agree details and price. It never shows a price or a range. The owner doesn’t want automatic quotes, and specs from the customer are only a starting point for the conversation.

One question per screen. A progress bar shows how much is left, so the form never feels endless.
The questions depend on the truck. A counterbalance forklift gets questions about capacity and lift height. A pallet truck asks about the control type and fork size. An order picker first asks whether picking happens at ground level or at height, and only then about fork length or picking height. Choosing “other” lets the customer describe the need in their own words. Every path ends the same way: rental period, location and phone number.
“I don’t know” on every technical question. It’s cheaper to handle than a wrong answer pretending to be a right one.
Phone required, email optional. The reverse of the usual, because that’s how the company works.
Submission is switched off for now, on purpose. The form can be completed, but it sends and stores nothing, and the server endpoint refuses every request. A notice above the questions says so, next to the phone number. The form goes live once the data processing documents and abuse protection are in place.
Coverage shown as what’s confirmed
Forklift rental is local, because transport costs money. Customers want to know whether the company will reach them.

The map is a custom SVG drawing with the towns’ real coordinates and the base in Genowefa. It shows the 35 towns the owner confirmed, with no drawn radius and no promised delivery time, because transport is arranged for each rental. It doesn’t load Google Maps, so it doesn’t slow the page down. Google Maps appears only on the contact page.
Every town on the list has its own page. They aren’t a template with the name swapped: each one carries a different practical tip, such as aisle width for racking work, driving into a cold store, or running a truck across several shifts.
How it’s built
The site is static, built with Astro, strict TypeScript and plain CSS, with no React and no client-side framework. The project began as a clone of the old site in Next.js, with the preview password hard-coded in the source. We moved it to Astro, removed the clone and the password, and the preview is now protected by Vercel Deployment Protection.
Every page has its own title, description and canonical URL. Schema.org structured data describes the company as a local business with its address, tax number, opening hours and served towns, and the service pages as services. The sitemap and robots.txt are generated at build time. Preview deployments are always kept out of search indexes, even if indexing is switched on. Redirects collapse the www address into one version, and old page addresses lead to their new equivalents.
Google Analytics and Microsoft Clarity load only after consent, and the decline button is as visible as the accept button. Until the legal documents are approved, analytics stays off in the configuration.
The colours come from the logo: red, graphite and light backgrounds. A darker red for text keeps the contrast WCAG requires. Playwright tests go through every page in Chromium, WebKit and phone emulation. They check the visible phone number, metadata, horizontal scrolling, the form paths, and that the form neither sends nor stores anything. axe-core found no WCAG 2.1 AA violations on the pages checked.
In a Lighthouse run on the local preview with the mobile profile, the home page scored 100 for performance, accessibility and best practices, and transferred about 25 KB. The old home page weighed 1.7 MB.
What this changes
A customer who doesn’t know which truck to rent doesn’t need to. They can read what each type is for, call the number that’s on every screen, or step through a few questions and answer “I don’t know” to any spec.
The owner gets the kind of conversation that works best for the business, instead of enquiries with specs copied from a manufacturer’s configurator. The site talks about rental, not about a catalogue the company is winding down.
Once the domain is switched, mmht.pl will open without a certificate warning, on a single address, with content Google can index.