Most small business websites cost somewhere between a few hundred and a few thousand dollars to build, plus $20 to $300 a month to keep running. That’s the honest range, and you’ll find it in every article on this topic.
What those articles skip is the question that actually matters: what is the website supposed to do for you? A $20 site and a $300 site can both show your phone number. Only one of them is built to bring in customers who’ve never heard of you. And the cheapest quote is often the most expensive one, not because of the price on page one but because of what’s on page three of the contract.
I run a small web design and local SEO company, and we publish our prices. So this post gives you real numbers, including ours, and a real story from here in Lubbock about what “cheap” cost one owner.
First: what do you need the website to do?
There are two very different jobs a local business website can do.
Job 1: a place to land. Someone got your name from a neighbor, saw your truck, or picked up your card. They look you up to check you’re real, see a few photos, and call. The website’s job is to not lose them.
Job 2: a way to get found. Someone who has never heard of you searches “landscaper near me” or “fence repair Lubbock.” Your website, together with your Google Business Profile, is what decides whether you show up and whether they pick you over the next listing. The website’s job is to bring you new customers.
If you only need Job 1, you don’t need to spend much. If you want Job 2, the cheap options won’t do it, no matter what the sales pitch says. Most of the money in web design is the difference between these two jobs.
The four ways to get a website, and what each one costs
Typical ranges for a five-to-ten-page site for a local service business: a landscaper, a plumber, a realtor, a moving company.
| Option | Upfront | Monthly | What you’re really paying for |
|---|---|---|---|
| Do it yourself (Wix, Squarespace, GoDaddy) | $0 | about $20–$50 | Software. The design, the writing and the fixing are on you. Fine for Job 1. |
| ”Low-cost” agency package | $0 | as low as $20, often rising to $100+ once you need anything, on a 12–24 month term | A template page on the agency’s platform. Read the story below. |
| Freelancer | $1,000–$5,000 | Hosting, plus edits billed hourly | One person’s skill, which varies a lot. Ask what happens if they disappear. |
| Agency built for search | $2,000–$15,000+ | $100–$500 for hosting, edits and SEO | A site written for your business and your searches, built to do Job 2. |
A real story from Lubbock: the $20 website
A landscaper here in Lubbock was setting up his LLC and needed a website. He found an agency offering one for $20 a month and signed a 24-month agreement. For a new business, it seemed like the sensible choice.
What he got was a single page. No real photos of his work, large blocks of generic filler text, and none of the basics that help a site show up in search.
So he asked for one edit: add his own photos and cut the filler. Here’s what happened:
- The request took three weeks to get a response.
- Making the edit moved him to $100 a month, for the rest of the 24-month term. The $20 price only covered the site as delivered. Changes meant a higher tier.
- The edit itself arrived after a month of back-and-forth and unanswered messages. It was barely different. The new photos and the cuts he asked for weren’t really there.
He thought he’d signed up for 24 months at $20, or $480 in total. If the edit came through in month two, he’s now on course to pay about $2,240 for a one-page site that looks no better than when he started.
The lesson isn’t that the agency broke its contract. It probably didn’t. The lesson is that when you pay very little, you are the lowest priority on someone’s list. A business that makes $20 a month from you can’t afford to answer you quickly, and the pricing is designed so that the moment you need something, you pay more.
The two-year cost, side by side
Compare options over two years, because that’s how long the contracts in this market run.
| Setup | 2-year cost | What you own at the end | Does it bring in new customers? |
|---|---|---|---|
| DIY builder, ~$35/mo | ~$840, plus your evenings | Your content. The design stays locked to the builder. | Rarely, unless you know SEO |
| “Low-cost” agency, $20/mo as signed | $480 on paper | Usually nothing: no files, sometimes not the domain | No |
| The same package after one edit in month 2 | ~$2,240 | Still nothing | No |
| Our website plan, $200/mo | $4,800 | The site. We hand over the source files after 12 months. | It’s built to: written for your trade and searches, matched to your Google profile |
| Our website + Deep Local SEO, $300/mo | $7,200 | Same | Yes, this is the plan built for it (see below) |
| Our one-time build, $2,000 | $2,000 + your domain (about $10–20 a year) | Everything, source files included, from day one | Built for it at launch. Ongoing SEO isn’t included. |
Some honest notes on that table:
DIY and “low-cost” do the same job. A $20 agency page and a $35 DIY site both do Job 1: they give referrals and people who see your truck somewhere to land. The agency version doesn’t do that job any better. It just takes away your ability to fix it yourself. If Job 1 is all you need, DIY is the better deal.
Our one-time build is the cheapest real website over two years. The domain goes on your own card, so it’s yours, and we don’t charge monthly hosting on it. Edits are included for the first month; after that, we quote them as needed. It’s the right choice if your services don’t change much and you’d rather own an asset than pay a subscription.
The monthly plan costs more because of what it keeps doing. Ten months of the $200 plan costs the same as the one-time build. What you get for that is unlimited edits live within 48 hours, hosting and security, and no $2,000 upfront. Because we’re spreading the build cost over time, we hand over the source files after 12 months rather than on day one. After that, the site is yours whether you stay or go.
What you’re actually paying for when you pay more
The jump from $20 to $200 or $300 isn’t about a prettier homepage. It’s about three things.
1. A website that works for you, not just one that exists
A site that brings in new customers is built around what people in your area actually search for: each service you offer, described in your own words, with real photos of your own jobs. It loads fast on a phone, makes calling you one tap, and gives Google a clear picture of what you do and where.
That’s what our Deep Local SEO add-on ($100 a month on top of the website plan) is for. Each month we:
- write two blog posts aimed at questions your customers search for,
- send an SEO report: where you rank, what moved, and which pages bring in calls,
- adjust the site based on those results, rewriting the pages that are close to ranking and building out the ones that are working.
That’s the difference between a website as a business card and a website as a source of new customers.
2. A website that helps your Google Business Profile rank
When someone searches for a local service, the map results at the top of Google are where most of the calls go. Your website feeds those results. When your site and your Google profile say the same thing (same services, same service area, same business name and phone number), Google is more confident about what you do and where, and your profile has a better chance of ranking.
A template page with filler text says nothing specific. It doesn’t help your profile, and it can’t.
3. Being someone’s priority
Our landscaper waited three weeks for a reply. At $20 a month, that’s the economics working as designed. When you pay a fair price to a company that doesn’t need to lock you in, you get your edits in 48 hours, your questions answered by the person doing the work, and a reason for them to keep you happy every month, because you can leave.
The SEO trick to watch for: copy-paste “service pages”
This is the one that catches the most owners, because it’s sold as SEO.
The pitch goes: “We’ll build you a page for every service in every town you serve.” You get “Lawn Care in Lubbock,” “Lawn Care in Wolfforth,” “Lawn Care in Shallowater,” “Sprinkler Repair in Lubbock,” “Sprinkler Repair in Wolfforth”... dozens of pages, sometimes hundreds. It looks like a lot of work, and it’s often the main thing in the monthly SEO bill.
Open two of them side by side. Usually it’s the same text with the town name swapped.
Google sees through this. Its spam policies name pages like these directly. Doorway pages are near-identical pages built to rank for each town. Scaled content abuse means mass-producing pages that add nothing new. At best, Google ignores the copies and picks one. At worst, it treats the site as low quality and the good pages suffer too. Either way, you’re paying monthly for pages that do nothing.
What works instead:
- One strong page per service you actually offer, with real detail: what’s included, what it costs or what affects the price, photos of your own work, the questions customers ask you.
- Town pages only where you have something real to say: jobs you’ve done there, local conditions (soil, water restrictions, HOA rules), reviews from customers there. If a page would read the same with a different town name, it shouldn’t exist.
Ask any agency selling SEO: “Can I see two of the location pages you built for another client?” Then read them side by side.
What a bad website contract looks like
The Lubbock story isn’t unusual. Here’s what to look for before you sign.
1. A low price that only covers the site as delivered. Ask what an edit costs. Ask whether any change moves you to a higher tier, and for how long.
2. A term of 12 or 24 months. A long term isn’t automatically bad, but ask why it’s needed. If a company needs two years to make your business worth its time, it’s pricing the risk onto you.
3. “Early termination” means paying the rest of the term. If leaving in month six means paying for months seven through twenty-four, you haven’t bought a website. You’ve signed a loan.
4. Auto-renewal. Many agreements renew for another full term unless you cancel in writing 30–90 days before the end date. Put that date in your calendar the day you sign.
5. The domain is registered in their name. Your domain (yourbusiness.com) is printed on your cards, your truck and your Google listing. It should be registered in your name and paid with your card.
6. “You own your content,” but not the website. This usually means you keep your words and photos. The design and the pages stay on their platform, and when you leave you start from zero.
7. They own your Google Business Profile. That listing is where most local calls come from. You should be the owner. An agency should be a manager you can remove.
Seven questions to ask before you sign
Copy these into an email and send them to every company you’re considering. How fast and how clearly they answer tells you as much as what they say.
- What does a single edit cost, and does any change move me to a higher price?
- Is there a minimum term? What does it cost to cancel in month six? Does it auto-renew?
- Whose name and card is the domain registered under?
- If I leave, what do I take with me: the files, the design, the domain, the Google profile?
- Who writes the words on the site, and will they be written for my business specifically?
- If you build location or service pages, can I see two you built for another client?
- How fast do you answer a request, and who answers it?
What we’d tell you on a call
- Decide which job you need. A place for referrals to land? DIY is fine. New customers from Google? That’s what you’re paying a professional for.
- Compare the two-year cost, not the monthly price. And ask what one edit does to that number.
- Own your domain and your Google profile, whoever builds the site.
- Pay monthly if your site will change or you want it actively bringing in customers. Buy outright if it won’t.
If you already signed a contract and aren’t sure what you agreed to, send it to us. We’ll read it and tell you in plain English what it costs to leave and what you’d keep, free.
If you’re in Lubbock, here’s how we build sites locally.