Last updated on July 3rd, 2026 at 04:37 pm
See exactly how I structure project costs. A real invoice example showing what clients actually pay for professional WordPress and SEO work.
This document offers a rare behind-the-scenes look at an actual invoice I sent to a client. A big thanks to Rabin for letting me showcase this.
You can view the entire invoice at the bottom of this post, but I’ve also included the text version below with details as to why I did what I did.
Pages to Noindex for Better SEO
It’s a good idea to noindex pages that don’t bring in leads or web revenue.
Added noindex tag to /covid19 and /disclaimers
Other pages to consider adding noindex tag to include Terms of Service, Website Accessibility, and Privacy Policy.
Fixed 20 broken internal links (false positives)
Instead of just saying I fixed 20 links, I mention here that they were false positives so the client knows that no edits were actually made.
Merging 100s of URLs
These tasks were part of a URL consolidation campaign where the overall goal was to improve crawl budget by removing pages, posts, articles etc. that earn little to no traffic.
- created list of all city-specific URLs
- went through remaining ~240 pages to determine next steps for consolidation
- removed another ~30 under-performing URLs
Streamlining Plugins for Better Performance
Fewer plugins = fewer problems.
Deactivated/removed plugin Image optimization service by Optimole
If I find a plugin that is not being used, I’ll deactivate and remove it. But only after confirming it is not necessary by asking the client, or figuring it out on my own.
Boosting Website Speed with PHP Updates
Updating the PHP can improve website speeds up to 5x!
Tested updating PHP from 7.4 to 8.2 but no good due to many missing elements
Not all sites work on the newest PHP, however, so sometimes I’ll have to revert it back if anything breaks.
Modifying/optimizing many of the most popular plugins in WordPress
- enabled Table of Contents to display open automatically
- optimized crawl settings via plugin Yoast SEO
Created ~43 redirects
These were added server-side within the .htaccess file. I’ll utilize a redirection plugin only if required but server-side is more reliable.
Using Google Search Console to Remove URLs
Knowing how to work with Google Search Console is crucial.
Started validation request within GSC re: ~132k 404s
Here I am telling Google that a large number of URLs should be removed from its search results.
Scanned site with Screaming Frog looking for schema to remove
I even mention specific tools I work with on certain tasks. This helps with keeping data accurate in case another scan was done with a different tool.
Enhancing Local Rankings with Schema
Schema is such a valuable knowledgebase.
Creating and adding local business schema to city-specific landing pages
- created product/review schema for all 8 locations, then added to each landing page, also verified each URL via Google’s Schema Markup Validator
Pay attention to both the frontend and backend
While working on this site I learned that 1 plugin can control/break the entire site! It even brought back pages and other content I had removed previously. So here I am making sure the schema I added 3 days before was not removed by the plugin.
- confirmed product/review schema is still present on all 8 location pages
Troubleshooting how/why hacked URLs are still being crawled
This site was compromised a few months prior with thousands of spam URLs being added to Google’s index. But Google is still crawling them, so I let the client know to pay attention to this.
Optimizing Google Business Profiles for Local SEO
Google Business Profiles are very important for local SEO.
Confirming details before updating GBPs
- sent Rabin list of location details to ensure accuracy before updating GBPs
Tracking Plugins for Security and Clarity
Keeping track of plugins installed is critical for website security.
Transparency is paramount
I also provide a link to the developer’s page so the client (and their internal team) knows what it does.
- installed plugin Change Text Case
Keeping track of account access is important for accountability
- gained access to accounts for CallRail and Google Analytics
- request management permissions for GBPs Oakland, and San Francisco
- received access to GBPs for Oakland, San Francisco, and Redwood City (but this RC is a duplicate so will need to re-request access)
- request management permissions for GBPs San Jose, Sacramento, Pleasanton, Burlingame, and San Rafael
Creating a Centralized Asset Sheet for Clients
I built an online asset sheet for the client.
Agencies love being organized
This is just a Google doc with login credentials to all their online accounts. This simple action allows the client to know exactly what accounts they own and where. Agencies love these because it’s rare that a client has all their logins in one place!
- started online assets sheet

