Roofing Contractor & Trades Website Design — Kansas City

Black Swan Media Solutions builds roofing websites, contractor websites, and trades website design in Kansas City. This case study shows how we built Garrison Roofing — a Lawrence, KS roofing contractor — a high-performance Kansas City roofing website engineered for local SEO, fast load times, and qualified leads. The build included a brand-aligned visual design, service and location page architecture, lead-engineered CTAs and a contact flow, local SEO with schema and structured data, and a care plan covering hosting, updates, and monthly reporting. If you run a roofing, HVAC, plumbing, electrical, or other trades business in Kansas City, Overland Park, or Lawrence and need a website that ranks locally and converts visitors into booked estimates, this is the kind of work we do.

The brief.

When Klay Garrison reached out, Garrison Roofing had four decades of reputation in Lawrence and almost nothing to show for it on the web. The existing site was a brochure: serviceable, dated, and invisible to most of the people typing "roofer Lawrence KS" into a phone after a storm.

The brief had three constraints. First: convert the post-storm browser. Most Garrison leads start on a phone, in a moment of urgency — after a hailstorm, after a leak, after a denied insurance claim. The new site had to load fast on a Lawrence-area phone signal and put the phone number in front of the visitor before they had to think about it.

Second: rank for local intent. Garrison's competitors include "storm chasers" — out-of-state operations that show up after a hailstorm, take the insurance money, and disappear. The site had to be readable to Google as a Lawrence-area, family-owned, three-generation roofing contractor — every structured-data signal pointing the same direction. The Garrison build is the template for a trades website design Kansas City project: lead-generation site, local SEO, and before/after photography that loads fast on a phone.

Third: speak to homeowners, not procurement officers. No B2B-speak, no "stakeholder," no "synergy." Klay's words. The Garrison voice.

The approach.

We built audit-grade. Every decision documented. Every metric measured. Every deliverable reviewed against the brief before it shipped. Where Clinical Precision Meets Creative Vision.

Architecture. Custom-coded, prerendered for crawlers. The page is readable to Google before any JavaScript runs. Hand-built per project, not a templated reskin or page-builder output. Just code that does exactly what the brief asked for.

Schema markup. Every page ships JSON-LD structured data targeting the entity types Google's roofing-services result blocks read: RoofingContractor + LocalBusiness + Service + Offer + City. The markup describes Garrison as a Lawrence-area roofing contractor — not just another small-business website.

Core Web Vitals at the contract level. LCP, CLS, INP targets were written into the build spec, not bolted on as an afterthought. We tested on a real device at week 3, again at launch, and again at day 14. Targets met cleanly on desktop. The mobile LCP gap and what we're doing about it are described in the build-quality numbers below — honest framing is the discipline.

Local-SEO ground game. Service area named explicitly: Lawrence, Topeka, Overland Park, Shawnee, Johnson County, Douglas County. Phone visible on every page. NAP consistency across the site, the schema, and directory listings. The site reads as a roofing contractor website Kansas City homeowners can call directly, because it is.

Content discipline. Every page title under Google's display limit. Every meta description tight, unique, and CTA-anchored. Every page exactly one H1, keyword-anchored to local intent. Zero missing image alt texts. Audit-grade content quality, every page.

Four weeks. Three milestones. Every artifact documented.

Week 1 — Discovery. Free 30-minute call. We mapped what Klay was trying to build, what the storm-damage funnel looked like, what success would look like, and which Core Web Vitals targets mattered for the traffic mix. Output: a written scope and a fixed price.

Weeks 2–3 — Design and build. Hand-coded, custom-built. Hand-shot photography from a Garrison job site. On-site footage of the truck and crew at a real reroof. Real interior portraits of the third-generation owner. Forms wired to email and SMS so a request arrives in Klay's pocket within seconds of submission.

Week 4 — Launch and monitoring. Smoke-tested on real devices in Lawrence. 14 days of post-launch Core Web Vitals monitoring at no charge. Google Search Console and Google Analytics wired in. The first ranking and analytics data started flowing 28 May 2026.

The roofing contractor website Kansas City pattern, executed end to end in four weeks.

The build quality, in numbers.

Source: Google PageSpeed Insights, May 31 2026, garrisonroofingllc.com.

Desktop Performance: 97 of 100. Every desktop Core Web Vital at target. Largest Contentful Paint: 1.1 seconds (target under 2.5 seconds). Cumulative Layout Shift: 0 (perfect; target under 0.1). Total Blocking Time: 0 ms (perfect; target under 200 ms). First Contentful Paint: 0.9 seconds. Speed Index: 0.9 seconds. Accessibility: 88. Best Practices: 100. SEO: 92.

Mobile Performance: 70 of 100. Honest gap, documented plan. Largest Contentful Paint: 5.1 seconds (target under 2.5 seconds — known optimization opportunity). Cumulative Layout Shift: 0 (perfect). Total Blocking Time: 10 ms (excellent). Accessibility: 89. Best Practices: 100. SEO: 92.

The mobile LCP is a known optimization opportunity tied to hero-image delivery and the photo carousel. We disclose it, we have a 30-day plan to address it (image format conversion to modern codecs, lazy-load tuning, edge optimization), and this case study will be updated when those numbers land. That is the audit-grade move: publish the gap, document the plan, ship the fix, update the public record. Brand discipline beats brand polish.

Site-wide audit verification, every page on garrisonroofingllc.com: All six site-wide technical-SEO foundation checks pass (HTTPS, single canonical hostname, 404 handling, favicon, robots.txt, trailing-slash redirects). Every page title within length targets, all unique. Every meta description within length targets, all unique. Exactly one H1 per page, every H1 keyword-anchored to Lawrence intent. Zero missing image alt texts. Self-canonical URLs verified on every page. Comprehensive JSON-LD structured data: RoofingContractor + LocalBusiness + City on all four pages; Service + OfferCatalog + Offer on the relevant pages. Zero broken internal links. Zero orphaned pages.

Early signal, month one.

Source: Google Search Console + Google Analytics, 29 April – 28 May 2026.

Within thirty days of launch, garrisonroofingllc.com ranks position 4 on Google for "garrison roofing lawrence ks" — a top-five result for the brand-plus-local query, in launch month.

Thirty sessions in the launch month. Baseline established. All current channel traffic is direct, as expected for a fresh launch before organic compounds. Google Search Console and Google Analytics began streaming data 28 May 2026 — the trend-data clock is started.

Five non-branded Lawrence-area roofing keywords are under active monthly measurement: lawrence ks roofers, lawrence ks roofing contractors, roof repair lawrence ks, roof replacement lawrence ks, family owned roofers lawrence ks. This case study will be updated at day 90 with the trend data those measurements produce.

What this build will not do.

We will not promise rankings. No honest agency can. Google's algorithm is a black box, the local SERP changes weekly, and any agency promising you a specific position is selling either luck or risk. What we guarantee is the work: documented audit-grade process, Core Web Vitals targets written into the spec, schema markup verified at launch, monthly reports of what changed and why, and the ability to walk away with everything you paid for. That's the discipline. What happens in the rankings is Google's to decide. The work is ours to do right — and yours to keep.

Common questions.

Why did Garrison choose Black Swan over the SEO firms calling them? Klay had been called by storm-chaser SEO agencies for years — the same outfits that target his industry after every hailstorm. The Garrison engagement was the opposite of that pattern: written scope, fixed price, documented process, code handed over clean. No monthly retainer treadmill, no rankings promise, no agency-locked CMS. The build is yours on day one.

What does a roofing contractor website Kansas City build like Garrison's actually cost? Marketing-site builds in this pattern run $9,500 to $14,000 depending on photo session scope, schema depth, and integration count (SMS, email, calendar). E-commerce or web-app additions are scoped separately. Every quote is fixed before we start.

Will my site rank as well as Garrison's? We do not promise that. Ranking depends on your competitive landscape, your domain history, the quality of your content, and what Google's algorithm decides on any given Tuesday. What we control is the build quality: Core Web Vitals targets, schema markup, internal architecture, and the technical signals Google reads. Those we execute to spec.

Who actually owns the site after launch? You do. Domain, hosting, code, content, photography library. On day one and on day one thousand. If you ever want to leave, you leave with the keys.

Contact Black Swan Media Solutions — craig@blackswanmediasolutions.com · 785-550-2830

Where Clinical Precision Meets Creative Vision.