67 new patients/month. $38 per booked appointment.
A 3-practitioner Ottawa wellness clinic — physiotherapy, massage, acupuncture — with a 6.2-second WordPress site, a 0.4% contact form conversion rate, and a previous consultant on record saying Google Ads does not work for wellness clinics. It does. We rebuilt the site and proved it.
The problem
The clinic had been open for seven years. Three practitioners, strong Google reviews (4.8 stars, 140 reviews), and enough word-of-mouth to stay busy — but the owner wanted to grow, add a fourth practitioner, and stop depending entirely on referrals to fill the calendar.
The WordPress site was built in 2019 and had never been touched. 6.2-second load time on mobile. Layout that broke below 768px. One contact form buried on the contact page. The Google Business Profile was doing real work — people searched, found the reviews, clicked through, and then mostly left. The site was leaking patients who had already decided they wanted to book.
A previous marketing consultant had spent three months on the account, told the owner that Google Ads does not work for wellness clinics, and departed without running a single campaign. The owner was skeptical of paid acquisition as a result.
Project details
Client type
3-practitioner Ottawa wellness clinic
Services
Web Rebuild · Google Ads · Local Service Ads · SEO
Timeline
8 weeks to first paid patient · 4-month optimisation
Outcome
67 new patients/month · $38 CPL · CVR 0.4% to 2.1%
A fast, mobile-first site
Six pages on Next.js 16: home, three service pages (physiotherapy, massage therapy, acupuncture), about, and contact. 1.8-second load time on mobile. Lighthouse performance score: 98. Click-to-call sticky on every mobile screen. Contact form above the fold on every service page, not just the contact page.
Condition-specific landing pages
Five condition-specific pages targeting the highest-volume Ottawa searches: physiotherapy for lower back pain, sports injury rehab, chronic pain management, prenatal massage, acupuncture for anxiety. Each built around patient language with FAQ schema — genuinely useful pages that also ranked.
Google Ads + Local Service Ads
Search campaigns targeting condition-specific keywords — not generic physiotherapy Ottawa which attracts comparison shoppers. LSA applied in week 3 (12-day verification for healthcare). Google Guaranteed badge improved click-through for local near-me queries and charged per lead, not per click.
Results, by month
From 0 paid patients to 67 per month in four months.
What made the difference
Condition-specific pages, not generic service pages. These pages did the bulk of the SEO lift and also converted paid traffic better. A patient landing on a page specifically about physiotherapy for lower back pain is already qualified — the page does not have to work as hard to explain relevance.
Online booking removed the biggest friction point. Phone calls converted at 40% — patients who called usually booked. But the booking form converted at 72%. The people willing to book online were more committed, not less. They had already decided; the phone call was friction, not a filter.
LSA proved cheaper than standard search for local queries. For searches with local intent, LSA cost less per booking than standard search — partly because the Google Guaranteed badge reduced hesitation and partly because LSA charges per lead, not per click.
On the previous consultant claiming Google Ads does not work for wellness clinics: the error was targeting the wrong keywords. Generic healthcare terms are expensive because they attract comparison shopping. Condition-specific terms attract patients who have already identified their problem and are looking for a provider. Different intent, different economics.
What it cost
CAD 7,200 for the site build (5 weeks, fixed scope). Google Ads management CAD 1,200/month ongoing. Discovery sprint CAD 800, credited toward the build. Ad spend separate, paid directly by the client — started at $1,500/month, scaled to $2,400/month by month 4.
At $38 per new patient and an average lifetime value of roughly CAD 900 (4 visits per new patient, average per-visit: ~$225), the math on paid acquisition is straightforward. Every dollar in ad spend returns approximately 23x in patient revenue over a 12-month window.
The stack
Next.js 16 (App Router) + TypeScript on Vercel
Acuity Scheduling (embedded online booking)
Google Ads (Search campaigns + Local Service Ads)
GA4 + Google Search Console
JSON-LD schema (MedicalBusiness, FAQPage, BreadcrumbList)
Start a project like this
Running a wellness or healthcare practice?
If your Google reviews are good but your site is not converting them — or if someone has told you Google Ads does not work for your category — send us your URL. We will tell you what the actual blockers are before you commit to anything.