How We Built the Full Marketing Stack for a Mobile Detailing Business
From zero to 188 five-star reviews. 132 pages ranking. Automated SMS confirmations. Stripe-integrated booking. Google Calendar sync. Here's every layer of the system we built for Sumptuous Mobile Detailing.
5-Star Google Reviews
Indexed Website Pages
Lead Response Time
SMS Automation Triggers
Most marketing agencies will sell you a website and call it a day. What we built for Sumptuous Detailing is something different: a complete, integrated revenue system — from the first Google search to the confirmed booking, the automated SMS confirmation, the Google Calendar event, and the follow-up that brings customers back.
This is the full breakdown. Every layer. Every tool. Every decision.
Client Overview
The Starting Point
When we took on Sumptuous Detailing, the owner — Darren — was running a legitimate operation in one of the most competitive mobile detailing markets in the Southeast. NE Atlanta is saturated with detailers. The incumbents had years of reviews and established GBP presence.
The challenge wasn't service quality — that was already there. The challenge was visibility, conversion, and operational efficiency. Darren was losing leads because there was no system to capture them, no automation to follow up, and no booking flow that removed friction. We built the system from the ground up.
Layer 1: The Website — Built to Rank and Convert
The website at sumptuousdetailing.com is not a brochure. It's a lead-generation and conversion engine built on a custom React + TypeScript stack with a MySQL database, tRPC API layer, and full server-side rendering capabilities.
The Technical Foundation
| Layer | Technology | Why |
|---|---|---|
| Frontend | React 19 + TypeScript | Component-based geo page generation at scale |
| Styling | Tailwind CSS 4 | Consistent design system across 132 pages |
| Backend | Express + tRPC | Type-safe API, no REST boilerplate |
| Database | MySQL (TiDB) | Appointments, leads, SMS logs, settings |
| Payments | Stripe Checkout | Frictionless online booking with card capture |
| SMS | OpenPhone API | Automated confirmations and follow-ups |
| Calendar | Google Calendar API | Real-time appointment sync |
| Automation | Zapier Webhooks | Lead routing and email drip sequences |
132 Pages. Built Programmatically. Ranking Individually.
This is where most detailing websites fail. They have one page for "car detailing" and one page for "ceramic coating." That's it. They're competing for the same two keywords as every other detailer in the city.
We built 132 individual pages — each one targeting a specific service + location combination. Every geo page has unique H1 copy targeting the city + service, LocalBusiness schema markup with city-specific coordinates, unique body copy referencing local context, internal links to the booking flow, canonical tags, and full Open Graph metadata.
Page Architecture
Service Hub Pages
- • /car-detailing (primary)
- • /ceramic-coating (primary)
- • /luxury-car-detailing
- • /tesla-detailing
- • /bmw-detailing
- • /mercedes-detailing
Geo Pages (60+ cities × 2 services)
- • /car-detailing-alpharetta-ga
- • /ceramic-coating-alpharetta-ga
- • /car-detailing-johns-creek-ga
- • /ceramic-coating-johns-creek-ga
- • /car-detailing-suwanee-ga
- • ...30+ more cities each
Blog Content (30+ posts)
Long-tail informational content targeting "is ceramic coating worth it," "Georgia pollen vs ceramic coating," "tree sap removal guide," and 27 more high-intent queries.
Schema Markup — The GBP Amplifier
Every page fires a LocalBusiness JSON-LD schema block with the business name, phone, address, geo coordinates, aggregate rating (5.0 / 188 reviews), and operating hours. This schema signals to Google exactly what the business is, where it operates, and what customers think of it — reinforcing the GBP listing on every page load.
The site also includes a full SEO admin dashboard where page titles, meta descriptions, canonical URLs, OG images, and schema markup can be edited per-page — and the sitemap regenerates on demand covering all 132 pages with appropriate priority values.
Layer 2: Google Business Profile — The Local Pack Engine
The GBP listing is the single most important ranking factor for local service businesses. Here's the current state of the Sumptuous GBP:
The Review Velocity Strategy
188 five-star reviews didn't happen by accident. The review request is baked into the post-service automation sequence. The day after every completed service, an automated follow-up SMS fires with a direct review request link. Every review receives a personalized owner response within 24 hours — Google weights owner response rate as a ranking signal.
The GBP "From the Owner" post section is updated weekly with seasonal content (pollen season, UV protection, winter prep), service spotlights, and local market context — each post with a direct booking CTA linking back to the relevant service page.
Layer 3: Local Services Ads — Pay-Per-Lead Above the Fold
LSA (Google Guaranteed) puts Sumptuous Detailing above the organic results and above standard Google Ads. Unlike PPC, LSA charges per verified lead — not per click — which fundamentally changes the economics for a high-ticket service business.
The LSA profile is connected directly to the GBP, so the 188 reviews and 5.0 rating display prominently in the ad unit. This is why review velocity matters — every new review strengthens the LSA position. With average ticket values of $170–$850+, even a $40–$50 CPL is highly profitable.
Layer 4: The Booking System — Multi-Step, Stripe-Integrated, Zero Friction
The booking flow at /booking is a custom-built, 8-step wizard that walks customers through every decision and captures payment before the appointment is confirmed.
The 8-Step Booking Flow
The Double-Booking Prevention System
Most booking systems get this wrong. The slot-blocking logic accounts for the full service duration plus a buffer. Each booking blocks 7 consecutive 30-minute slots (3.5 hours total: 2.5hr service + 30min buffer). Critically, both pending and confirmed appointments block slots — this prevents double-booking during the Stripe checkout window. If payment fails or times out, the slot releases automatically.
Layer 5: Lead Capture — Three Things Happen in Under 60 Seconds
Every page on the site has a quote form capturing name, phone, email, and vehicle. When a lead submits, three things happen simultaneously:
1. Owner SMS Alert (OpenPhone)
New lead from [Name]. Vehicle: [2022 Honda Civic].
Phone: [770-XXX-XXXX]. Email: [[email protected]].
Darren gets this on his phone within seconds. No checking email. No dashboard login.
2. Customer Booking Link SMS (OpenPhone)
Hey [First Name], thanks for reaching out! Book here:
https://reservedetail.as.me/ – Darren with Sumptuous
Detailing 770-609-0138 | https://g.co/kgs/mnXuAFn
The customer gets a booking link and the Google review link in the same message — moves them toward booking while intent is hot, and surfaces the 188 reviews for anyone who hasn't seen them yet.
3. Zapier Webhook → Email Drip Sequence
Lead data fires to a Zapier webhook that triggers a multi-step email nurture sequence. A separate webhook handles blog email popup signups — those leads enter a different education-focused sequence rather than a direct booking push.
Layer 6: Post-Booking Automation — The Confirmation Cascade
When a customer completes Stripe checkout, the checkout.session.completed webhook fires and triggers a cascade of automated actions:
Payment Confirmed → Cascade
Cancellation and Reschedule Flows
The system handles the full appointment lifecycle. Cancellations immediately release the slot, fire HTML-formatted emails to both the customer (with rebooking encouragement) and the admin, and send an SMS confirmation. Reschedules follow the same flow: old slot released, new slot blocked, confirmation email and SMS sent, Google Calendar event updated.
Layer 7: The Admin Dashboard — Operations from a Phone
The admin system was built mobile-first because Darren runs the business from his phone. The mobile dashboard at /admin/mobile-dashboard shows a weekly calendar snapshot (Sun–Sat grid with appointment counts), compact appointment cards with tap-to-call and tap-to-navigate, and a Quick Pay link generator for on-site upsells.
Admin Leads Pipeline
Every quote form submission enters the pipeline. The dashboard shows conversion rate, total leads, new leads today, total bookings, pending bookings, and monthly revenue — all from live database queries.
Layer 8: The Blog — 30+ Posts Targeting Long-Tail Intent
The blog at /learn is not filler content. Each post was written to target a specific search intent — informational queries that rank for customers who are researching before they buy.
High-Intent Informational
- • Is ceramic coating worth it?
- • Ceramic coating vs wax — complete guide
- • Is paint correction necessary before ceramic coating?
- • Is ceramic coating worth it for a leased car?
Local + Seasonal
- • Georgia pollen vs ceramic coating
- • How to keep your car clean in Buford, GA
- • Why Alpharetta needs detailing and ceramic coating
- • Pollen car detailing Gwinnett County
Problem / Solution
- • Black stuff on my car paint
- • Tree sap removal guide
- • How to remove water spots from car paint
- • How to remove smoke smell from car interior
Vehicle-Specific
- • Ceramic coating for Cybertruck
- • Ceramic coating vs PPF
- • Dealership ceramic coating — what you're really buying
- • BMW detailing guide
The Full System — At a Glance
TRAFFIC SOURCES
├── Google Organic (132 pages × geo + service targeting)
├── Google Business Profile (188 reviews, 5.0 stars)
├── Local Services Ads (Google Guaranteed, pay-per-lead)
└── Social (Instagram, Facebook, TikTok, YouTube)
↓
WEBSITE (sumptuousdetailing.com)
├── Quote Form → Lead Capture
│ ├── Owner SMS alert (OpenPhone, <60 seconds)
│ ├── Customer booking link SMS (OpenPhone, <60 seconds)
│ └── Zapier webhook → Email drip sequence
│
├── Booking Flow (8-step wizard)
│ ├── Real-time slot availability (database)
│ ├── Double-booking prevention (pending + confirmed blocking)
│ └── Stripe Checkout (card capture)
│ ↓
│ STRIPE WEBHOOK (checkout.session.completed)
│ ├── Database: status → confirmed, paymentStatus → paid
│ ├── Stripe: payment method attached to customer
│ ├── Owner notification (instant)
│ ├── Google Calendar: event created
│ └── Customer SMS confirmation (OpenPhone)
│
└── Admin Dashboard (mobile-first)
├── Weekly calendar snapshot
├── Quick Pay link generator (custom Stripe sessions)
├── Leads pipeline (New → Contacted → Qualified → Converted)
├── SEO manager (per-page meta, schema, sitemap)
└── Settings (SMS templates, email config, business info)The Results
What This Means for Your Business
Sumptuous Detailing is a real business in a real competitive market. The system we built isn't theoretical — it's running, booking appointments, sending SMS messages, and generating Google Calendar events right now.
Speed wins leads. The customer who submits a quote form and gets a booking link in their SMS within 60 seconds books at a dramatically higher rate than the customer who gets an email 4 hours later.
Reviews compound. 188 reviews at 5.0 stars didn't happen in a month. It happened because the review request is automated, consistent, and frictionless. Every job generates a review request. Over time, that compounds into a GBP listing that dominates the local pack.
Geo pages capture intent at the city level. "Car detailing Alpharetta GA" and "car detailing Suwanee GA" are different searches from different people. A single "car detailing" page can't rank for both. 30 geo pages can.
The booking flow should remove every reason to abandon. Eight steps sounds like a lot. But each step is one decision, clearly presented, with a progress indicator. The alternative — a phone call or a contact form that leads to a 24-hour wait — loses far more customers.