Questions I get about WordPress, training, and SEO
These are the questions I hear most often before, during, and after a project, grouped by the part of the work they come up in: services, training, tools, plugins, and how I work. If yours is not here, the contact form is the right next step.
168 questions across 11 topics
Services
-
#
Yes. Audit and remediation work on existing sites is a large part of the practice. Most of those engagements start with the $2,200 deep audit so we both understand what is there before anyone commits to a build. The $1,000 mid audit is the right depth when you have already named the issues and need order-of-operations on the fixes. The discovery call is the right place to figure out which tier fits.
-
#
WordPress is the platform I build on, and I’ve built on it since 2007. If your stack is something else, the advisory and governance work usually still applies, because architecture, performance, and editorial process aren’t WordPress-specific problems. The hands-on implementation depth isn’t the same once I’m off WordPress, though, so it’s worth a short call to find out where I can genuinely help and where I’d be pointing you elsewhere.
-
#
Yes. Build, audit, and SEO work is fully remote; clients are based across Canada and the United States. Onsite training and onsite delivery are limited to the Niagara region; remote training runs across Canada and beyond. See Training and enablement for delivery options and rates.
-
#
Yes. That’s the Local service area. The same practice that builds for Postmedia and the Government of Canada also builds websites for businesses in Fort Erie, Niagara Falls, and St. Catharines. See local business services.
-
#
Start with what you publish. If you run a newsroom or editorial operation on deadline, that’s Publishers, the core of my practice. Learning is for schools and training platforms, Brands for national brands with ongoing technical needs, and Local for local business sites. If none of those obviously fits, book the 20-minute discovery call and I’ll tell you directly which one you belong in.
-
#
Four paid options, scaling by depth. A free 20-minute discovery call to figure out which conversation you are actually having. A $500 pre-check with a 2-page written read on headline risks. A $1,000 mid audit with a 10–15 page diagnostic and a 30-minute debrief call. A $2,200 deep audit with a 30–50 page report covering architecture, performance, accessibility, integrations, and a written risk register. Any paid audit fee credits in full against a build engagement booked within 90 days of report delivery. A level-matched audit comes free with every build. The paid ladder is for buyers who want diagnostic work before deciding whether or what to build.
-
#
Twenty minutes on a call. You describe the situation, I tell you which engagement fits and roughly what the band looks like. No prep needed; no slide deck; no proposal afterwards. The discovery call is the free entry to the 4-tier audit ladder. If a paid audit is the right next step we set it up on the same call. If the fit is not there, you will hear that directly rather than in a follow-up sales pitch. Book the discovery call →
-
#
The headline number on an agency proposal is the developer hour. The all-in number adds the producer, the account manager, the designer, and the rework cycle when a brief drifts. On my side, you talk to the senior doing the work, scope is fixed against a band, and there is no context-switching premium when the brief shifts mid-project. Most engagements come out flat or cheaper all-in than the agency equivalent, and the calendar time is consistently shorter.
-
#
For the work in-house developers are not set up to do or do not love doing: paid audits at four tiers ($500 through $2,200), platform migration scoping, performance triage, accessibility remediation, and second-opinion architecture reviews where an outside senior pair of eyes saves the team from validating their own decisions. Every audit is documented so your team owns the result afterwards. No lock-in, no retainer obligation. If the gap is steady upkeep rather than a project, see Maintenance at $650/mo and up.
-
#
Every document, configuration, and piece of code is yours. No proprietary lock-in. No subscription to my system. I teach you how it works before I’m done.
-
#
Scoped against a price band, never an open-ended hourly. Discovery call → level-matched audit (free, $500, $1,000, or $2,200 depending on scope) → written scope with a fixed tier in the band → delivery in weeks, not quarters. The audit fee credits against the build if you proceed within 90 days; a level-matched audit is included in every build price. Use the WordPress Project Scope Estimator to land in the right tier before the call, or skip it and we will figure it out together in twenty minutes.
-
#
Who logs in to the site in a normal week is the question. Owner-Run Sites are for businesses where one owner, or a working pair, manages the site and the customer is the audience: the site sells you, books your work, and gets out of the way. Team-Run Sites are for organisations where several contributors publish, edit, or operate the site every week and the build has to keep up with the team behind it as well as the audience in front of it. If you have a team of three or more, contributors you do not personally manage, a membership, or content that needs governance, you are Team-Run, even if it feels owner-run.
-
#
Project work with a defined scope (a build, a migration, an audit) is fixed price. I scope it correctly before I start, I carry the risk if it runs long, and you know exactly what you’re spending before you sign. Ongoing advisory, retainer work, and engagements where the scope genuinely can’t be defined upfront are hourly. Either way, you know the number before work starts. No surprise bills.
-
#
Yes. I write findings in business terms, so you can prioritise by expected impact, effort, and timeline without a single line of jargon getting in the way. You should be able to hand my report to a board or a budget holder and have them follow it.
Appears on: Site Audit
-
#
Yes. I catch the things that quietly sink rankings: crawl blockers, speed drops, and broken page elements on your key pages. Most ranking damage I see started as a maintenance miss nobody noticed for months.
If search is the bigger concern beyond routine upkeep, my Technical SEO service covers the dedicated audit and implementation work.
Appears on: Site Maintenance
-
#
Priority issues are triaged quickly and handled by business impact. Anything blocking leads or core customer actions is addressed first.
Appears on: Site Maintenance
-
#
Every month I run core and plugin updates, check that your backups actually restore, and watch uptime and load speed for regressions. I test the parts that earn you money first: contact forms, booking flows, and anything tied to lead capture. If something breaks that affects those, I fix it before it costs you a customer.
Appears on: Site Maintenance
-
#
I report against indicators you can check yourself: index coverage quality, visibility on the terms you care about, and how your lead-focused pages are performing. I pull the numbers from Google Search Console and walk you through what moved and why, not a dashboard you have to decode alone.
Appears on: Technical SEO
-
#
I start with anything stopping Google from crawling or indexing your pages, since a page search can’t see earns you nothing. From there I work through speed constraints and the structural issues hurting your core service pages and lead paths. I fix the problems blocking results first, then move to the ones that compound them.
Appears on: Technical SEO
-
#
A technical SEO audit for a WordPress site checks the parts search engines read but visitors don’t always see. I review your schema and JSON-LD markup for correctness, the page render path and how much work happens before content appears, and Core Web Vitals measured template by template rather than as a single site average. I also map your internal-link structure and confirm indexability: which pages are crawlable, which are blocked, and which are sending mixed signals through canonicals or redirects.
Appears on: Technical SEO
Training
-
#
Yes. Custom workshops start with a 30-minute scoping call to map the agenda to your actual toolset and skill gaps. Use the Book Team Training link at the top of this page to start that conversation.
-
#
Yes. I’m Christopher Ross, based in Fort Erie, Ontario, and I run in-person WordPress training onsite across the Niagara region and southern Ontario, plus remote sessions for teams anywhere in Canada. I’ve worked with WordPress since 2007, and I develop curriculum and teach at the M.L. Campbell Training Center, so sessions are hands-on and built around your own site and goals rather than a generic slide deck. Training can be one-on-one or for a small team.
-
#
Both. I run private on-site team sessions across Niagara and open registration events when dates are posted. Distributed teams can train on Microsoft Teams or Zoom with the same materials and reference sheets.
-
#
Two to three weeks is usually enough for onsite delivery in Niagara. Virtual sessions can often run within a week. Custom workshops need a scoping call first, so allow an extra week for that step.
-
#
Yes. Each participant gets a PDF certificate of completion with the course name, the date, and my name as the trainer. It attests that the person attended the session and worked through the material with me, which is what HR records and manager reports usually need. If you are sending a group, I can pull a single completion summary for the whole cohort on request.
-
#
Private on-site training: $1,495 per day for up to 8 participants, with additional participants available up to a maximum of 10. Half-day: $750. Travel throughout the Niagara region is included. Open public events are priced per student, and the 20-minute scoping call confirms your fixed quote for private delivery.
-
#
Open public events have no minimum. Register your seat directly from the event page. Private team bookings use a day-rate model: $1,495 for up to 8 participants, with additional participants available up to a maximum of 10.
-
#
I do. I am Christopher Ross. Twenty-two years of training delivery, currently a Training & Development Specialist at M.L. Campbell (Sherwin-Williams), and an MA Candidate in Learning & Technology. Earlier instructional-design work includes WordCamp speaking, federal departments, and provincial education clients. Every session on this page is delivered by me, not subcontracted.
-
#
If you open Excel a few times a week because the job hands it to you, not because you like it, and you freeze when someone asks for a SUM, this is your starting day. By the end you write real formulas without guessing, format a sheet that prints cleanly, and stop being the person who copies the values every time a formula breaks. Built for admin, ops, finance, and project staff who use Excel because they have to.
Appears on: Microsoft Excel Training 101
-
#
If you already know SUM and can format a sheet, and you are the person the team quietly asks for spreadsheet help, this is the day you grow into that role on purpose. You will build charts that read at a glance, write formulas that survive a column insert, and record your first working macro to handle Monday. For staff who finished Level 1 or taught themselves up to formulas and basic formatting.
Appears on: Microsoft Excel Training 201
-
#
If your work lives in lists of hundreds or thousands of rows and your monthly report still involves scrolling, filtering, and copying subtotals by hand, this is the day you stop. You will turn raw lists into answers using Tables, lookups, and PivotTables instead of eyeballing. Built for analysts, team leads, ops coordinators, and finance staff who have outgrown filter-and-copy and need real summaries they can trust.
Appears on: Microsoft Excel Training 301
-
#
If you own a forecast, budget, or allocation and your assumptions are buried somewhere in cell B47, this is the day they come into the open. You will build what-if scenarios, optimize with Solver, and audit every number back to its source, including spreadsheets you inherited. It is for finance staff, analysts, and managers who have moved past summarizing data into making decisions with it.
Appears on: Microsoft Excel Training 302
-
#
If you produce the same report from messy exports every week and lose a Monday morning to copy-paste, this is the day that work refreshes with one click. You will build a real ETL pipeline with Power Query and hand off a dashboard that updates itself instead of one-off PivotTables. For analysts and reporting leads ready to move from manual spreadsheet work into proper reporting workflows.
Appears on: Microsoft Excel Training 401
-
#
If your inbox runs your workday instead of the other way around, this is the day Outlook becomes a workspace rather than a fire hose. You will build a triage routine so you stop treating every email as a decision you must make right now, and a calendar that protects the time you need for real work. It is for people who already live in Outlook and want it to stop being a source of background stress. I have taught this in classrooms since 2004.
Appears on: Microsoft Outlook Training 101
-
#
If you build decks for sales calls, board meetings, or training and want them to communicate instead of decorate, this is the day your slides get out of the way of the message. You will learn to aim a deck: one idea per slide, charts a room can read across the table, and a Slide Master that handles formatting for you. Built for people who present to make decisions happen, not to fill a screen.
Appears on: Microsoft PowerPoint Training 101
-
#
If Word fights you on anything longer than three pages, the Styles that will not behave and the table of contents that refuses to update, this is the day the tool gets out of your way. You will make Word hold structure on long documents with Styles, sections, and a table of contents that updates itself. Built for the people who write the reports, contracts, policies, and letters an organization actually runs on.
Appears on: Microsoft Word Training 101
Tools and calculators
-
#
Yes. All calculators are free, require no login, and have no usage limits. Use them as many times as you need for any project.
-
#
Yes. Every calculator works on your phone in any modern browser, with nothing to install. I built them to be used on the job site, not just at a desk.
-
#
No, and that is deliberate. Nothing you type leaves your browser, so there is nothing to store or transmit and nothing for me to see. If you want the figures later, screenshot or note the output before you close the tab.
-
#
Accurate enough to order from, once you confirm the final count with your supplier. I build in the standard industry waste factors and rounding conventions, because every real job loses material to offcuts and mistakes, and an estimate that ignores that sends you back to the store mid-project. Treat the result as a solid planning and procurement number, not the last word from your supplier.
-
#
Tell me through the contact form and I will look at adding it. I build the calculators readers ask for, so when the formula is standard and the use case is practical, it usually lands in a future update.
-
#
Residential driveways: 2–3″ of compacted hot-mix over a properly prepared 6–8″ granular base. Commercial parking and any surface that’ll see truck traffic: 4″+ asphalt over 8–12″ base, sometimes with a binder course.
Appears on: Asphalt tonnage calculator
-
#
Default flow: enter the finished, compacted thickness (the depth you actually want after rolling) and leave the compaction factor at 0%. The 145 lb/ft³ density figure already represents compacted hot-mix, so the tonnage math comes out right. Escape hatch: if your supplier quotes loose tonnage instead of compacted, set the compaction factor to about 25%. Loose asphalt compacts roughly 20–25% during rolling, so a 25% bump on the volume side closes the gap.
Appears on: Asphalt tonnage calculator
-
#
Asphalt is sold by the ton, but you measure your job in volume. Density (mass per unit volume) is the conversion factor. 145 lb/ft³ is the safe default for standard hot-mix; specialty mixes vary.
Appears on: Asphalt tonnage calculator
-
#
The deadline it reports is the real regulatory one, drawn from what the regulations actually say, but the lookup is information rather than legal advice. It returns your binding deadline, the regulation that creates the obligation, the penalty exposure, and a plain-language read of what it means for your site, filtered by your organization type and status. Two things it corrects: the “WCAG 2.1 AA by 2025” date you may have read about was never enacted in Ontario, and organizations under 50 employees are not exempt. I’m not a lawyer.
Appears on: Canadian web accessibility deadline lookup
-
#
Start by reading exactly what the lookup gives you: the regulation cite, the penalty exposure, and the plain-language explanation for your organization type. That tells you what’s actually enforced, not what a rumour online claims. If the date is close or behind you, the practical move is to get a real audit of where your site stands against the requirement so remediation can be planned and budgeted. I can help with that work, but the lookup itself is a starting map, not legal counsel.
Appears on: Canadian web accessibility deadline lookup
-
#
Switch to ready-mix once you cross about 0.5 cubic yards. At that point, the bags-vs-truck math favours the truck on price, time, and consistency, and small ready-mix suppliers will deliver as little as a half-yard.
Appears on: Concrete volume calculator
-
#
I default to 10%. Drop to 7% if your forms are tight and the subgrade is dead level, hold at 10% for the typical residential pour, push to 15% on irregular forms or sloping subgrade. Wastage covers over-excavation, sub-base unevenness, and the small thickness variation between forms. Order a touch heavy; running short mid-pour is far worse than throwing a wheelbarrow extra in the back.
Appears on: Concrete volume calculator
-
#
4″ for a typical residential slab, walk, or patio. 5–6″ if vehicles will sit on it. 6″+ with rebar for driveways used by trucks or RVs. Always over a properly compacted granular base.
Appears on: Concrete volume calculator
-
#
Rule of thumb: deduct openings of about 25 sq ft or larger, like patio doors, large picture windows, garage doors. Leave standard interior doors (around 21 sq ft) and standard windows (around 15 sq ft) in the area; the waste allowance absorbs them, and the offcuts are useful in the closet.
Appears on: Drywall sheet calculator
-
#
4×12 sheets create fewer butt joints (the hardest to finish invisibly) and are the pro choice when ceilings allow. 4×8 sheets are easier to handle solo, easier to stair-haul, and fit through standard doorways without tipping.
Appears on: Drywall sheet calculator
-
#
Add ceiling area to wall area when both use the same sheet thickness. Ceilings often want 5/8″ for sag resistance while walls use 1/2″; in that case, calculate them separately.
Appears on: Drywall sheet calculator
-
#
It depends on volume, location, and what you’re digging near. Most municipalities have soil-management or fill-control bylaws above a certain cubic-yard threshold. Always call locates before any dig.
Appears on: Excavation volume calculator
-
#
Most soils swell 20–30% when excavated, with clay on the higher end and sand on the lower. Use a positive compaction factor (e.g., +25%) so your haul tonnage matches the loose volume coming out of the hole.
Appears on: Excavation volume calculator
-
#
Yes. Set the wastage allowance (typically 5–10%) to cover the over-dig that always happens at the perimeter when an excavator scoops outside the design line.
Appears on: Excavation volume calculator
-
#
Often, yes. Most municipalities have height limits (typically 6 ft side/rear, 4 ft front) and may require a permit above those. Pool fencing has its own stricter requirements. Check before you dig.
Appears on: Fence material calculator
-
#
Below your local frost line: 36–48″ in southern Ontario, deeper further north. Shallower holes will heave with frost cycles and pull the fence out of plumb within a couple of seasons.
Appears on: Fence material calculator
-
#
6–8 ft is typical for residential wood fences. Pre-fab panels usually dictate spacing; for custom builds, shorter spacing means more posts but stiffer panels and easier hardware sourcing.
Appears on: Fence material calculator
-
#
Yes. The volume math is identical. Use the supplier’s recommended compaction factor for that material; gravel typically settles 10–15%, sand a bit less.
Appears on: Fill volume calculator
-
#
Both, depending on the supplier and material. Granular A is often priced per ton, topsoil per cubic yard. Always ask before ordering, and confirm whether delivery is included.
Appears on: Fill volume calculator
-
#
When you’re bringing in fill that will be compacted in place. A positive compaction factor (e.g., +20%) means you need to order more loose material to end up with the target compacted volume.
Appears on: Fill volume calculator
-
#
10% covers most rough cuts. Bump to 15–20% when you need clear stock with no defects, when the cut list has lots of short pieces, or when you’re working with figured/specialty wood that’s more expensive to re-order.
Appears on: Lumber board-foot calculator
-
#
Nominal. A “2×4” measures 1.5″ × 3.5″ actual, but board-foot pricing uses 2 × 4. Hardwood is quoted in “quarters” (4/4 = 1″, 5/4 = 1.25″) which are nominal, so use those.
Appears on: Lumber board-foot calculator
-
#
A board foot is the volume of a piece of lumber 1″ thick × 12″ wide × 1 ft long: 144 cubic inches. Hardwood is almost always priced this way. Dimensional softwood (2×4s, 2×6s) is priced per piece.
Appears on: Lumber board-foot calculator
-
#
Set “Coats” to 2 and enter the same area. The calculator multiplies your surface area by the number of coats before dividing by coverage, so the gallon estimate is for the full job.
Appears on: Paint coverage calculator
-
#
Only if you’re painting it. Add ceiling area to total area when ceilings get the same paint. If they’re a different paint or colour, run the calculator twice, once per surface, so each gets its own coverage rate.
Appears on: Paint coverage calculator
-
#
Manufacturer numbers assume smooth, sealed, primed surfaces. Texture, porosity, drastic colour shifts, and inexperienced applicators all reduce yield. Add 10–20% wastage when any of those apply.
Appears on: Paint coverage calculator
-
#
No. It uses the nominal tile size to compute count. Grout joints (typically 1/16″ to 1/4″) effectively cover slightly more area per tile, but the wastage allowance absorbs the difference.
Appears on: Tile calculator: square footage plus cuts and breakage
-
#
10% is the trade default for straight-laid square tiles. Bump to 15% for diagonal layouts. Push to 20% for pattern layouts like herringbone, basket-weave, or anything with directional grain, and for large-format tiles 24 inches and up, where every cut is bigger and harder to reuse.
Appears on: Tile calculator: square footage plus cuts and breakage
-
#
Yes. Dye lots can vary between batches, so order all your tile at once and round up to whole boxes. Keep at least one spare box for future repairs.
Appears on: Tile calculator: square footage plus cuts and breakage
-
#
It reads four things about your live site: its age, how many plugins you run, your traffic, and the features you actually depend on. From those it returns a realistic monthly band rather than a single figure. The reason it’s a band is that maintenance is three jobs, not one. Security is the part everyone pictures. Performance monitoring is the second. The third, the one most quotes stay quiet about, is what happens when something breaks and the scope conversation suddenly starts.
Appears on: WordPress maintenance budget calculator
-
#
No, and I’d be doing you a disservice if I pretended otherwise. The band is a planning number, built to pressure-test a quote you’ve received or a budget line you’re about to write. A $99 plan and an $1,800 plan can look identical on a one-page proposal until something breaks. The calculator shows you whether a price plausibly covers all three maintenance jobs. A binding quote comes after I’ve actually looked at your site.
Appears on: WordPress maintenance budget calculator
Plugins and downloads
-
#
Yes. Every asset on this page is free to download and use. No account, no email capture, no payment required.
-
#
Yes. Most use MIT or GPLv2. Check the README in each repo for the specifics.
-
#
Watch the repo on GitHub and you will get a ping on every release. Plugins installed through WP admin update the normal way.
-
#
Fork it. If you fix something I should have caught, send a pull request. Issues are open too.
-
#
Only the ones you approve. Lower-risk fixes apply with one click and keep an undo; higher-risk changes are review-first, so Shadow shows you the exact change before it writes anything and waits for your go-ahead. It never changes a production site unattended.
Appears on: Shadow by Christopher Ross
-
#
No. Shadow is local-first: everything runs inside your own WordPress install, and nothing is sent to a third party.
Appears on: Shadow by Christopher Ross
-
#
Yes. Shadow is a free, open-source plugin released under GPL-2.0-or-later. There are no paid tiers, no locked diagnostics, and no registration required to use it.
Appears on: Shadow by Christopher Ross
-
#
Shadow runs 230 diagnostics across 11 categories: accessibility, code quality, database health, design, monitoring, performance, security, SEO, settings, WordPress health, and workflows. Each finding is written in plain language with a clear next step.
Appears on: Shadow by Christopher Ross
-
#
Yes. I have the plugin add a consistent class to outbound links so your theme CSS can target them on their own, separate from internal links. That lets you give external links their own colour, an icon, or an underline style without touching every link by hand.
Appears on: WordPress Nofollow Plugin · Auto Add nofollow, target=_blank, noopener
-
#
No. I apply the changes at render time with content filters, so your stored post content stays exactly as you wrote it in the database. Deactivate the plugin and your posts go back to their original output with nothing left behind to clean up.
Appears on: WordPress Nofollow Plugin · Auto Add nofollow, target=_blank, noopener
-
#
A nofollow attribute tells search engines not to pass your site’s ranking credit to the link’s destination. I reach for it on the links I do not want to vouch for editorially: sponsored placements, affiliate URLs, and user-submitted links in comments. For a site you genuinely recommend, leave the link as a normal followed one. Nofollow is for the links you would rather not put your name behind.
Appears on: WordPress Nofollow Plugin · Auto Add nofollow, target=_blank, noopener
-
#
Yes. The plugin works on rendered content, so it sees the final output a page builder or the block editor hands to the browser and applies its link rules there. That means Elementor, Beaver Builder, and the standard block editor all work without special setup. If a builder does something unusual with its output, test one page first and you will know in seconds.
Appears on: WordPress Nofollow Plugin · Auto Add nofollow, target=_blank, noopener
-
#
No. I built it to do one small job during content rendering: read your links and set the right attributes. It loads no front-end scripts or stylesheets of its own, so there is nothing extra for a visitor’s browser to download. On a normal site you will not see a measurable change in page speed.
Appears on: WordPress Nofollow Plugin · Auto Add nofollow, target=_blank, noopener
-
#
Yes. The built-in AJAX bulk processor scans your media library and converts files in small batches, so a large library won’t trip a server timeout. You can watch progress and see the storage savings add up as each batch finishes.
Appears on: WordPress HEIC Plugin · Auto-Convert iPhone Photos on Upload
-
#
Yes. The standard PHP GD image library can’t read HEIC, so the plugin uses the ImageMagick (Imagick) extension with libheif support on the server. Most managed WordPress hosts already provide it. If yours doesn’t, your host can usually enable it on request.
Appears on: WordPress HEIC Plugin · Auto-Convert iPhone Photos on Upload
-
#
Yes. The plugin never deletes your originals. Instead of overwriting the high-resolution HEIC files, it archives them in /uploads/heic-backups/, so you can restore the source assets any time. Your original photos stay exactly as your camera saved them.
Appears on: WordPress HEIC Plugin · Auto-Convert iPhone Photos on Upload
-
#
Not by default. WordPress blocks SVG uploads because an SVG is really an XML file that can carry scripts, so an unsanitized SVG is a security risk. The This Is My URL SVG Support plugin enables SVG uploads safely: it sanitizes each file on upload, stripping scripts and unsafe code before the image is stored. After that, you can add SVG logos and icons to the media library and use them like any other image, with the sharp scaling that SVG gives you.
Appears on: WordPress SVG Plugin · Safe SVG Uploads in the Media Library
-
#
Yes. The plugin enables SVG uploads at the WordPress media level, so any tool that pulls from the media library can use them, including Gutenberg and page builders such as Elementor. Because it works at the media layer rather than per-builder, it doesn’t depend on a specific editor.
Appears on: WordPress SVG Plugin · Safe SVG Uploads in the Media Library
-
#
No, and that’s deliberate. SVG files can carry executable code, so they should only come from sources you trust. I built this plugin for controlled workflows where a trusted user reviews and manages what gets uploaded, not for opening uploads to the public.
Appears on: WordPress SVG Plugin · Safe SVG Uploads in the Media Library
-
#
Yes. I added admin-side handling that tells WordPress how to render SVGs inside the media library, so the blank or broken previews you are seeing now display as real thumbnails. Once the plugin is active, your existing SVGs pick up the corrected rendering the next time the media screen loads. Nothing about the files themselves changes.
Appears on: WordPress SVG Plugin · Safe SVG Uploads in the Media Library
-
#
Yes. The AJAX bulk processor works in small batches and pauses between them, so it spreads the load instead of hammering the disk all at once. On servers with strict I/O limits or heavy traffic, that pacing keeps conversions running without starving live visitors of resources.
Appears on: WordPress WebP Plugin · Auto-Convert New Image Uploads to WebP
Work and case studies
-
#
Where the client agreed to attribution, the case study names them and the people involved. Where the work was confidential, it runs without names or identifiable details. The situation, the constraint, and the outcome are described, but the organization is not identified. You can tell which is which from the post: named case studies link to the client or the published work.
-
#
Yes. The portfolio reflects delivered work. Some entries use shortened client context where confidentiality requires it, but the implementation and outcomes are from real engagements.
-
#
Yes. The discovery call is the right place to start; reference the case study that resembles what you are trying to ship and the call gets fifteen minutes shorter. From there it follows the normal path: level-matched audit, scope at a fixed band, delivery in weeks. Several of these projects started with a paid $2,200 deep audit before anyone committed to a build; if your situation looks like that, say so on the call.
-
#
Yes, with consent. After a discovery call and once scope is mutually understood, I will reach out to specific past clients on your behalf and ask whether they are willing to take a short reference call. I never share client contact details, names, or engagement details without their prior written permission. That includes confidentiality clauses on active engagements.
-
#
WordPress is the core of what I do, so that is what most of the portfolio shows. I also take on the work that sits right next to it: architecture decisions, technical SEO, and platform advisory that make the WordPress side hold up. If your project leans on WordPress in some way, even if it is not a pure WordPress build, it is worth a conversation.
-
#
Work entries are project snapshots: what got built, the constraint that drove the call, what shipped. Case studies are post-mortem essays, the same projects pulled apart on the table afterwards: the trade-off I made and why, the thing that did not work and what we did instead, the outcome measured three months later. If you want to scan delivered work, the work archive is faster. If you want to read how a decision held up over time, this is the page.
-
#
A portfolio entry is the quick snapshot: what the project was and what I built. A case study is the long version, where I walk through the constraints I was working under, the trade-offs I made, and how the result was measured. I write a case study when the thinking behind a decision is more useful to you than the finished screenshot, since that is usually what tells you whether I am the right fit for your own problem.
-
#
Most of the implementation work shown here starts in the mid-four to low-five figures. I do not set a final number until after discovery, when I understand what the project actually needs; then I scope it against fixed pricing bands so you see a real figure before any work begins. If your budget sits below that range, tell me early and I will say honestly whether I can shape something useful within it.
-
#
Mostly mid-four to low-five figures of paid work, sometimes higher. The decision about whether something becomes a case study is not about the price tag. It is about whether there is an architectural call, trade-off, or migration story worth pulling apart. A $5,000 audit that prevented a six-figure migration mistake is more interesting case-study material than a routine implementation at four times the size.
-
#
A case study takes two consents and one quiet quarter. The client has to agree to the write-up, the timing has to be far enough past launch that the outcome is measurable rather than hopeful, and I have to make the time to actually write it. Most engagements stay on the work archive instead because at least one of those three things did not line up. The studies that do land here are the ones where all three did.
For your industry
-
#
Some do, where the scenario maps cleanly to a fixed band. Others point you into the relevant /services/ tier and let the price come from there once we have scoped the build. Either way, the 20-minute discovery call confirms the band before any written scope.
-
#
Start with the page that sounds like your situation, not the page that sounds like the work you think you need. A newsroom worrying about editorial workflow lands on the newspaper page; a college worrying about LMS integration lands on the LMS page. Each page points at the matching engagement on the services index once the fit is obvious. If two pages sound half-right, the 20-minute discovery call sorts it faster than reading a third one.
-
#
A /services/ page like /services/wordpress-audit-deep/ is a price-banded engagement type: what gets done, who does it, what it costs. A /for/ page is a vertical framing, naming what tends to be hard about WordPress for that kind of organisation, and which engagement type fits. If you already know whether you need an audit or a build, /services/ is the faster route. If you only know the shape of your situation, /for/ is.
-
#
Probably. The pages listed here are the ones that have come up enough on discovery calls to be worth writing down. Less common scenarios route through the normal contact form. Describe what you are trying to ship and I will point at the closest fit on /services/, or tell you that I am not the right person for the job.
-
#
These are entry pages framed by your situation rather than by the service catalog. A newsroom that needs editorial workflow lands here on the newspaper page, not on the seven-tier services index. Each /for/ page maps to the right engagement on /services/ once we know which one fits. They are the doorway, not the work itself.
-
#
Honest answer: sometimes you should not. An agency with a project manager, a designer, a developer, and a QA lead is the right shape for a six-figure rebuild on a hard deadline. What I offer instead is one senior practitioner who has been doing WordPress since 2007, answers your email directly, and bills at a senior rate without the agency overhead stacked on top. For audits, rescues, training engagements, and builds where you want the person doing the work to also be the person on the call, that trade usually lands in your favour.
-
#
Sometimes. The plugin install is the easy part. Anyone can run it in fifteen minutes. The hard parts are learner-data architecture, the integration with your HRIS, and the reporting that survives a procurement audit. If your team has done all three before on another LMS, the install is enough. If they haven’t, the install is where the next 18 months of “why doesn’t the report work” starts.
Appears on: Learning management systems
-
#
Yes, if learner history matters and the source system has an exportable data model. I have moved learner records between LMS platforms without losing completion data or breaking active enrollments. The trick is the cutover plan, not the import script.
Appears on: Learning management systems
-
#
No. Moodle is a strong open-source LMS, but the organizations that run it well have IT teams already supporting it. My WordPress work is what I do at the senior-developer bar; standing up a Moodle deployment would mean charging you for my learning curve. If Moodle is the right answer, I will tell you on the discovery call and point you at people who do it well.
Appears on: Learning management systems
-
#
Smallest fixed-scope builds I take on are around 6 weeks. Larger institutional builds with HRIS or SIS integration run 3 to 5 months. I quote fixed-fee after the discovery call so you know the number before you sign anything.
Appears on: Learning management systems
-
#
I recommend the one your reporting needs point to. LearnDash leans toward gradebook-style learner records; TutorLMS leans toward marketing-style funnel records. Both are mature platforms, so the real question is your reporting, your integration surface, and which records your team actually has to pull. I’ll make the call on a discovery call once I see what you need to report on and what the LMS has to talk to. A blog post can’t pick for you without knowing that.
Appears on: Learning management systems
-
#
Yes. Order history is the part that takes the most care, because every past order ties together a customer, the products as they were priced and named that day, and a payment record, and those references have to survive the move without breaking. Customer accounts, product catalogues, and content come across more cleanly. The discovery call scopes how much history you need to keep and how clean the source data is.
Appears on: WooCommerce development
-
#
Yes. Subscriptions is one of the more reliable WooCommerce extensions, but the failed-payment retry logic and customer-facing self-management portal are where most implementations fall short. That is where I focus the work.
Appears on: WooCommerce development
-
#
Smallest fixed-scope builds I take on are around 8 weeks. Larger B2B builds with ERP integration run 4 to 6 months. Quoted fixed-fee after the scoping work so you know the number before you commit.
Appears on: WooCommerce development
-
#
Sometimes. Shopify is the right answer for stores that want to outsource the entire infrastructure problem and do not need deep customisation. WooCommerce is the right answer when you need control over the data model, your checkout, your customer accounts, or the integration surface to systems Shopify does not natively reach. The discovery call will give you the honest answer for your situation, not the answer that points to my invoice.
Appears on: WooCommerce development
-
#
Yes when it fits. The block-based checkout is now mature enough for most stores. The classic checkout still has the edge in some integration-heavy scenarios. The build will use whichever serves your store, not whichever is newer.
Appears on: WooCommerce development
-
#
Yes. Each platform has its own export shape and its own quirks. Wix is the most painful because the export options are limited; Squarespace is more cooperative; Drupal is technically easier but the content model usually needs careful mapping.
Appears on: WordPress migration
-
#
I write the DNS plan and walk your team or your IT provider through executing it. I do not take ownership of your DNS or email, and you should be cautious of any developer who wants to.
Appears on: WordPress migration
-
#
Smallest jobs land in two weeks. Most fall between four and eight. Multisite consolidations or platform-to-WordPress moves with a thousand pages of legacy content can run two to three months. The plan call gives you the number for your specific situation.
Appears on: WordPress migration
-
#
The 60-minute plan is quoted on the discovery call after I know the scope. The free 20-minute call is where we figure out whether the plan engagement makes sense and what shape it should take.
Appears on: WordPress migration
-
#
A well-planned WordPress migration usually shows a brief dip in the first two weeks and recovers within four to six. A poorly planned one can take months to recover from, and some never fully do. The plan exists to put your migration in the first category.
Appears on: WordPress migration
-
#
If your team has the discipline to review user accounts monthly, audit plugin updates against CVE databases, and rotate keys on a schedule, you do not. If that sentence made you wince, you do.
Appears on: WordPress security & hardening
-
#
No. Both are useful tools inside a real hardening strategy. Neither, on its own, fixes weak credentials, stale admin accounts, outdated plugins with known CVEs, or a misconfigured upload pipeline. The plugin watches the front door; the hardening locks the rest of the house.
Appears on: WordPress security & hardening
-
#
The hardening engagement pauses immediately. I will tell you what I found, in writing, the same day. You then decide whether to convert the engagement to incident response (separate hourly engagement, starts the next morning) or whether to pause the hardening until the IR work is complete. Either way, you do not get silently up-billed.
Appears on: WordPress security & hardening
-
#
Hardening can interact badly with badly-written plugins. The sprint runs on staging where one is available, on production with backup where it is not, and the implementation plan is reviewed with you in writing before I touch anything live.
Appears on: WordPress security & hardening
-
#
The free version is the published audit checklist on the blog and the 20-minute discovery call. The paid version is what you get when I run the framework on your site, with my eyes, my tools, and my judgment. Both are available; they are different products.
Appears on: WordPress site audit
-
#
The published audit covers one WordPress install. For newsroom networks, multi-school LMS deployments, or brand portfolios, I quote scope and price separately, because the failure patterns repeat across sites and there’s real savings in auditing them together rather than one at a time. Book the discovery call and tell me how many sites you’re running; I’ll tell you what fits.
Appears on: WordPress site audit
-
#
Sometimes. The audit ends with a written “what it would cost to fix this” scope. Roughly a third of audit clients move into a longer engagement. The other two-thirds take the report to their internal team and execute themselves, which is also a fine outcome.
Appears on: WordPress site audit
-
#
I need a temporary WordPress administrator account, plus read-only access to Google Search Console and GA4. I don’t need hosting or DNS access, and I’ll tell you if that ever changes. I revoke the administrator account the day the engagement ends, because an audit shouldn’t leave a stray key to your site sitting in someone else’s hands once the work is done. Fewer open doors is just good hygiene.
Appears on: WordPress site audit
-
#
Because the deliverable is fixed. The same six artifacts ship every time. “Starting at” pricing is what consultants use when the scope is undefined and the price is a negotiation; my scope is defined and my price is not a negotiation.
Appears on: WordPress site audit
-
#
Yes, with the caveat that very large product catalogues sometimes need a longer engagement. If your store is over 5,000 SKUs or running heavy product-filter plugins, mention it on the discovery call and I will tell you whether the sprint scope holds.
Appears on: WordPress speed optimization
-
#
No, and any agency that does is selling you a number, not an outcome. The goal is field Core Web Vitals in the green for the templates that drive revenue. Lighthouse is a lab tool; CrUX is what Google ranks on. The after-report shows the numbers honestly, whichever way they moved.
Appears on: WordPress speed optimization
-
#
I work on builder-based sites every week. Elementor, Divi, and Beaver Builder all add markup and scripts a hand-built theme doesn’t, so the sprint can still move your numbers a lot, but the ceiling sits lower than on a custom theme. The report tells you exactly where that ceiling is so you can decide whether it’s high enough or whether the builder itself is the thing to revisit later.
Appears on: WordPress speed optimization
-
#
That outcome is rare but possible. If the after-report shows no improvement, the report says so honestly and recommends what would actually move the numbers: usually a theme rebuild, a hosting move, or a plugin retirement that is bigger than this sprint. The fee is for the work and the report, not for a guaranteed score.
Appears on: WordPress speed optimization
-
#
Probably not, and chasing 100 is a bad goal. The right goal is field Core Web Vitals in the green for the templates that actually drive revenue. Lighthouse is a lab tool; CrUX is what Google ranks on.
Appears on: WordPress speed optimization
-
#
Yes. If your team is on the block editor and fighting reusable blocks, patterns, or the way alignment and spacing behave, that can be the whole session. The usual sticking point is the gap between a block’s editor view and how it actually renders on the published page, plus the trap where a pattern looks right until someone edits it and the layout quietly breaks. I show your team how to see those coming so they stop guessing.
Appears on: WordPress training for teams
-
#
Either. Onsite within Niagara is included in private delivery; onsite further afield bills travel separately at cost, with no markup. Remote sessions run on Zoom or Teams with the same hands-on workshop structure, so your team does the work in their own site rather than watching me do it in mine.
Appears on: WordPress training for teams
-
#
Private delivery is the right call when the team needs the session built around your specific site, theme, governance, and workflow, which is most cases where you have inherited a real WordPress property. Public-cohort seats make sense for organizations sending one or two people to learn alongside other professionals where the agenda is set rather than scoped.
Appears on: WordPress training for teams
-
#
Standard part of the editorial-focused curriculum. I teach the SEO plugin your site already runs, Yoast, Rank Math, or All in One SEO, not the one I’d pick myself. The session covers the few fields that actually move the needle, the title and meta description, and how to stop the plugin’s green-light score from talking your writers into keyword-stuffing copy no reader enjoys.
Appears on: WordPress training for teams
-
#
If the cheaper trainer has both an instructional design background and 19 years of WordPress practice, hire them. Otherwise you are choosing between someone who knows learning and does not know your platform, and someone who knows your platform and does not know learning.
Appears on: WordPress training for teams
How I work
-
#
Often that is the best outcome. I work directly with your in-house developers, designers, and content people through code review, pair work, and a structured handover when the engagement calls for it. The aim is to leave your team able to maintain and extend the work themselves, so the knowledge stays in the building after I am gone rather than walking out the door with me.
-
#
Yes. Every project includes a 30-day support window after handoff for questions and small fixes on what I delivered. After that, most ongoing needs fit one of two shapes: a reserved block of capacity each month, or a care plan, so you get steady attention without an open-ended retainer. For occasional work later on, I scope a fixed sprint instead, like a quarterly review-and-fix pass or a defined monthly content push.
-
#
Yes. I sign mutual NDAs and standard professional-services contracts as a matter of course. For larger engagements I will work from your paper or mine, whichever your procurement team prefers, and I am comfortable with the usual additions: data-handling terms, security questionnaires, and named-contact and insurance clauses. Send me what your process requires and I will turn it around.
-
#
Yes. Most of my outside-Canada work is with clients in the United States, with the occasional engagement further afield. I work remotely unless on-site time is specifically scoped into the project. For clients outside Canada I quote in either CAD or USD, whichever suits your finance team, so the invoice lines up with how you actually pay.
-
#
Scope changes are normal, and the audit usually surfaces things the original scope could not have anticipated. When that happens, I write up the new work as a change request with a fixed price and a revised completion date, and you decide whether to approve it. The original scope keeps its original price. You are never billed for a surprise you did not sign off on.
-
#
In a Git repository you own and control, usually GitHub, GitLab, or Bitbucket. I push branches and open pull requests; you review, approve, and merge. When the engagement ends, you revoke my access and keep every commit, branch, and bit of history intact. The code was always yours.
Events
-
#
Yes. I give every session printed or digital reference materials and send the organiser a short summary afterward, so the learning has somewhere to live once the room empties. Participants keep everything I hand out.
-
#
Yes. Use the Onsite Training Across Canada or Remote Training For Teams links to choose your preferred delivery model and start the conversation. Private sessions run at a day rate, with details on the booking page. Sessions can run on any available weekday.
-
#
Use the registration link on the event page. For open sessions I close registration 48 hours before the start time, or sooner if we hit capacity, so book early if a date matters to you.
-
#
Tell me as early as you can and I will sort it out fairly. Cancel more than 72 hours before the session and I refund you in full. Closer than that, I move your spot to another session date within 90 days.
Testimonials
-
#
No editing, typos and all. The selection is for variety: different services, different team sizes, different countries, different decades. Some testimonials are short because the writer kept them short. The page is not a wall of five-star superlatives, and it is not meant to be.
-
#
Yes, please. Email or LinkedIn message works for a direct quote; if the engagement included one of my free plugins, a review on the WordPress.org plugin page is the most useful place because it helps other potential users too. Either route reaches this archive on the next refresh.
-
#
Public-source testimonials link back to the verifiable original: the WordPress.org plugin page, the LinkedIn recommendation, the platform that hosted the review. Email-source quotes are attributed by initial, role, and region by default, with full name and engagement context only where the client gave written consent to attribution. If a card looks anonymous, that is the consent boundary, not a sign that the quote is invented.
-
#
Clients I have delivered for, WordPress.org users reviewing plugins I publish, LinkedIn recommendations, and post-engagement email. Each card links back to the original source where one exists publicly: the WordPress.org review page, the LinkedIn recommendation, or the case study the quote was pulled from. Nothing here is paraphrased or reconstructed.
From the blog
-
#
Real. The original publish date stands. When a post needs updating, the body is revised and a "Last updated" line is added. The URL and date stay put.
-
#
Short quotes with a link back are welcome. For full reposts or syndication, get in touch via the contact page first.
-
#
No. Every article published here comes from client work, training delivery, or problems I have solved on live projects. Guest pitches are closed. -
#
One person: me, Christopher Ross. Every post comes from work I delivered or trained on. No ghostwriters, no AI drafts, no syndicated agency content.
-
#
Yes. I handle redirect mapping, canonical consistency, and internal-link validation as core deliverables, not afterthoughts. Those three protect your search performance through the move, and skipping any one of them is how migrations quietly shed traffic.
Appears on: EmDash to WordPress Migration
-
#
I start with a full audit of your current content, templates, and URLs, then define migration rules for each before anything moves. Phasing it that way means I catch the edge cases on a handful of pages instead of all at once on launch day, so quality stays predictable rather than a surprise.
Appears on: EmDash to WordPress Migration
-
#
After launch I monitor your key pages, resolve the migration edge cases that surface once real traffic arrives, and tune the structure where it needs it. Most issues show up in the first days of live use, so that early window is where I stay closest.
Appears on: EmDash to WordPress Migration
-
#
Before launch I map your URL behaviour, metadata, and internal links, then build a redirect plan so old addresses land on the right new pages. I keep the existing structure intact wherever I can, because organic equity you’ve spent years earning is the easiest thing to lose in a migration and the hardest to win back.
Appears on: WordPress vs EmDash
-
#
It is a strong fit when teams need faster structured publishing, cleaner template consistency, and scalable governance without sacrificing SEO quality.
Appears on: WordPress vs EmDash
-
#
No. I build the authoring workflow around how your team actually publishes day to day, not around the platform’s quirks. At handoff I include written guidance and walk the team through it, so people can keep posting confidently the week after go-live.
Appears on: WordPress vs EmDash
Contact
-
#
One business day, Monday to Friday. If you send the form on a Saturday morning you will hear back Monday; if you send it Tuesday at 10am you will hear back by Wednesday at the latest. The reply comes from me directly, with either rough scope and a number or an honest pass.