Back to Projects

Poopy Poochy – A Service Business That Runs Itself

A custom WordPress theme for a dog waste removal company in St. Clair County: nine city landing pages generated from one template, a five-step quote calculator that files every lead as a record, and an editing surface the owner can use without calling me.

Poopy Poochy wordmark and mascot logo

Project Details

Tags

WordPress Custom Theme PHP ACF Pro Local SEO Accessibility Client Work

Challenge

A dog waste removal service is a local business in the most literal sense. Nobody searches for it nationally; they search for it by the town they live in. The company covers St. Clair County and northern Macomb, which is nine separate towns, each of which needs its own page that ranks, prices correctly, and does not read as a copy of the other eight.

The second constraint mattered more. The owner runs a route, not a CMS. Anything that required a developer to change a price, add a town, or swap a photo would quietly rot the moment the invoice was paid — I have inherited enough of those sites to know how the story ends.

The obvious route was a page builder on a purchased theme. That solves the first week and then bills you for the next three years: nine near-duplicate pages maintained by hand, a DOM heavy enough to drag Core Web Vitals down on the mobile connections the actual customers use, and an editing experience where the owner is one misplaced drag away from breaking the layout.

Solution

I built a classic WordPress theme from scratch, with Advanced Custom Fields driving the content. No page builder anywhere in the stack. Every editable thing is a labelled field in the admin, and every layout decision stays in code where it cannot be dragged loose.

Poopy Poochy home page at phone width, showing the hero headline card over the quote form

375px

Poopy Poochy home page at tablet width

768px

Poopy Poochy home page at desktop width

1366px

The home page at the three widths it was built and checked against. Captured from the development site during the build, before the pre-launch gate came down.
Two towns, one template. Pricing, testimonials, and areas served are per-city fields, so each page carries local detail a duplicated page never would.

Designing the Mascot

The business had a name doing a lot of comedic work and nothing to hang it on. I drew the mascot in several poses before committing, because the pose is not decoration — it decides what the character is for. Waving belongs in a hero. Thumbs-up belongs at the end of a completed booking. The clipboard pose belongs anywhere the site is asking the visitor for information, which turned out to be most of the quote flow.

Four poses, four jobs. Drawing the set before building meant each page already had the right expression waiting for it.

Decisions Worth Defending

Three of these came out of the hero video system, which sounds like a small feature and was where most of the interesting problems lived.

The whole build is organised around one question: what happens the day I stop answering the phone? Every answer — leads in the database, prices in fields, colors in the Customizer, towns as a post type, a written owner guide and an admin launchpad pointing at all of it — is a version of "the owner keeps working."

Outcome

The site is live at poopypoochy.com and the business is running on it.

9City landing pages from a single template
5Step quote calculator, priced on real variables
0Page builders, plugins-as-layout, or licensed dependencies required to render

The lesson I took from this one was about where to spend adjustability. My instinct was to expose everything; what worked was exposing the four or five things the owner would actually want to change on a Tuesday — price, phone number, a photo, a town — and hard-coding the rest. Control the client never uses is not a feature, it is a surface area for breaking things.