← All articles

Connect Marketing Spend to Kept Appointments

Carlos Rangel
Connect Marketing Spend to Kept Appointments
Marketing spend kept appointments: Track which marketing campaigns drive kept appointments.

Table of Contents

Last Updated: October 7, 2026

Why Most Clinics Can't Connect Marketing Spend to Kept Appointments

Most clinics track marketing in one system, patient data in another, and never connect marketing spend kept appointments to financial outcomes. A clinic spends $5,000 on paid search, books 20 patients, and never learns how many showed up. That's the gap. (Source: Statista's 2026 research)

Connecting marketing spend to kept appointments requires three things: a definition of "kept," a way to track patients from click to visit, and a system that ties cost to outcome. Without all three, reporting stays disconnected from the result that matters.

In our experience at The Marketing Lab, most clinics measure marketing by clicks, leads, or bookings, metrics that obscure whether marketing spend kept appointments actually happened.

The fix starts with clarity on what you're measuring.

Key Takeaway A kept appointment is one where the patient checks in and completes the visit. Marketing spend should be traced to this outcome, not to clicks or bookings alone.

Define What a Kept Appointment Actually Is

A kept appointment means the patient arrived, checked in, and was seen by a provider. It's not a booking. It's not a confirmation call. It's attendance plus completion.

Some clinics define it as "patient in chair." Others require "visit note documented." For billing purposes, a kept appointment is one where a charge was generated and recorded in your EHR. Use that as your baseline.

Why it matters: a booking system might show 20 new patients from a campaign, but 5 no-shows means 15 kept appointments.

Create a shared definition across your team:

  • Booked: Patient scheduled an appointment (call, online, walk-in)
  • Kept: Patient checked in and was seen (visit note exists in EHR)
  • No-show: Patient did not arrive or cancelled within 24 hours
  • Attended but incomplete: Patient came but left before provider visit (rare but track it)

Document this definition in your CRM and share it with billing and marketing. Consistency matters more than perfection.

Key Takeaway Define kept appointments as patients who checked in and completed their visit. Use this single definition across your CRM, EHR, and marketing reporting.

Build Your Cost Per Kept Appointment Formula

Cost per kept appointment is simple math: total marketing spend divided by kept appointments.

Here's the formula:

Cost Per Kept Appointment = Total Marketing Spend / Number of Kept Appointments

Example: $8,000 on a campaign drives 50 bookings. At a 20% no-show rate, 40 patients kept their appointments.

$8,000 ÷ 40 = $200 per kept appointment.

Track this by channel and campaign. Paid search might deliver $180 per kept appointment, email $45, organic search $90. Those differences guide your budget.

The formula works backward too: 100 kept appointments per month at $200 average cost means a $20,000 monthly budget. That sets realistic growth targets.

Metric Formula Example
Cost Per Booking Total Spend ÷ Bookings $8,000 ÷ 50 = $160
No-Show Rate No-Shows ÷ Bookings 10 ÷ 50 = 20%
Cost Per Kept Appointment Total Spend ÷ Kept Appointments $8,000 ÷ 40 = $200
Revenue Per Kept Appointment Total Revenue ÷ Kept Appointments $12,000 ÷ 40 = $300

Build this into a monthly dashboard. Update it weekly so you see trends early.

Key Takeaway Track cost per kept appointment by channel. This metric reveals which campaigns actually drive revenue, not just clicks.

Set Up Medical Practice Marketing Attribution in Your CRM

Your CRM is the hub, but a hub only works if every spoke reports to it.

Start with a stable internal key.

Then build one pipeline per service line, not one for the whole clinic. A PrEP pipeline and a 340B contract-pharmacy pipeline have different cadences and definitions of success.

  • Booked: Appointment scheduled, contact ID linked
  • Tested / Seen: Encounter documented in the EHR (structured field, not a scanned note)
  • Follow-Up Booked: Next visit on the schedule before the patient leaves
  • Lapsed: No kept visit inside the clinical cadence window

For injectable PrEP, run a separate pipeline: Booked, Tested, Visit 2 at one month, Maintenance every two months.

Identity matching is where most builds break. Common patterns:

  1. Duplicate leads. The same patient calls, fills a web form, and walks in. Deduplicate on normalized phone and email at intake, not on name.
  2. Household phones. One number can map to several patients. Never auto-merge on phone alone.
  3. Mid-levels under a supervising NPI. Attribution by rendering NPI will misassign visits if the TPA or scheduling config carries the wrong NPI. Reconcile against an EHR claims report by rendering NPI every quarter.
  4. Offline touches. Referrals from a hospital, health system, or specialty pharmacy often arrive with no digital source. Give front desk a required source field and a 'referral partner' picklist.
Administrator reviewing a CRM attribution pipeline with source tags and kept-appointment stages
Administrator reviewing a CRM attribution pipeline with source tags and kept-appointment stages
(Source: [the Centers for Medicare & Medicaid Services (CMS) guidelines](https://www.cms.gov/Regulations-and-Guidance/Guidance/Manuals/Paper-Health-Care-Financing-Administration-Manuals-Items/CMS021904))
Key Takeaway Use one internal contact ID from first touch to EHR encounter, one pipeline per service line, and deduplicate on normalized phone and email, never on name. Reconcile rendering NPIs quarterly so visits are not misattributed.

Use Healthcare CRM Appointment Tracking to Close Attribution Gaps

The biggest gap in healthcare marketing is no-shows. A patient books but doesn't arrive. Your marketing spend gets charged to a phantom appointment.

Your CRM should pull appointment status from your EHR daily: "no-show" flags the record, a completed visit note marks it "kept."

Book a Free Strategy Call →

This requires a two-way integration:

  • CRM sends appointment details to EHR at booking
  • EHR sends appointment status back to CRM after the visit
  • CRM updates the attribution pipeline automatically

Without this, you're manually checking the EHR to see who showed up. That's slow and error-prone.

In practice, this looks like:

  • Patient books through your website or phone
  • CRM records booking with source tag (e.g., "paid search")
  • EHR receives appointment confirmation
  • Patient arrives (or doesn't)
  • EHR records visit status
  • CRM updates pipeline: "Kept" or "No-show"
  • Marketing dashboard pulls the final count

Most EHR platforms can export appointment status daily. Use that export to update your CRM. If your systems don't talk natively, a data integration tool can bridge the gap.

Key Takeaway Integrate your CRM and EHR so appointment status (kept, no-show) flows back automatically. This closes the gap between marketing bookings and actual visits.

Implement HIPAA-Compliant Marketing Analytics

HIPAA compliance is the starting point, not a checkbox at the end. The rule that trips most clinics: PHI does not go into ad platforms, analytics tools, or any system without a signed Business Associate Agreement (BAA). That includes names, dates of birth, MRNs, diagnoses, test results, and anything that could reasonably identify a patient, including a hashed email tied to a sensitive service line.

What actually breaks in practice:

  • Pixels on pages that reveal a condition. A retargeting pixel on a PrEP landing page or an STD testing page can infer sensitive health status. Keep pixels off clinical and condition-specific pages, or use a consent-gated tag manager.
  • Conversion APIs fed with patient data. Sending hashed email or phone to an ad platform to match a booking back to a click is a common pattern, but it is a data transfer. Get it reviewed, keep the match inside your CRM where possible, and never send service-line or diagnosis context.
  • Analytics without a BAA. Standard Google Analytics is not a covered entity tool. If PHI could reach it, you need a BAA-covered configuration or a different tool.
  • SMS and email consent. A2P 10DLC registration requires separate consent checkboxes for customer-care versus promotional texts, STOP/HELP language, rates disclosure, and a no-purchase-condition clause. Promotional texts about a sensitive service line need extra care, no test or diagnosis names in the message.

The safe pattern we use in programs we run:

  1. Assign an internal contact ID at first touch, before the person is a patient.
  2. Keep the contact ID in the CRM and the MRN in the EHR; link them inside your systems, never in an ad platform.
  3. Report on aggregate counts, 'kept visits from paid search this month', not on individuals.
  4. Keep all PHI inside systems covered by a BAA.
  5. For bilingual populations, run outreach in English, Spanish, and Haitian Creole where relevant, and keep the same consent and PHI rules across every language.
Data element Can it go to an ad platform? Where it lives
Contact ID No CRM
MRN No EHR
Hashed email for match Only with review and a BAA-covered flow CRM-side match
Aggregate kept-visit counts Yes Internal dashboard
Service line or diagnosis No EHR / clinical systems
Watch Out Never put PHI, including service-line or diagnosis context, into ad platforms, pixels, or analytics tools that lack a signed BAA. Hashed identifiers are still a data transfer and need review.
Key Takeaway Keep PHI inside BAA-covered systems. Use an internal contact ID to link marketing to the EHR, report on aggregates, and keep pixels off condition-specific pages. Consent rules apply in every language you market in.

Common Attribution Mistakes and How to Avoid Them

Mistake 1: Counting bookings as kept appointments.

A booking is not a kept appointment. Measure bookings and a 30% no-show rate stays invisible.

Mistake 2: Not tracking source at intake.

Without a source tag at booking, you can't trace a patient back to the campaign.

Mistake 3: Mixing channels in one campaign code.

Mistake 4: Ignoring no-show rates by source.

Some channels drive more no-shows than others. Phone referrals might have a 10% no-show rate. Walk-ins might have 25%.

Mistake 5: Not updating the pipeline weekly.

Monthly pipeline updates leave you flying blind for 30 days.

Mistake 6: Attributing all credit to the first touch.

A patient might see your Google ad, then search your name, then call. Which channel gets credit?

Mistake Impact Fix
Counting bookings, not kept appointments Inflates campaign performance Define kept as visit completed; pull status from EHR
No source tag at intake Can't trace patients to campaigns Add "How did you hear about us?" to intake form
Mixing channels in one code Can't optimize by channel Use unique codes: Paid Search Brand, Organic, Email, etc.
Ignoring no-show rates by source Underestimates true cost per kept appointment Track no-show rate and cost per kept appointment by channel
Monthly pipeline updates Late to spot problems Update pipeline weekly; review trends
Multi-touch attribution too early Overcomplicates the model Start with first-touch; add layers later

Connecting marketing spend to kept appointments is foundational, the difference between guessing about ROI and knowing it.

The Marketing Lab helps clinics set up this infrastructure. Our PulsePoint platform ties paid media spend to kept appointments so you can optimize your budget by channel. Book a free 30-minute strategy call to see how this works for your clinic.

Frequently Asked Questions

How do you calculate cost per kept appointment for a medical practice?

Total your marketing spend for a specific period (paid search, social, email, local SEO, community outreach) and divide by the number of appointments actually attended during that same window. If you spent $5,000 on marketing in a month and 80 patients kept their appointments from those campaigns, your cost per kept appointment is $62.50. The key is matching the spend period to the appointment window and excluding no-shows. Track this by campaign source in your CRM so you can see which channels deliver the lowest cost per kept visit.

What's the difference between a booked appointment and a kept appointment?

A booked appointment is a patient who scheduled a visit through your website, phone, or referral. A kept appointment is one the patient actually attended. No-shows and cancellations don't count. For marketing ROI, only kept appointments matter because they're the ones that generate revenue, clinical outcomes, and repeat business. Many clinics measure booking rates and mistake them for conversion. If your booking-to-kept rate is 75%, then a marketing campaign that books 100 patients delivers only 75 kept visits.

Can you connect marketing campaigns to kept appointments while staying HIPAA-compliant?

Yes, but you must keep patient health information (PHI) out of your analytics and ad platforms. Use a secure CRM with a BAA in place to track the patient's source (paid search, organic, referral, etc.), appointment date, and attendance status. Never send PHI to Google Analytics, Meta, or any third-party platform. Your CRM reports the aggregate numbers, total kept appointments by source, without exposing individual patient records. This approach satisfies both HIPAA and marketing measurement.

How do you handle multi-touch attribution when patients see multiple marketing campaigns before booking?

Most clinics use first-touch (credit the first campaign that brought them in) or last-touch (credit the campaign right before booking) attribution because it's simple and defensible. First-touch works best for awareness campaigns; last-touch for conversion campaigns. Some practices weight multiple touches, for example, 40% credit to first, 60% to last, but this requires more data infrastructure. Start with first-touch or last-touch, measure consistently, and document your method so you can compare performance month to month. The goal is consistency, not perfection.

Want this for your clinic?

Bring us your patient acquisition, 340B program, or compliance bottleneck. We will show you what a 30-day launch looks like for your clinic — in English or Spanish, month to month, no long contract.