A Booking Outcome Taxonomy for Clinic Google Ads
A clinic booking funnel needs distinct outcome names before it needs another dashboard. A submitted form, a created booking, an attended appointment, a cancellation, and an accepted treatment are different facts. Combining them under “conversion” makes campaign reports easy to read and hard to trust.
The taxonomy below is a recommended healthcare boundary, not a description of every current Apointoo tenant configuration. Keep booking states inside the clinic’s approved environment by default. Do not send patient identifiers, PHI, appointment details, clinical text, or treatment detail to Google. If current platform policy and qualified review permit an external measurement route, use one generic action as the primary source and keep later stages internal.
Why does a clinic need a booking outcome taxonomy?
A taxonomy prevents one label from carrying several incompatible meanings. Marketing may call every form submission a booking. Reception may call a reserved slot a booking. A clinician may care only about attendance. Finance may care about an accepted plan. Each team is reasonable, but the shared report fails unless the terms are fixed.
Booking vendors expose different operational states. Doctoralia describes online scheduling, confirmations, reminders, cancellations, and payments. Zocdoc describes booking sources, appointment outcomes, and spend reports. These product descriptions show why a clinic cannot treat all scheduling activity as one event. They do not supply a universal taxonomy, legal permission, or a Google Ads configuration.
Write the definitions before mapping fields. The related guide on booking system versus CRM ownership explains why the scheduling platform should remain authoritative for appointment state.
A practical five-state taxonomy
The following stages are intentionally small. A clinic can add internal operational states, but advertising and agency reports should not inherit every status available in a scheduling product. Each extra state creates another definition, transition, and reconciliation case.
| State | Business definition | System of record | Default Google role |
|---|---|---|---|
| form_submitted | The server accepted a valid consultation request form | First-party form service | Candidate for one approved generic primary action |
| booking_created | The scheduling system created a bookable appointment | Booking platform | Internal or secondary observation |
| appointment_attended | The booking platform records attendance under the clinic’s rule | Booking platform | Internal aggregate by default |
| booking_cancelled | The appointment no longer occupies the slot under the source state | Booking platform | Internal reconciliation |
| treatment_accepted | The clinic records a generic accepted business outcome | Approved clinic system | Internal value model only, with no treatment detail |
The names describe business states, not payload instructions. A clinic must not send treatment_accepted with a procedure name, diagnosis, plan, patient reference, or appointment note. It may use an aggregate acceptance rate inside its own value model without exporting the underlying record.
How should the clinic choose its primary conversion?
Choose the earliest stage that is both meaningful and reliably proven, then keep that choice stable enough to compare periods. For a forms-focused measurement design, the server-confirmed submission is the clearest internal candidate. A later booking state can improve internal reporting, but it should not silently become a second primary source.
Google Ads documents primary actions as eligible for bidding when the campaign uses their conversion goal. Secondary actions remain available for observation in the relevant reporting columns, although custom goal choices can change that behavior. Review the live account configuration instead of assuming that a label called “secondary” can never influence bidding.
The clinic should record the selected action, source system, evidence, effective date, owner, and rollback. Read why one primary conversion source prevents double counting before adding a second delivery path.
How do you join outcomes without copying the appointment?
Use an opaque join reference that carries no patient meaning. The form service stores the campaign context and its event ID. The booking system keeps appointment truth. A bounded mapping relates the two inside the approved environment. The reporting job reads only the status and dimensions required for an aggregate.
- Create an opaque reference for the valid form submission.
- Associate it with a booking through an approved server workflow.
- Read the current booking state from the authoritative source.
- Project only the generic state and reporting dimensions.
- Aggregate by campaign before sharing the report.
Do not use a patient name, email, phone number, record number, treatment, or free text as the join key. Do not place those fields in URLs, conversion action names, order IDs, logs, or support tickets. The appointment outcome linking guide covers the broader privacy boundary.
How should status changes and duplicates behave?
Booking states change. A person can book, cancel, reschedule, and attend later. Treat each source update as a version of the same booking projection, not a new marketing conversion. The source event key stays stable, while the version and source timestamp advance.
The system should reject impossible transitions or send them to review. A cancellation received before a delayed booking event may be valid but out of order. A repeated webhook may be a normal retry. The consumer needs idempotency, ordering rules, and a reconciliation read from the booking source. It should never repair the schedule from an advertising report.
Keep the Google delivery contract separate. One primary form conversion uses one stable event reference. Later internal states update the clinic report. They do not fire another competing primary conversion. For implementation details, see booking webhook idempotency and audit evidence.
What should an agency report show?
An agency report should show a funnel with explicit denominators and source dates. Form submissions come from the first-party form service. Bookings, attendance, and cancellations come from the scheduling system. Accepted outcomes come from the clinic’s approved business record. Google Ads delivery status is a separate column, not proof that the source outcome occurred.
| Metric | Numerator | Denominator | Source |
|---|---|---|---|
| Form to booking rate | Bookings linked to valid forms | Valid form submissions | Form and booking systems |
| Show rate | Attended appointments | Eligible booked appointments | Booking system |
| Cancellation rate | Cancelled appointments | Eligible booked appointments | Booking system |
| Acceptance rate | Generic accepted outcomes | Eligible attended cases under the clinic’s rule | Approved clinic system |
Define “eligible” in the report. Exclude test records and document how reschedules affect the denominator. Do not invent a benchmark. Compare the clinic with its own prior mature cohorts. The article on campaign show rate without appointment details gives a focused calculation method.
What must stay out of Google Ads?
The taxonomy is an internal operating tool. It does not authorize every state for advertising upload. Keep PHI, patient identifiers, appointment details, treatment names, diagnosis, procedure, clinician notes, and free text out of Google. Do not hide them in a hash, event label, custom variable, URL, value field, or deduplication key.
Do not create health audiences from the booking states. Do not add direct gtag or fbq calls to the form or confirmation page. Do not track calls as a substitute for form events. If the clinic has an approved Data Manager route, use the server-side clinic form architecture and keep it as the sole primary delivery source.
When the policy or legal answer is unresolved, keep all later outcomes inside aggregate reporting. An internal count can help the clinic make decisions without becoming an external conversion event.
Frequently asked questions
Is a submitted form the same as a booking?
No. A submitted form proves that the server accepted a request. A booking exists only when the scheduling system creates an appointment under its own rules.
Should attendance be the primary Google Ads conversion?
Not automatically. Attendance occurs later and belongs to the booking source. For this forms-only architecture, keep the approved server-confirmed form as the sole primary candidate and use attendance in internal aggregate reporting unless a separate review approves otherwise.
Can treatment acceptance appear in the report?
It can appear as an aggregate business metric under a clinic-defined rule. The report should not expose the treatment, diagnosis, patient, clinician note, or appointment record.
How are rescheduled appointments counted?
Keep one booking lineage and document the denominator rule. A reschedule should not become a second form conversion. The booking source remains authoritative for the current appointment state.
References
- Google Ads, About conversion goals, retrieved 2026-08-16, https://support.google.com/google-ads/answer/10995103?hl=en
- Doctoralia Pro, Agenda Doctoralia para Clínicas, retrieved 2026-08-16, https://pro.doctoralia.com.br/produtos/agenda-doctoralia-para-clinicas
- Zocdoc, Transparency and Control for Providers, retrieved 2026-08-16, https://www.zocdoc.com/blog/facts/transparency-and-control-for-providers/
Related articles
Does a BAA Let a SaaS Vendor Benchmark One Clinic Against Another?
No, not by itself. A business associate agreement can authorize a SaaS vendor to perform defined services with protected health…
No-Show Rate by Original Booking Source: An Internal Reporting Formula
Calculate no-show rate within each original booking-source cohort. Use finalized no-shows as the numerator and finalized attended…
How to Preserve Original Marketing and Booking Source After a Reschedule
A reschedule should change the appointment time and workflow status without rewriting how the booking was first acquired or where it first…