This is the list I work through every month on the SEO side, so "maintenance" isn't a vague word on an invoice. It's also how the monthly report writes itself — the findings here become the report.
Worth being straight about how this works. Not every line here needs doing every month — that's the point of a standing list. Most months a handful of items need real work and the rest get checked and confirmed, which is exactly what you want: the checking is what catches problems while they're still small. Items marked quarterly are deeper passes that don't need monthly repetition, and grow marks the offensive work that comes with the Grow plan rather than basic upkeep.
SEO is only part of the work, though. Web design, graphics and development sit inside the same plan — a new landing page, a reworked layout, a set of graphics, a custom feature. Those get planned with you rather than run off a standing list, which is why they aren't itemised here.
If Google can't reach a page or has quietly dropped it, nothing else on this list matters. This is the first thing I look at.
Indexing coverage in Search Console
Which pages Google has, which it has dropped, and why. Pages fall out of the index quietly and nobody notices for months.
Crawl errors and server errors
Anything Google tried to reach and couldn't, fixed at the source rather than left to accumulate.
Manual actions & security notices
Rare, but a penalty or a hacked-content flag is the kind of thing you want caught the same week, not the same year.
Sitemap & robots.txt sanity checkquarterly
Confirming the site is still telling Google the right things about itself. A bad line in robots.txt can hide a whole section.
Google measures the experience real visitors get on real phones, and it's a ranking factor. It also decides whether someone waits for your gallery to load or leaves.
Core Web Vitals status
Google's own three measures of loading, responsiveness and visual stability — checked by page group, not just the homepage.
Mobile and desktop speed score
Homepage plus a key service page each month, so a slow drift gets caught before it becomes a rebuild.
Image weight on new pages
A site that sells on its photography lives on images, and images are what slow sites down. Oversized ones get compressed and served in modern formats.
Plugin bloat and script loadquarterly
What's actually running on every page load, and whether it still needs to be. Plugins accumulate.
Your team writes them — that's the subject expertise I don't have. My side is making sure each one is built so it can be found, and telling them what to fix next time rather than fixing it silently.
On-page pass on each new post
Title length and wording, meta description, one clear H1, heading order, image alt text. The mechanical things that are easy to get slightly wrong.
Internal links into your service pages
A post that doesn't link anywhere earns nothing for the pages that actually sell. This is the most commonly missed win.
Whether the target keyword was worth targeting
Rank Math will score a post green against whatever phrase you type in. It can't tell you whether anyone searches that phrase, or whether you can realistically rank for it. That judgement is the part a plugin can't do.
Topic and keyword targets set before writinggrow
Deciding what to write about and in what order, so the writing hours go somewhere with demand instead of being spent and hoped over.
Which older posts are worth updatinggrow
Refreshing a post that already gets impressions is usually cheaper than writing a new one from nothing.
Unglamorous and non-negotiable. This is the part that means you don't get a phone call on a Sunday.
WordPress core, plugin and theme updates
Applied deliberately and checked afterwards, rather than auto-updating and finding out something broke from a customer.
Broken links and missing images
Both inside the site and on links pointing to it. Dead pages leak whatever authority they'd built up.
Forms actually delivering
A contact form that silently stopped sending is the most expensive bug a business can have. Tested, not assumed.
SSL, redirects and mixed content
Certificate valid, no insecure assets, no redirect chains slowing pages down.
Backups confirmed at the host
Verified as actually existing. An untested backup isn't a backup.
For a business taking work in its own area, the map results often matter more than the blue links.
Google Business Profile upkeepgrow
Categories, hours, service areas, photos. Profiles decay and Google notices activity.
Business details consistent across directoriesgrowquarterly
Same name, address and phone everywhere. Mismatches quietly undermine local ranking.
Structured data still validgrow
What Google understands about your business from the code. Also where I'd catch a search feature being retired — the kind of change no plugin would tell you about.
The part that makes the rest of it visible. Everything above produces the findings; this turns them into one screen you can read in two minutes.
Your four numbers, and which way they moved
Clicks, impressions, average position and mobile speed score, against the month before. Trend matters more than any single figure.
What I fixed
Plainly, in a few lines. No jargon and no padding.
What's left for your team
Specific and actionable, so your team has direction rather than guesses — and so the work I'd be duplicating stays in-house.
What I'm watching
Anything trending the wrong way that isn't a problem yet, so nothing arrives as a surprise.
The split matters, because the parts I'd be worst at are the parts you already have covered.
If something here looks unnecessary, say so — I'd rather drop it than spend your hours on it. And if something you care about is missing, that's worth knowing too.