01 · The goal
Optimise for booked visits, not cheap leads
A cheap lead who never answers the phone costs more than an expensive one who books. So the campaign is judged on what happens after the form: did the clinic reach them, did they book, did they show up.
02 · Who we're talking to
Three people this offer is built for
The putter-offer
25–55, hasn't seen a dentist in over a year. Not scared of the drill; scared of the bill and the lecture. Needs: a known price and a promise of no judgement.
The busy parent
Books for the whole family, can't take time off. Needs: evening and Saturday slots, one visit that does everything, direct insurance billing.
New to the area
Moved to Mississauga, hasn't picked a dentist yet. Needs: a low-risk first visit to try the clinic out.
Targeting settings
- Location: people living within ~8 km of the clinic. Most patients won't drive further for a check-up.
- Age: 25–60. No interest targeting at the start; Advantage+ audience with the location limit, and let the creative do the targeting.
- Exclude: the clinic's existing patients (uploaded customer list) and anyone who already submitted the form.
- No health-condition targeting or copy. Meta doesn't allow ads that imply someone has a condition ("Do your gums bleed?"), so the hooks talk about the visit, not the patient's mouth.
03 · The funnel
Hook → offer → booked visit
04 · The ads
Four hooks to test first
Each hook answers one reason people put the visit off. Every concept runs as a static image and a short vertical video, so we learn which message wins, not which format.
Don't pay.
check-up.
Video versions (15–25 s, vertical)
- Dentist to camera: the dentist says the guarantee in her own words. Real person, real clinic, one take.
- The walk-through: 60-minute visit in 15 seconds: front desk, X-ray screen, cleaning, written plan handed over.
- Patient story: only with a real patient's written consent, and only if the regulator allows it. Otherwise skip it.
05 · Campaign structure
Two campaigns, kept simple so Meta learns fast
| Campaign | Objective & event | Audience | Ads | Budget share |
|---|---|---|---|---|
| 1. New patients (prospecting) | Leads, optimised for the website Lead event (form submit) | 8 km radius, 25–60, Advantage+ audience, existing patients excluded | 4 hooks × image + video = 8 ads, one ad set | ~80% |
| 2. Come back (retargeting) | Leads, same event | Landing-page visitors (30 days) and 50% video viewers, minus anyone who submitted | Guarantee + "spots left this month" + FAQ answers | ~20% |
Later test: Meta's instant form against the landing page. Instant forms usually give cheaper leads but fewer bookings, so the winner is picked on cost per booked visit, never on cost per lead.
06 · First 30 days
Test, cut, then scale
Find the hook
All 4 hooks live with equal creative weight. Don't touch anything for the first 5–7 days so the ad set can learn.
Cut the losers
Pause any ad that has spent 2× the target cost per lead with no lead. Put the budget behind the top 2 hooks; make 2 new versions of the winner.
Scale carefully
Raise the budget about 20% every 3–4 days while cost per booking holds. Stop scaling the moment the clinic is near 24 bookings for the month.
07 · Tracking
Count bookings, not clicks, and count each one once
Events
| Event | When it fires |
|---|---|
| ViewContent | Landing page loads |
| Lead | Form submitted (browser pixel + Conversions API) |
| Schedule | Front desk marks the lead "booked" in the CRM |
| Purchase ($79) | Patient shows up and pays |
Rules I'd hold to
- One event_id per action, shared by the pixel and the Conversions API, so Meta deduplicates. I've seen a pixel count every sale twice; the fix is to check against real records, not trust Ads Manager.
- UTM on every ad (campaign / hook / format), so the CRM shows which hook booked which patient.
- Weekly reconciliation: Meta's Lead count against the clinic's own lead list. A gap of more than ~10% means tracking is broken.
- No health details in events. Only name, phone and booking status go to the CRM; nothing about treatment goes to Meta.
08 · Funnel maths
What it takes to fill 24 spots estimate
Every input below is a planning assumption, not a promise and not a result. After the first two weeks they get replaced with the clinic's real numbers. Move the sliders to see how each one changes the cost of a booked visit.
Starting values are my planning assumptions for a local new-patient offer. They are not benchmarks from a real clinic.
09 · Before anything goes live
Check the dental regulator's advertising rules first
Dentists in Canada are regulated by their province (in Ontario, the RCDSO), and those rules can limit testimonials, guarantees and how prices are advertised. Hook 3, the patient reviews and the "regular price" comparison on the landing page all get checked against the current standard, and rewritten if needed, before a single dollar is spent.
10 · Reporting
What the clinic gets every Monday
The 4 numbers
Spend, booked visits, cost per booking, show rate. Week on week, in one table.
What won
Which hook booked the most patients, and the next variation I'm testing because of it.
One ask
The one thing the clinic can do to lift results: usually calling leads faster.