WordPress and plumbing and heating firm

A trade site full of town pages, and what that does to the answers

Plumbing sites are built for local search, which means they collect a page per town and a page per service and a page per town and service combined. That is a defensible way to build a site and a hostile way to build a body of material, because every one of those pages says almost exactly what the others say. Add a rate card that exists only as a designed image and a sticky call bar pinned to the bottom of every screen, and you have three problems that belong to this trade and to no other on this platform.

Why this pairing is its own job

The WordPress install guide covers the tag, and the plumbing and heating firm guide covers what the assistant has to know. What follows is the part that belongs to neither.

  • Location pages are generated from one template with a town name swapped in, so the site contains many pages that differ by a word or two. A retrieval step choosing between near identical pages has almost nothing to choose on, and the coverage answer a customer gets can name the wrong town.
  • The rate card is very often a graphic. A firm that has gone to the trouble of publishing its call out fee usually publishes it as a designed price panel, which is an image, which is the one thing on the page that cannot be read.
  • Trade themes ship a call bar fixed to the bottom of the screen on a phone, because ringing is the conversion. The launcher wants the same corner of the same screen, and on the traffic that matters most, a person on a phone at night, the two collide.
  • Half the value here is arriving at an hour when the office is shut, and the other half is refusing correctly at that hour. A gas smell at midnight has to produce an emergency number in the first line, which makes the refusal wording part of the install rather than a setting to revisit.

What changes about the install here

<script src="https://cdn.askably.xyz/w.js" data-key="pk_live_YOUR_KEY" defer></script>

The tag is the same one on the WordPress guide. Everything below is about where it goes on a plumbing and heating firm site specifically.

Do not index every town page

Point the crawl at the pages that differ from each other: the rate card, the service plan terms, the coverage page, the boiler installation page, the certification page. Leave the town pages out unless a particular one genuinely says something the others do not, such as a different minimum charge for the far edge of the area.

The instinct is to index everything because more material sounds like better answers. It is the opposite here. Fifty pages that differ by a town name give a retrieval step fifty nearly equal candidates, and the one it picks is not chosen on anything meaningful.

Replace them with one coverage page that lists the towns and postcodes in plain text, including the ones you decline and the ones that carry a different rate. One accurate list answers the coverage question better than fifty pages built to rank for it.

Write the rate card out as text

If your prices live in a designed panel or a graphic, retype them. The call out fee, the first hour against the hours after it, the evening and weekend and holiday rates, and whether parts are on top.

It is the highest value material on a plumbing site and the most commonly unreadable, which is an unfortunate combination. It takes ten minutes and it changes what the assistant can do more than anything else you will index.

Check the phone bar and the launcher on an actual phone

Open the site on a phone, not a narrowed browser window, and look at the bottom right corner. A theme that pins a call button across the foot of the screen will sit under or over the launcher, and on a night time visit the call button is the one that has to win.

The fix is in the theme's own settings for that bar rather than in the widget: give the bar room, or move it, or accept that on this trade the call button is the primary action and position around it. Whatever you choose, choose it deliberately, because the visitor you are designing for is standing in a wet hallway.

Where the answerable material lives

Source material on a WordPress plumbing and heating firm site
The rate card, retyped as textCall out fee, first hour, subsequent hours, evening, weekend and holiday rates, and whether parts are extra. The question in every enquiry, and the one most trade sites answer with a contact form.
Your written definition of an emergencyYour own, not a general one. An uncontrollable leak, no heating for a vulnerable customer in winter, a suspected gas smell, a burst pipe. Publishing the definition lets a message be sorted in one reply instead of a conversation.
One coverage page, towns and postcodes in plain textIncluding the outer edge that carries a different minimum charge, and the areas you do not travel to. This replaces the generated location pages as material, whatever you keep them for in search.
Service plan terms, exclusions firstWhat a plan covers, what it excludes, the response time it promises and how it renews. Plans are sold on the exclusions, so index those rather than the brochure page that sells the plan.

The first thing to get right

Do this first
Put the emergency wording and the gas safety instruction into the refusal message itself, before you index anything at all.

The assistant will meet a gas smell before it meets a bathroom quote, because that is what arrives at midnight. A refusal that gets composed from material is a refusal that varies, and this is the one message on a heating site that cannot be allowed to vary.

The failure that belongs to this combination

A confident answer about a town you stopped covering

The failure here starts as a compliment to the site. Somebody types the name of a town and asks whether you cover it. There is a page for that town, so the assistant answers yes, with a citation, in your voice.

The page exists because it was generated two years ago from a list of towns within a radius, not because anybody decided to work there. Coverage in this trade changes with staffing and with fuel, and the generated pages never change with it, because nobody edits fifty pages to remove a town.

That is the argument for taking the location pages out of the material and keeping one coverage list that a person maintains. The pages can carry on doing whatever they do in search results. The answers should come from the one list somebody is willing to keep true, and the assistant should be pointed at that list alone.

Before you go live

  • The origin the page is served from has to be on the allowlist for that assistant, or nothing renders and the browser console says which origin was refused. An apex domain and its www are two different origins to a browser, so list both, along with any staging or preview host you want it to work on.
  • Open the site as a visitor would, on the pages a plumbing and heating firm visitor actually lands on, and ask it something only your own material could answer. A widget that renders is not the same as a widget that has read anything.

Questions

We have a page for every town. Should all of them be indexed?
No, and indexing them makes the answers worse. Pages that differ by a town name give a retrieval step nothing to choose between, and the coverage answer becomes close to arbitrary. Keep one plain coverage list as the material and leave the rest out.
Can it tell a customer an engineer will come this afternoon?
No. It has no view of your diary and cannot promise a slot. The useful version is that it confirms the area, states the call out charge, and takes a phone number, so whoever rings back is speaking to somebody who already knows the price.
The launcher covers our call button on a phone. What do we do?
Adjust the call bar in the theme rather than the widget, and decide which one owns that corner. On a heating site at night the call button should win, so give it room and let the launcher sit clear of it.

Keep reading

Try it on your own material

Upload a document or point it at your site, paste one line of HTML, then ask it something only your business could answer.