Jetts Windows Zero to #1
A local window installation company with no online presence. We built them a site that generates 40+ organic leads per month, ranks #1 for 8 local keywords, and cost $0 in ad spend.
jettswindows.com ↗Built to convert.
Designed to rank.
jettswindows.com — Live since 2024
The Challenge
Jetts Windows had been running for years on word-of-mouth alone. No website, no Google listing, no digital footprint whatsoever. Meanwhile, competitors with mediocre work were winning bids simply because they showed up on Google.
The owner didn't need a "pretty website." He needed a machine that turns local searches into booked appointments. Fast load times, no friction, no fluff.
Our Approach
We didn't start with wireframes. We started with keyword research. Before writing a single line of code, we mapped every high-intent search term in their service area: "window installation near me," "window replacement [city]," "vinyl windows [county]."
Then we built a site engineered for one purpose: capture local leads as fast as possible. Every design decision, every piece of copy, every technical choice was made to reduce friction between "I need windows" and "appointment booked."
Mobile-first wasn't just a buzzword here. 67% of their traffic comes from phones. The entire quote request flow completes in under 30 seconds.
Built on a modern stack.
Optimized for speed.
Every tool chosen for a reason. No bloat, no legacy baggage, just the right technology for a site that needs to be fast, editable, and reliable.
Next.js 16
React Server Components, partial prerendering, and the App Router. Pages load in under 1.4 seconds on mobile. Static generation for service pages, dynamic routes for location-targeted content.
Sanity CMS
Structured content that the client can actually update. Service descriptions, testimonials, and project galleries all managed through a custom Studio. Real-time preview so they see changes before publishing.
Vercel
Edge deployment with automatic CI/CD. Every push to main triggers a build. Preview deployments for every PR. Global CDN ensures sub-second TTFB regardless of visitor location.
Local SEO Engine
JSON-LD schema markup for local business, services, and reviews. Google Business Profile optimization. Location-specific meta tags and Open Graph data generated dynamically per service area.
Tailwind CSS
Utility-first styling with zero unused CSS in production. Responsive breakpoints tuned for the exact devices their customers use. Dark mode ready, though this site keeps it clean and light.
Analytics + Tracking
Vercel Analytics for performance monitoring. Google Search Console for keyword tracking. Custom conversion events on every form submission, phone tap, and map click. Data-driven from day one.
Rotor Integration
We partnered with Rotor to integrate their system directly into the Jetts Windows quote form. Leads flow straight from the website into the client's existing workflow — no copy-paste, no missed inquiries.
How we built it.
Step by step.
Sanity CMS: Content the Client Controls
Why Sanity
Most local business sites die slow deaths because the owner can't update them. Sanity changes that. We built a custom Studio tailored to Jetts Windows, not a generic CMS with 400 features they'll never touch.
The client manages their own content: services, project galleries, testimonials, service areas, and business hours. No developer needed for day-to-day updates.
What We Configured
- Custom document types for Services, Projects, Testimonials, and Team
- Image pipeline with automatic optimization and responsive sizing
- Portable Text for rich service descriptions with embedded CTAs
- Real-time content preview through Next.js Draft Mode
- Structured content that feeds directly into JSON-LD schema markup
- Slug generation and validation for SEO-friendly URLs
Next.js 16: Performance Without Compromise
Architecture Decisions
We used the App Router with React Server Components to minimize client-side JavaScript. Service pages are statically generated at build time with ISR (Incremental Static Regeneration) so content updates go live without a full redeploy.
The quote request form is a Client Component, keeping the interactive parts isolated while the rest of the page ships as zero-JS HTML.
Performance Wins
- 1.4s mobile page load (Lighthouse 95+ performance)
- Server Components eliminate unnecessary client bundles
- Image optimization with next/image and Sanity's CDN
- Partial prerendering for instant navigation between pages
- Metadata API for dynamic, per-page SEO tags
- Route groups for clean code organization
Vercel: Deploy, Monitor, Iterate
Deployment Pipeline
Every commit to the main branch triggers an automatic production deployment. Feature branches get their own preview URLs, so we can share progress with the client before anything goes live.
Rollbacks are instant. If something breaks at 2 AM, one click restores the previous deployment. No downtime, no panic.
What Vercel Gives Us
- Edge network with 30+ global PoPs for sub-second TTFB
- Preview deployments for every pull request
- Vercel Analytics tracking real-user performance metrics
- Speed Insights identifying bottlenecks per page
- Automatic HTTPS and custom domain management
- Serverless functions for form handling and API routes
Local SEO: From Invisible to #1
The Strategy
We didn't just sprinkle keywords on a page. We built a systematic local SEO engine. Every service page targets a specific cluster of high-intent keywords. Location pages are generated for each service area. Schema markup tells Google exactly what this business does and where.
Within 3 months, Jetts Windows ranked #1 for 8 local keywords with zero ad spend.
Technical SEO Implementation
- JSON-LD LocalBusiness schema on every page
- Service-specific schema markup with pricing ranges
- Automated XML sitemap generation via Next.js
- Dynamic Open Graph images for social sharing
- Google Business Profile fully optimized and linked
- Internal linking structure designed for crawl efficiency
- Core Web Vitals all passing in green
Lead Generation: The 30-Second Funnel
The Flow
Most contractor websites bury the contact form on a separate page. We put a streamlined quote request on every single page. Three fields, one button, done. The form auto-detects the service they were viewing and pre-fills it.
On mobile, a persistent "Get a Quote" button floats at the bottom of the viewport. One tap, fill name and phone, submit. Under 30 seconds from "I need windows" to "appointment requested."
Conversion Optimization
- 12% form conversion rate (industry avg: 2-5%)
- Multi-step form reducing perceived complexity
- Service auto-detection from page context
- Mobile-persistent CTA with smart positioning
- Instant email notification to the business owner
- Form submissions tracked as conversion events
- A/B tested CTA copy and button placement
The numbers
speak for themselves.
From kickoff to #1.
Here's how it happened.
Discovery + Research
Keyword research across all service areas. Competitor analysis. Content strategy mapping. Defined the exact pages and structure needed to rank for high-intent local searches.
Design + Sanity Setup
Mobile-first UI design. Set up Sanity Studio with custom document types. Built the content model for services, projects, and testimonials. Client started adding content immediately.
Development + Integration
Next.js 16 build with App Router. Sanity integration with GROQ queries. Form handling with serverless functions. Schema markup implementation. Vercel deployment pipeline configured.
Launch + Optimization
Production deployment on Vercel. Google Business Profile setup. Search Console submission. Performance optimization pass. Analytics and conversion tracking configured.
Results: #1 Rankings Achieved
Within 3 months, ranking #1 for 8 local keywords. 40+ organic leads per month. 12% form conversion rate. The site was paying for itself many times over.
Let's build your
lead machine.
Tell us about your business. We'll show you exactly how we'd get you ranking and converting, in plain English.
Start the Conversation →