A prospect asks what SEO costs, and you realise you've quoted three different figures this month for roughly the same work, each one based on how confident you felt on the call. Pricing by feel is exhausting, and it leaks margin on every deal you win. The fix is to price on the effort you can predict and the outcomes you control, then write the scope so that you and the client can both tell, in writing, when a request sits outside it.
Separate what you control from what you influence
Every SEO engagement has three layers, and pricing goes wrong when they're mixed up.
Inputs are hours, deliverables and quality. You control these completely. Outputs are rankings, impressions and organic traffic. You influence these, but Google, competitors and the client's own site sit between your work and the result. Outcomes are leads, sales and revenue. These depend on the client's offer, how well their pages convert, how fast their sales team answers the phone, and the season.
Price on inputs. Sell on outcomes. Report on all three. Google's own Do you need an SEO? guidance says nobody can guarantee a first-place ranking, and a fee that depends on one is a guarantee in disguise. Pay-per-lead or pay-per-rank deals move all the risk of things you don't control onto you; they only make sense when you also control the landing pages, the offer and the follow-up, which is rare.
Cost the package before you price it
A price you can defend starts from what the package costs you to deliver.
- For each package, list the deliverables per month, using the fixed list from Productising SEO services.
- Estimate the hours each deliverable takes, by role: strategist, writer, account manager, developer if you have one. Include revisions, because clients ask for them.
- Add the unbilled work: calls, emails, chasing access, answering "quick questions", building the report. Most underpricing comes from leaving this out.
- Multiply by each role's loaded cost, meaning salary plus the overhead that keeps them employed.
- Add the client's share of your tooling.
- Add the margin the business needs to survive a slow quarter.
In a made-up example, your mid-tier retainer is two articles, one on-page pass, a re-audit review and a monthly report; the team estimates twelve hours of writing, six of strategy and four of account management, then adds three more for the calls and emails nobody planned. Those made-up twenty-five hours at your loaded rates, plus the client's share of tooling, plus margin, is the floor for that package. If the floor is higher than clients in that segment will pay, the package is too big for them, not too expensive: remove deliverables rather than discount, because a discount teaches the client that the price was never real.
Anchor the conversation on the client's upside
The client isn't buying hours; they're buying a bigger business. So before you name a price, size the opportunity in their terms: how much search demand exists for the terms that bring them customers, what share of it they could plausibly win, how their site converts, and what a customer is worth to them. Present the result as a range with the assumptions written next to it, never as a forecast, and let the fee sit beside the range.
That comparison does two jobs. It lets a good-fit client see the fee against what's at stake. And it tells you, before the proposal goes out, when the fee would swallow most of the modelled gain. That's the signal to offer a smaller package, or to decline. Selling an engagement that can't pay for itself is how you acquire a client who churns in a bad mood.
Offer tiers rather than a single number. People choose between options; they negotiate against one figure. When a prospect wants something between two tiers, pick the closer one and add an add-on, rather than building a custom package that nobody on your team has a run-sheet for.
Write scope that stops scope creep
Scope creep grows in gaps. The four gaps are an undefined "done", things the client assumed were included, urgent requests that feel too small to refuse, and a culture in which "no" seems rude. A scope document closes each one.
Name the package and list its deliverables with a count per month. Then write the exclusions in plain words: implementing code changes on the client's site, design, paid ads, buying links, migrations, and emergency work all sit outside unless the scope says otherwise. A client who reads the exclusion list at signing rarely argues about it in month three.
State what you need from the client, with dates: access by a named day, a named decision-maker, and approvals within an agreed number of working days. Say what happens to the month's deliverables when approvals stall, so a late client doesn't become a late agency.
Define "done" per deliverable. An article is done when it's published and you've confirmed it's live. A fix is done when the developer has shipped it and the next audit shows it gone. A report is done when it's been sent, not when it's been drafted.
Give every out-of-scope request an easy path: a short written quote the client can accept in one reply. When saying yes to extra work is routine, "that's outside the scope, here's a quote" stops being a confrontation and becomes an ordinary sentence.
Finally, once accepted findings become tasks with an owner and a month, that task list is the scope in writing. A new request then turns into a concrete question, "which task does this replace", instead of "can you just".
What to take away
- Price on the inputs you control, sell on the outcomes the client cares about, and report on rankings and traffic in between, without guaranteeing any of it.
- Cost every package from hours by role, unbilled work, tooling and margin, and remove deliverables rather than discount when the floor is too high for a segment.
- Size the client's upside as a labelled range and let the fee sit beside it; if the fee would swallow the gain, offer less or decline.
- Scope holds when it names exclusions, client dependencies, a definition of done, and an easy quote path for everything else.
Next
A priced package with a written scope is ready to run; the next lesson gives you the five-day sequence that starts every client the same way: Onboarding a client in a week.