Marketing Site · Trinity Climate Control
Trinity Climate Control — Central Oklahoma HVAC marketing site
A purpose-built marketing site for an Oklahoma HVAC operator: 24/7 emergency dispatch, transparent install-cost ballparks, multi-step quote forms posting straight into FieldPulse CRM, and Central-Oklahoma local SEO.

The problem
Trinity Climate Control runs 24/7 HVAC service across Central Oklahoma. The previous web presence read like every other local-services template: stock photography, vague service blurbs, a contact form that dropped leads into an email inbox. In a category where homeowners are searching at midnight, in summer, with no AC, the site has seconds to communicate three things — we cover your city, we're available right now, and you can request a quote without a phone call.
What we built
A purpose-built marketing site at trinityclimate.comcovering core services (install, repair, maintenance), service-plan tiers, transparent install-cost ballparks, an emergency contact path, and a cities-served section anchored to Central Oklahoma. The build prioritizes mobile load speed and a single, frictionless quote-request flow that lands directly in Trinity's dispatch system.
What the site has to do
- Make 24/7 emergency dispatch obvious in the first viewport on mobile.
- Communicate the cost ballpark of a new HVAC install before a homeowner picks up the phone.
- Carry the service-plan offer (maintenance subscriptions) without burying it under marketing copy.
- Rank for Central Oklahoma HVAC queries — Norman, Moore, Edmond, OKC.
Technical highlights
Quote form posts straight into FieldPulse
The quote form is a multi-step Formik / Yup flow that posts to a Next.js API route, which proxies the submission into Trinity's FieldPulse CRM as a real appointment request — not an email Trinity has to re-key into their dispatch software. Custom field IDs are mapped server-side, so a future CRM migration is a single-file change rather than a form rebuild. The CRM API key never touches the browser.
MDX for content, no headless CMS
Blog posts, FAQs, and pricing tiers live as versioned .mdxand TypeScript files in the repo. For an HVAC operator that updates copy a few times a year, a Sanity / Contentful subscription is overhead that doesn't pay for itself. Trinity edits content the same way the developer does — through a pull request — and gets git history for free.
Local SEO surface, not stock copy
City pages are real pages with real coverage details — Norman, Moore, Edmond, OKC — not boilerplate spun out of a template. Schema.org LocalBusiness markup, OpenGraph image generation per route, and FAQ schema on the FAQ page are all wired in. The point is to actually rank, not to look like the site is trying to rank.
Stack
- Next.js 16 (App Router) + React 19 + TypeScript
- Tailwind CSS 4
- MDX (next-mdx-remote, gray-matter, rehype-slug, remark-gfm) for blog and FAQ content
- Formik + Yup for multi-step quote form, posting to FieldPulse via internal API route
- Nodemailer for internal lead notifications
- Google Analytics 4 (via @next/third-parties) + Vercel Analytics
- Vercel for hosting + Open Graph image generation (@vercel/og)
Outcome
Trinity is live at trinityclimate.com, ranking for Central Oklahoma HVAC queries and routing real quote requests directly into the dispatch system. Specific traction figures will be added once the client has approved the public version of this case study.
Why it matters to clients
Most local-services sites either look like 2014 or like a generic page-builder template that could be any HVAC company in any state. Trinity's build proves a small operator can have a site that loads fast on a phone, ranks locally, and routes leads straight into the back-office system they already use — without a monthly retainer, without a CMS subscription, and without a platform that owns their data.