Home / Our Work / Sable & Steam
Case study

Sable & Steam: Building a Carpet Cleaning Site That Competes With National Franchises

A carpet and upholstery cleaning business in Marietta, built from nothing into a 20-page site with structured data, a custom quote form and a Google Business Profile filled out to the last field.

At a glance

What Was Built

20
pages built from scratch
2
search campaigns prepared
Full
schema on service pages
0
form plugins depended on
The situation

A Category Owned by Franchises and Lead Apps

Carpet cleaning is one of the hardest local categories to enter. The top of the page belongs to national franchises with advertising budgets that no independent operator can match, and immediately underneath sit the lead-generation apps — Thumbtack, Angi and the rest — which sell the same job to four competitors and take a cut regardless of who wins it.

An independent cleaner has two options. Rent leads forever at a shrinking margin, or own the search results that the big players consider too small to chase.

Sable & Steam went with the second one.

The build

Twenty Pages, Each With One Job

A page per service, not a services list

Carpet cleaning, upholstery, pet odor and stain removal each got a real page instead of a paragraph, because those are separate searches with separate intent and separate prices.

Structured data on every service page

LocalBusiness and Service schema so Google can read the business, the service area and the offer without inferring it from prose.

A custom quote form with photo upload

Built into the site rather than added by plugin. The customer photographs the stain, which makes an accurate quote possible before anyone drives out.

A thank-you page from day one

Without a dedicated confirmation URL, a lead is invisible. With one, every submitted quote is countable and traceable back to the page that produced it.

Google Business Profile filled out completely

Categories, services, attributes and service areas mapped to what people actually search, not to what the drop-down suggests first.

Search campaigns built and ready

Two campaigns, keywords grouped by intent, with negative keyword lists written before launch instead of discovered by wasting money.

The detail that mattered

We Corrected the Industry Number and Made It the Argument

Almost every carpet cleaning site in America says carpet dries in four to eight hours. It is repeated so often that it reads like a fact.

It is not true for a heavily soiled carpet. The real range is closer to eight to eighteen hours, depending on how dirty the carpet actually was. A cleaner who quotes four hours is either working on lightly soiled carpet or setting the customer up to be annoyed.

So the site says eight to eighteen. That sounds like a worse selling point and it is a better one, because the customer who reads it and books is not going to call back angry the next morning. Accurate content also happens to be what the search engines are trying to reward.

This is the part most agencies skip. Writing content that is actually correct requires knowing the trade. It is much easier to copy the number everyone else published.

The security decision

Why the Form Has No Plugin Behind It

Contact form plugins are the single most common way small business sites get compromised. They handle file uploads, they process untrusted input, and they are installed on millions of sites, which makes them worth attacking.

The Sable & Steam quote form was written into the site directly, with the protections built in rather than trusted to someone else: a nonce and a honeypot against bots, a time trap against instant submissions, rate limiting per IP address, an extension whitelist, real image validation rather than a filename check, randomized stored filenames, and a server rule blocking PHP execution inside the upload folder entirely.

We tested it by trying to upload a malicious PHP file to our own form. It was rejected. That is the test worth running before a real customer finds the hole.

Where it stands

Producing Organic Leads

The site is live at sablesteam.com and producing organic leads — customers finding the business through search rather than through a paid app that takes a percentage.

That is the whole point of the exercise. A rented lead costs money every single time. A page that ranks costs money once.

See the same playbook applied to a house cleaning business and to an appliance repair business.

Questions, answered

Frequently Asked Questions

Competing for attention against national franchises with enormous ad budgets and against lead apps that already own the top of the page. The answer was not to outspend them. It was to cover the specific searches they treat as too small to bother with.

Because a form plugin is a permanent dependency with its own security history. We built the form directly into the site, with the photo upload, rate limiting and file validation handled in code we control.

Yes, and it changes the sales conversation. A customer photographs the stain, which means the quote can be accurate before anyone drives out. That saves a trip on jobs that were never going to close.

Want This Built for Your Business?

Free audit of your site and your Google Business Profile, with the findings written out plainly.

Get My Free Audit