Work Omnia Physical Therapy
Turning ad clicks into CRM leads for a physical therapy clinic
For Omnia, the website's real job is the path from a paid click to a patient the clinic can call back. The Next.js site sends every enquiry straight into GoHighLevel at the right pipeline stage, and reports conversions to Google Ads accurately enough to judge the ad spend by real leads.
- Role
- Sole developer: build, CRM integration and ongoing Google Ads
- Stack
- Next.js 16 · React 19 · TypeScript · Tailwind CSS · Sanity · GoHighLevel · GA4 · Google Ads · Vercel
- Links
- Live site · Source on GitHub
Every enquiry lands in the right CRM pipeline stage
Each submission is cleaned up and upserted into GoHighLevel, and an opportunity opens in the intake pipeline. Pipelines and stages are looked up by name, so the clinic can rename or reorder its stages freely and the site will say so clearly if anything needs updating.
Because contacts are upserted, a returning patient updates their existing record, which keeps the CRM clean and free of duplicates.
Every form field reaches the CRM intact
GoHighLevel accepts custom fields by key, so every key is copied straight from the CRM's own settings and documented where it is used. Every answer a patient types arrives in the right field.
The integration also handles the CRM's API versions gracefully: it uses the documented version and falls back once to the one the live accounts expect, so leads keep flowing either way.
Accurate Google Ads conversion tracking
The conversion event on the paid-traffic landing page fires exactly once per lead, even if a visitor double-clicks submit or the page re-renders.
That accuracy pays off directly. Google Ads optimizes bids against conversion data, so a clean count means the budget goes toward the clicks that really turn into patients.