Josh Morley WordPress, SEO and paid search

Skill · Hosting and infrastructure

Hosting work I have been hired to do

I am a Pressable Partner and I have moved, maintained and rescued WordPress sites across eight different hosting platforms. Migrations, domain cutovers, caching layers that will not clear, performance problems nobody can reproduce, and servers somebody set up years ago and then left.

The reason clients call me for this specifically is that I verify. A migration is not finished when the files are copied. It is finished when every URL has been requested and checked, the canonicals point where they should, and the old server is proven to be out of the loop.

8
Managed WordPress and VPS platforms I work on regularly
80+
Subsites on the largest multisite network I run
502
URLs individually crawled to verify one migration
10
Droplets in a VPS fleet I maintain

What I am usually asked for

  • Host migrations, including ones the previous developer abandoned halfway
  • Domain cutovers with DNS, TLS and CDN handled as one job rather than three
  • Post-migration audits: finding what quietly broke that nobody has noticed yet
  • Staging to production workflows that do not leak the staging hostname
  • Performance work: slow admin, timeouts, PHP worker and thread exhaustion
  • Caching architecture across host, plugin, CDN and edge, and getting it to actually purge
  • Multisite network setup, subsite provisioning and per-subsite domain cutovers
  • Server-level work on VPS: web server config, SSH, cron, logs, backups

The cutover checklist I will not skip

  • Is the search engine visibility flag back on? A staging site carries a setting that forces site-wide noindex and removes canonicals, and it survives the DNS change
  • Is the Search Console verification tag still in the new build? If not, access expires about two weeks later
  • Is the TLS certificate issued for the real domain, or is the platform still serving its own?
  • Is the old server definitively out of service? If its cron is still running you can double-charge subscriptions
  • Do redirects point at the live domain, or at the temporary platform hostname?
  • Has the edge cache been purged, and does a cache-busted request to the live page prove it?

Past jobs

Four hosting jobs and what happened

Client names withheld.

Migration audit after a move between managed hosts

Post-migration audit
Brief
A site built by a previous agency had been moved to new managed hosting. It worked, apparently. The client wanted it checked properly.
What I found and fixed
Sixteen redirect rules were pointing at the platform's temporary hostname. They appeared to work, because that hostname redirects back to the live domain, but every hit was a three-hop chain that left the canonical domain, exposed the staging host to visitors and crawlers, and would have broken outright if the platform ever dropped the alias. Rewrote all of them, then purged each changed URL individually after discovering that the bulk cache purge command hangs on that host.
Result
Crawled all 502 sitemap URLs afterwards to confirm clean single-hop responses, no staging references in rendered HTML, no mixed content, canonicals correct. Also found 544 database rows holding the old host's filesystem paths and deliberately left them alone, because nothing user-facing reads them. Noted in the report rather than "cleaned up" for the sake of it.

A cutover that had never actually happened

Diagnosis
Brief
A healthcare assessment platform was recorded as migrated to new hosting two days earlier. I was asked to do security remediation on it.
What I found
I did the remediation, then checked the live site properly: the DNS A record still pointed at the old provider, the response headers gave away the old stack, and the new platform held only a two-day-old database snapshot. The cutover had never completed, so everything I had just carefully fixed was on a copy that would be wiped by the next sync.
What I did
Said so immediately, re-applied the whole remediation to the actually-live site, then completed the real cutover. The post-cutover audit then found three further problems: the platform was still serving its own TLS certificate for the client's domain, the old server was still answering with HTTP 200, and a subscription renewal worth several hundred euro was due to fire within the hour on both boxes.
Result
Caught before the double charge. Reported my own wasted work rather than quietly redoing it, because the client needed to know the migration status in their records was wrong.

Site timing out under its own admin requests

Performance
Brief
An ecommerce site that had become unusable in the admin, with intermittent front-end slowness nobody could pin down.
What I did
Measured rather than guessed: 57% of admin AJAX requests were timing out because of PHP thread saturation. Traced it to a real-time statistics plugin polling every two minutes, a security suite running scheduled scans, and a second backup plugin pulling through the same endpoint. Deactivated the polling plugin, disabled the scheduled scans and cleared their cron queue, and enabled heartbeat control.
Result
Thread pressure resolved at source. Separately found two full security suites loading on every single request on another client site, which is a straight doubling of overhead for no additional protection.

A robots.txt left behind by a migration

Forensics
Brief
A store whose core JavaScript and CSS were being blocked from crawlers, with the SEO plugin blamed for it.
What I did
Traced the provenance. Archive snapshots showed a healthy generated robots.txt until March. A static file had been created on the new host in June, alongside a pre-migration server config backup from the old host and a matching agents file with an identical block list. It came in with the migration, not from WordPress and not from the SEO plugin.
Result
Replaced it, purged the edge and object caches, and confirmed with cache-busted requests that all seven blocked core assets now return 200, with the product structured data, pricing, add-to-cart and gallery all intact.

Platform knowledge

Where I have actually worked

Pressable, WP Engine, Kinsta, Cloudways, SiteGround, GoDaddy Managed WordPress, Hostinger, Convesio, and self-managed VPS on DigitalOcean running LiteSpeed. Cloudflare in front of a good proportion of them.

Each of these fails differently, and that is most of the value. A few examples of things that are true on one platform and not another:

  • One platform serves a missing upload as a static 404 before PHP runs, so a WordPress-level redirect for a renamed image can never fire. It has to be done at the CDN
  • Directories created over SFTP can default to permissions the web server cannot traverse, which presents as a 404 on perfectly present files
  • One managed host's gateway cache ignores WP-CLI flushes entirely and has to be invalidated through its own API
  • One platform's edge will return a network-wide 403 if you crawl it too quickly from a single address, so verification crawls have to run server-side and throttled

Working method

What you get from me

Access handled properly

Keys over passwords where the platform allows it, credentials stored per site rather than in a shared document, and a written record of what access exists so offboarding is possible later.

Reversible changes

Backups before destructive work, renames rather than deletions where I can, and a log of what was changed so it can be undone by somebody who is not me.

Verification, every time

Cache-busted requests against the live site, not a 200 from an API. If I say it is fixed, I have looked at the thing a visitor sees.

Reviews

Clients on the maintenance and hosting work

Josh is always quick to respond, making sure my website runs smoothly and ranks well on Google.
Arnaud Mirey Google
We love working with Josh. He is knowledgeable about any web issues we run into, and always responds quickly.
Jennifer Yacio Google
Josh was a pleasure to work with. He was very responsive and able to diagnose the issue with my website immediately. He is dependable and has a great mind for SEO. I look forward to working with him more.
Lynn Fellhauer Large format graphics · LinkedIn
Josh was awesome. Super knowledgeable and fast to respond, highly recommend him.
Maya D. Codeable
Communication was very good from the start, and a prompt resolution to my issue was found and actioned. Josh was a massive help!
Fraser C. Codeable

The rest of the skill set

Most jobs touch more than one of these. I can take the whole thing or just the part you are short of.

Contact

Tell me about the role or the job

Contract, part-time, one-off fix or white-label work for another agency: all fine. Say what you need and when you need it, and I will tell you honestly whether I am the right person for it.

Email
hello@josh-morley.com
Based
Liverpool, United Kingdom
Hours
10am to 5pm GMT
Reply
Within one business day
Languages
English (native)

Prefer to talk first? Book a discovery call, or download my CV.

You can also hire me through Codeable, where the rating, project count and reviews are all independently verifiable.

The more specific you are, the more useful my first reply will be.

Or email hello@josh-morley.com