I charged $500 for a WordPress site that made my client $47,000 in its first year. I know the exact number because he told me, while asking for a “small discount” on the redesign.
That was the project that broke something in my brain about pricing. Not anger. More like clarity. I’d been treating my rates like a number I picked off Upwork instead of a reflection of what the work actually produced.
It took me another year to actually fix it. But when I did, my average project value tripled. And the clients got better at the same time.
Why Hourly Rates Are Killing Your Business
Hourly billing sounds fair. You work, you get paid. The client knows exactly what they’re getting. Clean, logical, professional.
It’s also the worst way to price creative and technical work. And I say this having run projects on hourly billing for years before switching.
Here’s the problem: hourly billing punishes you for getting better. When you’re new, a WooCommerce migration takes 20 hours. After three years, it takes 8. At $75/hour, you just cut your revenue from $1,500 to $600 for the same result. The client pays less and you deliver more. That’s not a business model. That’s a productivity trap.
I ran exactly this scenario in 2020. A WooCommerce migration from Magento, 8 hours of actual work, $600 at my hourly rate at the time. That migration saved the client $2,000 a month in platform fees. Over a year, that’s $24,000 in savings. I made $600 for delivering $24,000 in value.
The other thing hourly billing does is shift the client’s focus from outcomes to timesheets. They start watching hours. They question line items. They worry about inefficiency. And suddenly you’re in a negotiation about time instead of a conversation about results.
Value-based pricing kills that conversation before it starts.
The Three Pricing Models That Actually Work for Developers
Not every project fits the same model. I’ve used all three of these at different points, and the right one depends on the project type and client relationship.
Package pricing is what I use for standardized builds. A WordPress site with X pages, Y plugins, and Z integrations. Set scope, set price. No timesheets, no hourly debates. When I switched to package pricing for WordPress builds, I stopped getting “how many hours will this take” questions almost entirely. The client buys an outcome, not time.
Value-based pricing works for custom work where the business impact is measurable. A landing page for a product launch. A booking system for a service business. An e-commerce checkout optimization. The price is based on what success is worth to the client, not on hours I’ll spend. A checkout optimization that increases conversion from 2% to 3% on a $50K/month store is worth a lot more than the 15 hours it takes to build.
Retainers are for ongoing relationships. Monthly maintenance, growth work, strategic advisory. These are recurring revenue that smooths out the feast-or-famine cycle most freelancers live in. I’ll talk more about retainer structure in a separate piece, but the short version: scope them tightly, price them on outcomes, and require a minimum commitment.
The middle tier of your package pricing will always convert best. It’s not a theory. It’s pricing psychology, and it’s consistent across every industry. Price your premium option higher than you’re comfortable with, make the middle option the obvious choice, and let the starter option exist for clients who might upgrade later.
How to Calculate Your Minimum Viable Rate
Before you can price on value, you need a floor. A number below which you won’t go regardless of how the client frames the project.
Start with your annual income target. Let’s say $60,000. That’s what you need to cover your life.
Add taxes. In India, you’re likely looking at 20-30% depending on your tax bracket and structure. Add business expenses: hosting, software subscriptions, co-working space, equipment, professional development. For most solo developers, that’s $5,000-$10,000 a year.
So your actual revenue target might be $80,000-$90,000 to net $60,000.
Now divide by billable hours. Not total hours. Billable hours. And here’s where most freelancers get the math wrong: only about 60% of your time is actually billable. The rest goes to sales calls, proposal writing, client communication, accounting, learning, and the general overhead of running a business.
At 40 working hours per week, 50 weeks a year, you have 2,000 hours. 60% of that is 1,200 billable hours.
$85,000 divided by 1,200 hours = $70.83 per hour.
That’s your floor. Not your rate. Your floor. Your actual rate should be higher, because you’re not selling hours, you’re selling expertise, speed, and results.
For a developer in the US or Europe, these numbers look different. US developers charging $150-$200/hour are common for senior WordPress work. European rates cluster around €80-€120. Indian rates for international clients typically run $50-$100 depending on the type of work and your positioning.
The point isn’t the specific number. It’s the math behind it.
The Discovery Call Framework That Sets Up Premium Pricing
Pricing starts before you send a proposal. It starts in the first conversation you have with a prospect.
Most developers get this backwards. They jump to “what do you need?” and then start mentally calculating hours. The client gets a number. The client says it’s too high. Everyone feels bad.
The better approach: don’t discuss price until you understand the problem’s cost.
These are the five questions I ask every prospect before I quote anything:
- What does success look like for this project six months from now?
- What’s the business cost of the problem you’re trying to solve?
- What have you tried before, and why didn’t it work?
- Who’s involved in the decision, and what does their timeline look like?
- What’s your budget range for this?
Question two is the one that changes everything. When a prospect says “our old site isn’t converting,” that’s vague. When they say “we’re getting 800 visitors a month and converting 0.5%, and our average order value is $200,” now you can do math. Improving that conversion to 1.5% is worth $1,600 a month, $19,200 a year. A $5,000 website pays for itself in three months.
That’s a different conversation than “how much for a website.”
The client who understands the value of the project is the client who doesn’t negotiate on price. They’re investing, not spending.
Building Your Service Packages (With Examples)
Here’s a simplified version of how I’ve structured WordPress build packages. The exact numbers aren’t the point. The structure is.
Starter ($1,500-$2,500): 5-page WordPress site, standard theme, basic on-page SEO setup, mobile responsive, 30-day support. No custom development. This tier exists for small businesses and solopreneurs who need something clean but don’t need anything custom.
Professional ($4,000-$7,000): 10-15 page WordPress site, custom design from approved wireframes, WooCommerce or booking integration, performance optimization, 60-day support, basic analytics setup. This is the tier I want most clients to buy.
Enterprise ($10,000+): Full custom WordPress development, custom plugin work, complex integrations (CRM, ERP, third-party APIs), dedicated staging environment, 90-day support, monthly maintenance included for the first three months.
A few things about this structure:
The price gaps between tiers are deliberate. There’s a $2,000+ jump from Starter to Professional, and a $3,000+ jump from Professional to Enterprise. That gap makes Professional look like a reasonable middle ground, not an expensive option.
Everything is described in terms of outcomes and inclusions, not hours. “60-day support” not “10 hours of post-launch support.” It’s the same thing, but the framing matters.
The Enterprise tier is priced high enough that clients who genuinely need it don’t blink, and clients who are just testing the water self-select into Professional.
Handling the “That’s Too Expensive” Objection
“That’s too expensive” is the objection most developers dread. And most of them handle it wrong. They discount.
Don’t.
First, figure out which version of the objection you’re actually hearing. There are two:
The first is “I don’t understand the value yet.” This client might be your best future client. They just need more context. Respond by connecting the price to the business outcome. “This $5,000 site should generate your first 50 leads within 90 days. What’s a lead worth to your business?” Let the math speak.
The second is “I genuinely can’t afford this.” This is a different situation. Don’t lower the price. Adjust the scope. “Our Professional package is $5,000. If budget is a constraint, our Starter package at $2,000 gets you the essentials and we can phase in the more complex features over time.” You keep your rate. You adjust the deliverables.
Three real scenarios I’ve navigated:
A client pushed back on a $6,000 WooCommerce build saying they’d gotten quotes for $1,500. I asked what those quotes included. No migration of existing products, no payment gateway setup, no performance testing. Their “cheaper” quote was for a fraction of the scope. We compared apples to apples and they signed at $5,500.
A startup founder said the price was too high for where they were. That was true. I referred him to a developer at my older, lower rate instead of discounting my own. He came back two years later for a $12,000 project when the business was further along.
A nonprofit asked for a discount. I offered a payment plan instead of a rate reduction. Same total, different cash flow pressure. They said yes.
When to Raise Your Prices (and How to Tell Existing Clients)
There’s a simple signal that you’re underpriced: you’re booking out more than two months ahead consistently.
Supply and demand applies to your time. If you’re always full, you’re too cheap.
I raised my rates 40% for new clients in 2022. Not all at once. I started quoting new projects at the higher rate and stopped mentioning the change. Within three months, the higher rate was just my rate. No one negotiated harder at the new rate than at the old one.
For existing clients, I give 60 days notice and I’m specific about what’s changed. Not “market rates have gone up.” That’s vague and it sounds like an excuse. Instead: “I’ve added two new capabilities to my toolkit that I’ll be bringing to your next project, and my scope and support commitment has expanded. Starting in March, my rates for new work will reflect that.”
When I did this for my maintenance retainer clients, I kept 85% of them. The 15% who left weren’t upset. Most of them acknowledged the rate was fair. They just didn’t have the budget. That’s fine. Better to know now than to resent the work later.
Raising prices is uncomfortable every single time. It never stops being uncomfortable. But the alternative is staying at a rate that made sense three years ago and doesn’t reflect what you can actually deliver now.
You’re not charging for your time. You’re charging for your expertise, your speed, and the certainty you bring to a project that a cheaper option can’t match. Price accordingly.
Here’s what I’d do if I were starting over. I’d pick one client project from last year, calculate the business impact it created, then compare that to what I charged. The gap between those two numbers is your pricing problem, spelled out in dollars. You don’t need a course on pricing. You need 20 minutes with a spreadsheet and the honesty to look at what you find.
Check out must-have tools for freelancers and productivity tools for freelancers for the software side of running a professional operation. For proposal management and client communication, Google Workspace handles everything I need, and Monday keeps project scopes tracked against what was agreed.
If you need more detail on the business side of website pricing specifically, I’ve written about it separately with a more formula-driven approach.
Frequently Asked Questions
Should I show my prices on my website or keep them hidden?
Show price ranges, not exact prices. “Projects start at $2,500” filters out price-shoppers without locking you into a fixed number before understanding scope. Hiding prices entirely means discovery calls get clogged with prospects who can’t afford you. Ranges are the middle ground.
How do I price WordPress maintenance plans separately from builds?
Maintenance retainers should be priced as a separate service, not an add-on. Three tiers work well: basic (updates, backups, monitoring at $99-$149/month), professional (plus reporting and minor changes at $249-$349/month), and growth (optimization, A/B testing, strategy call at $500+/month).
What’s the best way to handle clients who negotiate every line item?
Stop itemizing. A proposal that lists 47 line items invites negotiation on 47 things. A proposal that lists three packages and their outcomes invites a yes or no. If a client insists on itemizing, adjust scope, not rate.
Should I charge more for rush projects?
Yes. 25-50% more for projects with less than two weeks of runway. Rush work displaces other projects and forces concentrated effort. A 50% surcharge on a $5,000 project is $2,500. It also filters out clients who don’t actually have an urgent deadline.
How do I transition existing hourly clients to package pricing?
Frame it as a benefit for them. “Instead of tracking hours, you’ll get a fixed monthly scope with no surprises on the invoice.” Most clients appreciate the predictability. Offer one final hourly month, then pitch a package that covers roughly what they’ve been using.
When should I raise my prices?
If you’re booking out more than two months ahead consistently, you’re too cheap. Start quoting new projects at the higher rate. For existing clients, give 60 days notice and be specific about what’s changed. When I raised rates 40%, I kept 85% of retainer clients.


