A prospect asks what SEO costs, and you realise you've quoted different figures this month for roughly the same work, each one set by how confident you felt on the call. Pricing by feel wears you out and leaks margin on every deal you win.
The way out is to price on effort you can predict and outcomes you control. Then you write the scope so that you and the client can both see, on paper, when a request falls outside it.
Separate what you control from what you influence
Pricing goes wrong when the three layers of an engagement get mixed up.
Inputs are the hours you spend and the deliverables you ship, and you control them completely. Outputs are rankings and organic traffic. You influence those, though Google and the client's own site both sit between your work and the result. Outcomes are leads and sales, and they depend on the client's offer and on how fast their team answers the phone, which you rarely touch.
Price on inputs and sell on outcomes, then report on every layer. Google's own Do you need an SEO? guidance says nobody can guarantee a first-place ranking, so a fee that depends on one is a guarantee in disguise. Pay-per-lead and pay-per-rank deals move all the risk of things you don't control onto you. They only make sense when you also run 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.
- In Productising SEO services you fixed the deliverable list; now count what each package includes per month.
- Estimate the hours each deliverable takes by role, strategist and writer for instance, and include revisions, because clients ask for them.
- Add the unbilled work. Calls and emails fill more of the month than anyone plans for, and chasing access and answering quick questions add to it before you even build the report. Most underpricing comes from leaving this out.
- Multiply by each role's loaded cost, which is salary plus the overhead that keeps the person employed.
- Add the client's share of your tooling.
- Add the margin the business needs to survive a slow quarter.
Take a made-up mid-tier retainer: a couple of articles, an on-page pass, a re-audit review and a monthly report. The team estimates the writing and strategy hours, then adds time for the calls and emails nobody planned. Price those hours at loaded rates, add the client's share of tooling and a margin, and you have the floor for that package.
If the floor sits above what clients in that segment will pay, the package is too big for them. Remove deliverables instead of discounting, since a discount teaches the client that the price was never real.
Anchor the conversation on the client's upside
The client is buying a bigger business, which makes hours the wrong thing to lead with. Before you name a price, size the opportunity in their terms: the search demand for the terms that bring customers, the share they could plausibly win, how their site converts and what a customer is worth to them. Present it as a labelled range with the assumptions written beside it, and set the fee next to it.
The comparison does two jobs. A good-fit client sees the fee against what's at stake. You see, before the proposal goes out, when the fee would swallow most of the modelled gain, which is your signal to offer a smaller package or decline. Selling an engagement that can't pay for itself gets you a client who churns in a bad mood.
Offer tiers instead of a single number, since people choose between options and negotiate against one figure. When a prospect wants something between two tiers, pick the closer one and attach an add-on. A custom package is one nobody on your team has a run-sheet for.
Write scope that stops scope creep
Scope creep grows in gaps, and four of them do most of the damage: an undefined "done", things the client assumed were included, urgent requests that feel too small to refuse, and a culture where saying no seems rude. A scope document closes each of them.
Name the package and list its deliverables with a count per month. Then write the exclusions in plain words. Implementation on the client's site and design work sit outside unless the scope says otherwise. So do paid ads and link buying, and so do migrations and emergency work. 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, and approvals from a named decision-maker within an agreed number of working days. Say what happens to the month's deliverables when approvals stall, so a late client doesn't turn into 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 no longer shows the issue. A report is done once it's been sent.
Give every out-of-scope request an easy path: a short written quote the client can accept in one reply. Once yes to extra work is routine, "that's outside the scope, here's a quote" is an ordinary sentence instead of a confrontation.
When accepted findings become tasks with an owner and a month, that task list is the scope in writing, and a new request becomes a concrete question: which task does this replace?
Frequently asked questions
Does doing SEO cost money?
Yes, because time goes into every deliverable, even when you do the work yourself. For an agency the cost is hours by role plus the unbilled work, the client's share of tooling and a margin, and together those form the floor of the package. The fee has to sit above that floor and stay within what the client's modelled upside supports.
What is the average cost of Semrush enterprise?
This lesson doesn't quote a price for any tool, and enterprise plans are quoted by the vendor, so ask them directly. What you can do is treat the subscription as the client's share of tooling in your costing and divide it across the clients who use it. If that share lifts a package's floor above what its segment will pay, trim deliverables instead of discounting.
Can ChatGPT do SEO?
It can speed up some deliverables, which lowers the hours you estimate for them. The rest still needs a person to make the calls, collect the approvals and confirm a page is live. Price on the effort that remains, and don't promise a ranking because a tool helped produce the content.
What to take away
- Price on the inputs you control and 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 and the unbilled work around them, then add tooling and margin. When the floor is too high for a segment, remove deliverables instead of discounting.
- 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.
- A scope holds when it lists exclusions and client dependencies, and when every deliverable has a definition of done.
Next
A priced package with a written scope is ready to run. The next lesson gives you the sequence that starts every client the same way: Onboarding a client in a week.