Cost per new patient closed
—
Per new patient seen
—
Show rate → close rate
—
—
New-patient funnel —
—
Results reported by Meta result types are not interchangeable — they are not summed blindly
| Result type | Campaigns | Results | Spend | Cost per result | Counted as leads |
|---|
—
Booked vs kept, by appointment profile DrChrono, all patients
| Profile | Booked | Kept | Lost | Show rate |
|---|
—
Why patients don't close decline reasons logged in the stats workbook
| Code | Reason | Branch | Count | Share |
|---|
—
Revenue by service line posted in window, all patients
| Service line | Codes | Charges | Collected | % of collections |
|---|
—
Cost per dollar sold, by service
| Service | Campaigns | Ad spend | Collected | Cost per $1 | Return |
|---|
Campaign-to-service attribution is inferred from campaign naming, not tracked. Cost per $1 under $0.30 reads green, under $0.60 amber, above that red.
Data quality
What this still can't tell you
- Revenue is not split new vs returning. DrChrono's financial reports have no new-patient filter and no lead-source field, so charges and collections cover all patients. Appointment counts are split — the "New Patient Visit" profile is a real, clean cohort.
- Closed comes from a different system than seen. DrChrono marks an appointment attended, not sold. Closes are staff-logged in the stats workbook, on the workbook's own booked and arrived counts, which do not match DrChrono's. Both bases are shown above rather than reconciled.
- Service-to-campaign mapping is inferred from campaign names and code families. Campaigns that match no pattern land in unallocated and are shown, not hidden.
- Cash and charges run on different clocks. Collections include payments on claims billed before the window and prepaid package drawdowns; charges booked in the window collect later.
- The one fix: write the GHL contact ID or UTM source into a DrChrono custom patient field at booking, and tag the acquiring appointment. That single field turns every ratio here from inferred to measured.