Shipu Web dev & SEO Start a project

Oldham · Greater Manchester · Remote

I build the pages and tools that get local businesses found

Three years building and fixing sites for trades, salons and small businesses across Greater Manchester. WordPress and Elementor when the owner needs to edit it themselves. Technical SEO because a site that nobody finds is just an expensive brochure. And custom software when a job gets repetitive enough to be worth automating.

Service × area page system Hover a cell — or use the arrow keys Tap a cell

This is the structure I build for a trades client: every service, crossed with every town they cover. One template, one set of rules, 40 pages that each answer a real search.

Title Boiler Repair in Oldham | Gas Safe | Northgate Heating 54 / 60
H1 Boiler Repair in Oldham
Slug /boiler-repair-oldham/
Schema LocalBusiness · Service · FAQPage
Links ↑ /areas/oldham/ ↑ /boiler-repair/ → Chadderton, Royton, Failsworth

About

Most of my work starts with a phone call about something that stopped working

Sometimes it's a migration that went sideways. Sometimes a theme update broke the checkout. Usually it's simpler than that: Google has no idea which towns the business actually serves, so the phone stopped ringing.

I build in WordPress and Elementor because that's what a small business can still maintain six months after I hand it over. I do the technical SEO myself rather than passing it to someone else — audits, schema, internal linking, and the location pages that put a heating engineer in Chadderton in front of someone searching for one. When a task turns out to be the same job over and over, I write software for it instead of doing it again.

I look after a portfolio of live client sites, which means I'm also the person who gets the call when something breaks at eight in the evening. That shapes how I build: fewer moving parts, nothing clever that only I understand, and a clear path back if something goes wrong.

Based
Oldham, Greater Manchester
Experience
3+ years, hands-on
Sectors
Trades, beauty, local retail & services
Core stack
WordPress, Elementor, WooCommerce, Shopify
Also builds
Node.js services, Chrome extensions, WP plugins
Handles
DNS & host migrations, technical audits, schema
Availability
Open to project work

Services

Three things, and they feed each other

Development

Build it so they can run it

  • WordPress & Elementor

    Sites structured so the owner can add a service or change a price without ringing me first.

  • WooCommerce & Shopify

    Catalogues, payment gateways, shipping rules, tax — and the checkout edge cases that quietly lose orders.

  • Migrations & DNS

    Host moves, subdomain splits, SSL, and email records that survive the switch. Planned so the site never goes dark.

  • Troubleshooting

    White screens, plugin conflicts, failed updates, broken forms. Diagnosed properly rather than patched over.

SEO

Make the right people find it

  • Technical audits

    Crawl, index, speed and structure. You get a list of what's broken, in priority order, with what each fix is worth.

  • On-page & location pages

    Service and area pages that rank for the towns you actually cover, without forty near-identical pages Google ignores.

  • Schema markup

    LocalBusiness, Service, FAQ, Product and Review, written by hand and validated — not whatever the plugin guessed.

  • AI search visibility

    llms.txt, clean entity signals, and content structured so an assistant quotes your prices and service area correctly.

Tooling

Automate the repetitive part

  • Custom WordPress plugins

    Built for one job, no dashboard clutter, and tested against Elementor before it goes anywhere near a live site.

  • Lead & research tooling

    Chrome extensions and scrapers that turn an afternoon of copy-paste into a CSV you can actually work from.

  • API integrations

    Node.js services that connect the tools a business already pays for — including Anthropic-powered report generation.

  • Reusable page systems

    Template libraries with meta formulas, schema and linking rules baked in, so the next build starts at day three.

Selected work

Tools I built because the manual version wasn't worth doing twice

Each one started as a job I was already doing by hand.

Problem

Building a prospect list from Google Maps meant opening every listing one at a time and copying out the name, phone number, website and rating by hand. Roughly an afternoon per town, and the list was stale by the time it was finished.

Solution

An extension that reads the results panel as you scroll, pulls only the fields I actually use, flags listings with no website or one that returns an error — which is exactly who I want to talk to — and exports a clean, de-duplicated CSV. An afternoon's work now takes about a minute.

JavaScriptManifest V3DOM parsingCSV export

Problem

A cold email only gets a reply if it says something true and specific about that one business. Writing a genuine mini-audit for every prospect takes twenty minutes, so it doesn't scale past a handful a day.

Solution

An Express service that takes a URL, checks the things that decide local rankings — title tags, heading structure, schema, load speed, location signals, indexable pages — then uses the Anthropic API to turn those findings into a short report in plain English with the three fixes worth doing first. One shareable link per prospect, generated in seconds, and every claim in it traceable to something the crawler actually found.

Node.jsExpressAnthropic APILighthouseHTML & PDF output

Problem

Every internal linking plugin filters the_content. Elementor doesn't store page content there, so the links either never appear or the plugin writes into the builder data and mangles the layout on the next save. On a portfolio of Elementor sites, that's not a risk worth taking.

Solution

A plugin that injects links at render time, after Elementor has built the page, from a keyword-to-URL map with per-page limits, first-match-only rules, and a guard against a page linking to itself. The layout is never touched, the link rules are enforced consistently across the site, and the owner can edit the map from an admin screen without going near the code.

PHPWordPress hooksElementor render filtersCustom admin UI

Problem

A boiler cover company was collecting enquiries through a plain contact form, then phoning each person back to ask the four questions they needed to price the job. Two calls to quote one customer, and the ones who didn't pick up were lost.

Solution

A multi-step quote form that asks property type, boiler age, cover level and postcode, prices it live from a rules table the office controls, and books an engineer slot in the same flow. The customer sees a real number on screen; the office gets a complete job record instead of a name and a vague message.

PHPCustom post typesWP REST APIConditional pricing rules

Problem

Every trades client needs the same shape of site: services, areas covered, and a page for each service in each area. Rebuilding that from scratch each time meant re-deciding the same twenty questions and getting slightly different answers.

Solution

A reusable library — area hub, service page, and service-in-area page — with meta title and description formulas, LocalBusiness and Service schema, and internal linking rules that connect hub to spoke without turning the footer into a link farm. It's the system the grid at the top of this page is showing. A new client goes from empty install to a structured, indexable site in days rather than weeks.

WordPressElementor templatesJSON-LDMeta formulasLink rules

Contact

Tell me what's broken, or what you want built

I read and answer my own email. Usually same day, always within one working day.