Back to the build library
Healthcare & clinics
Standard

Annual Wellness Visit Campaign

A yearly recall program that calculates each patient's eligibility window and works them through a staged, suppression-checked outreach ladder.

Industry
Healthcare & clinics
Build effort
Standard
Typical time to launch
2–4 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

Annual wellness visits are the most predictable appointment in the practice and the one most reliably left unbooked. Every eligible patient becomes due on a date that is known a year in advance, the visit takes a standard length, and the practice usually has the capacity. What is missing is anyone whose job it is to notice. So the recall happens in bursts: someone pulls a list in February, sends one email to two thousand people, books forty visits, and the other nineteen hundred and sixty fall through until someone pulls another list in November.

The single-blast approach fails in a specific way worth naming. One email to the whole panel converts the patients who were going to book anyway, teaches the rest that the practice's email is ignorable, and produces a booking spike the schedule cannot absorb, so the patients who did respond get offered a slot eleven weeks out and half of them do not show. Meanwhile the patients who most need the visit. Older patients, patients without email, patients who moved, patients with transport barriers: are systematically the ones a single email never reaches. The recall reaches the easy half of the panel twice and the hard half never.

There is also a quieter failure that costs more than the unbooked visits. Nobody knows which patients are overdue and by how much, so the practice cannot tell the difference between a panel that is ninety percent current and one that is sixty percent current. Preventive-care gaps compound: the wellness visit is where screening gets ordered, medications get reviewed and problems get caught early, so a missed year is not one missed appointment, it is a year of missed downstream care. This build replaces the annual list-pull with a continuous, month-by-month cohort engine: eligibility calculated nightly, every patient suppression-checked before anyone contacts them, a staged ladder that escalates channel rather than repeating one, and a booking funnel that spreads the demand across the year instead of stacking it into February.

02

What gets built

Pipeline and stages

One pipeline, Annual Wellness Recall, with one card per patient per recall year. Last year's card is kept and closed rather than reused, so year-over-year completion is a real number.

  • Eligibility Pending: the patient is on the panel but their window has not opened.
  • Eligible: Not Contacted: window open, suppression checks passed, nothing sent yet.
  • Outreach Wave 1: the soft, low-cost channel.
  • Outreach Wave 2: escalated channel, different message.
  • Outreach Wave 3: letter and live call; the expensive wave reserved for the patients who matter most and respond least.
  • Engaged: No Booking: the patient replied, clicked or called but has not booked. The highest-yield queue in the build.
  • Booked
  • Pre-Visit Complete: questionnaire returned, so the visit itself is not spent on data entry.
  • Visit Attended
  • Recall Complete: terminal success; next year's card created.
  • Declined: terminal, with a recorded reason.
  • Suppressed: terminal for this year, with a reason. Never silently dropped.
  • Lapsed: terminal; the window closed unbooked. Feeds the panel gap report.

Calendars

  • Annual Wellness Visit: per provider, with the real duration the visit needs (these run long and booking them into a standard slot is how the schedule breaks), plus buffers and a per-day cap so a single provider's calendar cannot be filled entirely with wellness visits.
  • Nurse-Led Wellness Review: where the practice's model supports it, a separate calendar with its own eligibility rules.
  • Wellness Clinic Day: a group calendar for batch sessions, useful for working through a cohort month efficiently. Capacity is set per session, not per patient.
  • Pre-Visit Phone Review: 10 minutes, for patients who cannot complete the questionnaire online.

Custom fields

  • last_wellness_visit_date: the anchor for everything.
  • eligibility_start_date: computed; the first date the visit may be booked. A hard gate, because a visit done before the window opens creates an administrative problem the patient pays for.
  • eligibility_window_end, recall_year, recall_cohort_month
  • recall_status, outreach_wave, outreach_touch_count
  • last_touch_date, last_touch_channel, channels_exhausted
  • engagement_signal: opened, clicked, replied, called in, none. Drives the Engaged queue.
  • booking_date, booked_provider, booking_source: which wave and channel produced the booking.
  • previsit_sent_date, previsit_complete_date
  • attended_date, visit_outcome_recorded
  • decline_reason: picklist: seen elsewhere, not interested, declined this year, no longer a patient, other.
  • suppression_reason: picklist: already booked, already attended this year, record inactive, address and contact unreachable, transferred out, duplicate record, clinician hold, deceased, opted out of recall.
  • panel_provider, panel_owner
  • mailing_address_verified, mail_returned_flag
  • transport_barrier_flag, caregiver_contact_on_file, interpreter_needed
  • patient_consent_sms, patient_consent_email, recall_opt_out, consent_captured_at, consent_language_version, consent_source
  • preferred_channel, preferred_language, portal_activated, timezone

Tags

  • awv-eligible, awv-due-soon, awv-due, awv-overdue-60, awv-overdue-120
  • awv-booked, awv-attended, awv-complete, awv-declined, awv-lapsed
  • outreach-w1, outreach-w2, outreach-w3, channel-exhausted, letter-queued
  • engaged-no-booking
  • previsit-outstanding, previsit-complete
  • suppressed-this-year, clinician-hold
  • recall-opt-out, consent-sms-yes, consent-sms-revoked, consent-email-yes, consent-email-revoked

None of these names a condition, a screening, a medication or a reason for care. A recall campaign touches a large share of the panel at once, which makes a careless tag name a large-scale disclosure rather than a small one.

Forms and funnel

  • Wellness Visit Booking page: a short landing page reached from every outreach touch. It explains what the visit is for in plain, non-diagnostic language, shows real availability from the Annual Wellness Visit calendars, and books in two taps. One page, one job; no newsletter signup, no unrelated service promotion.
  • Pre-Visit Health Questionnaire: portal-gated, sent after booking. This is the only place clinical questions are asked, and it is never emailed as an attachment or a plain web form.
  • Recall Preferences: the opt-down page: change channel, change language, ask to be contacted by phone only, pause for a year, or opt out of recall entirely. Linked from every single touch.
  • Decline Record: captures decline_reason, from a patient reply or from a staff call.
  • Communication Consent: per channel, versioned, with recall consent recorded separately.

BO's role and guardrails

  • BO may: explain in general terms what an annual wellness visit covers, say whether the patient is currently eligible and from what date, show availability and book the visit, reschedule it, send the questionnaire link, answer questions about duration and location, record a decline with a reason, update channel and language preferences, process opt-outs, and hand off to a person.
  • BO may not: state or imply what a patient will be screened for based on their record, reference any condition, medication, result or past visit detail, give clinical advice, tell the patient the visit is covered or quote any cost, book before eligibility_start_date, or override a clinician-hold.
  • Guardrails: BO's eligibility answer is a date, not a clinical rationale. Any question about coverage, billing or price routes to a human, because an automated answer there is both unreliable and the kind of statement patients hold the practice to. Any clinical question or urgency language triggers immediate handoff. No clinical content in an SMS body or an email subject line.

Numbers and channels

  • Email as wave one. Cheap, high-volume, and the right first touch for a non-urgent preventive visit. Warm the sending domain before a full cohort month goes out.
  • SMS as wave two, on a dedicated number registered as transactional traffic, separate from marketing.
  • Portal message alongside wave two for active portal users. The one channel where slightly more detail is acceptable.
  • Physical letter as wave three, for patients with no digital engagement. Sealed, addressed, nothing clinical on the envelope, and only to a mailing_address_verified address.
  • Live outbound call as the final wave, worked from a prioritized queue rather than alphabetically. This is the expensive channel and it should be aimed at the patients the earlier waves structurally miss.
  • Caregiver contact where one is recorded with the patient's documented authorization. For some patients this is the only channel that works, and it must be authorized rather than assumed.
03

How it runs, step by step

  1. Each night, the eligibility job runs across the panel. For every patient it computes eligibility_start_date from last_wellness_visit_date plus the practice's interval rule, sets eligibility_window_end, and assigns recall_cohort_month so the panel is spread evenly across the year rather than all becoming due in January.
  2. A card is created in Eligibility Pending for the coming recall year. Nothing is sent while the window is closed. The gate exists because a visit booked a week too early becomes an administrative problem the patient inherits.
  3. Thirty days before eligibility_start_date the card is tagged awv-due-soon and enters the pre-wave queue. On the eligibility date it moves to Eligible, Not Contacted.
  4. Before any message, the suppression battery runs: already booked, already attended this year, record inactive, transferred out, duplicate, mail returned and no digital channel, clinician hold, deceased, recall opt-out. Any hit moves the card to Suppressed with a reason. The deceased and clinician-hold checks run immediately before every send, not just once at cohort assembly.
  5. Wave one goes out: a single email to the patient's own address, from the practice, pointing at the Wellness Visit Booking page. Plain subject line, plain language, one call to action, and a visible link to Recall Preferences.
  6. Fourteen days later, if there is no booking, wave two escalates channel rather than repeating the email: an SMS doorbell plus a portal message for active portal users, with a shorter, more direct message.
  7. Any open, click, reply or inbound call sets engagement_signal and moves the card to Engaged: No Booking if no booking followed. This queue gets a human call before the cold patients do, because it is the highest-converting list in the whole program.
  8. Twenty-one days after wave two, wave three runs for everyone still unbooked: a letter to verified addresses and a live call task, prioritized by how overdue the patient is and by any recorded barrier such as transport or interpreter need.
  9. The patient books, from any channel, through the same funnel. booking_date, booked_provider and booking_source are written so the practice learns which wave and channel actually earns bookings.
  10. The Pre-Visit Health Questionnaire is sent to the portal with a neutral doorbell. The chase runs at seven days, three days and one day before the visit, then becomes a Pre-Visit Phone Review task for patients who cannot complete it online.
  11. Standard appointment reminders run at seven days, two days and three hours. Because wellness visits are booked far ahead, the seven-day reminder is the one that saves the appointment and should offer a one-tap reschedule rather than only a confirm.
  12. The patient attends. attended_date is recorded, the card moves to Visit Attended, and a task confirms the visit outcome has been documented in the chart by the practice's normal process.
  13. The card moves to Recall Complete, last_wellness_visit_date is updated, and next year's card is created in Eligibility Pending with a cohort month assigned. The cycle is self-renewing; nobody pulls a list again.
  14. A no-show runs the recovery sequence and returns the card to Engaged: No Booking rather than to the cold waves. A patient who booked and missed is far closer to attending than one who never answered.
  15. If eligibility_window_end passes unbooked, the card moves to Lapsed with the waves completed recorded, and the patient appears on the panel gap report for the provider who owns them.
04

Automations in detail

1. Nightly Eligibility Calculation and Cohort Assignment

Trigger: scheduled nightly across the active panel.

Actions in order:

  1. For each panel patient, read last_wellness_visit_date and compute eligibility_start_date using the practice's recorded interval rule. Where no prior visit exists, use the practice's rule for new patients rather than defaulting to today. A never-visited patient and a patient due again are different cohorts with different messages.
  2. Set eligibility_window_end and recall_year.
  3. Assign recall_cohort_month. Default to the patient's own anniversary month, which spreads the panel naturally. Where anniversaries bunch (common after a past mass-recall) redistribute the overflow into adjacent months against the practice's monthly capacity figure, keeping the most overdue patients in the earliest month. Capacity, not enthusiasm, sets cohort size.
  4. Create the card in Eligibility Pending. Do not create a duplicate if a card already exists for this patient and recall_year.
  5. At 30 days before eligibility_start_date, apply awv-due-soon. On the date, apply awv-due and move the card to Eligible, Not Contacted.
  6. Maintain the overdue bands: 60 days past eligibility_start_date unbooked applies awv-overdue-60; 120 days applies awv-overdue-120. These bands drive the wave-three call priority.
  7. Never send from this workflow. It only computes state. All sending is gated behind workflow 2, so there is exactly one place where a send can be stopped.

Exit: card terminal, or patient leaves the panel.

2. Suppression and Safety Battery

Trigger: immediately before every outreach send, every letter queue and every call task creation. Not once per cohort: every time.

Checks in order, any hit stops the send:

  1. Deceased. Checked against the records system on every send. This is the check that matters most and the one a quarterly list-pull gets wrong. A recall letter arriving for someone who has died is the kind of harm that no conversion rate justifies, so it is checked first, checked every time, and a card that hits it moves to Suppressed permanently with no further automation of any kind.
  2. Clinician hold. Any clinician-hold flag suppresses outreach. Clinicians need an easy, one-click way to set it, with no obligation to record a reason in this system. Some patients should not receive routine recall messages and the clinical team should not have to explain why to an automation.
  3. Already booked or already attended this recall year. Move the card forward rather than suppressing it.
  4. Record inactive, transferred out, or duplicate. Suppress with the reason, and create a data-quality task for duplicates rather than just skipping them.
  5. Recall opt-out. recall_opt_out suppresses the whole program for that patient, not just one channel.
  6. Channel consent. Email and SMS each require their own recorded consent. A patient with neither skips to the letter and call waves rather than being counted as unreachable.
  7. Address validity. A letter is queued only when mailing_address_verified is true and mail_returned_flag is false. Returned mail sets the flag and creates an address-update task.
  8. Frequency cap. No patient receives more than one recall touch in any rolling 7 days, or more than 4 recall touches in the whole year, across all channels and all programs. A recall program running alongside other campaigns is the most common source of patients feeling harassed by a practice.
  9. Content guardrail. Verify the body and subject line against the merge-field allow-list: first name, practice name, provider name, booking link, preferences link, portal link, location, eligibility date. Every clinical field, every screening name, every condition and every past-visit detail is blocked. A failing send is blocked and alerted, never silently rewritten.
  10. Quiet hours. Hold to the configured window in the patient's timezone. A recall is never urgent; there is no reason for it to ever arrive outside business hours.

Exit: runs permanently as the single gate in front of every send.

3. Staged Outreach Ladder

Trigger: stage becomes Eligible, Not Contacted and the card's recall_cohort_month is the current month.

Actions in order:

  1. Wave 1: email, day 0. Move to Outreach Wave 1, apply outreach-w1. Subject line: “Your yearly check-in with {{practice_name}} is due”. Body: “Hi {{contact.first_name}}, you're due for your annual wellness visit with {{practice_name}}. It's a longer appointment set aside to review how you're doing overall and plan the year ahead. Nothing specific, just the yearly one. Pick a time that suits you: {{booking_link}}. Prefer a different way to hear from us, or want to skip this year? {{preferences_link}}.” Increment outreach_touch_count, set last_touch_date and last_touch_channel.
  2. Wait 14 days. If booking_date is empty, run wave 2: escalate channel, do not resend the email. Move to Outreach Wave 2, apply outreach-w2. SMS: “Hi {{contact.first_name}}, it's {{practice_name}}, your yearly wellness visit is due. Book in a couple of taps: {{booking_link}}. Reply STOP to stop texts.” Send a portal message in parallel for active portal users; the portal version may include a little more plain-language detail about what the visit involves.
  3. Wait 21 days. If still unbooked, run wave 3. Move to Outreach Wave 3, apply outreach-w3. Queue a letter where the address is verified, and create a live call task. Prioritize the call queue by overdue band first, then by any recorded barrier: transport_barrier_flag, interpreter_needed, no portal, no digital consent. Call the patients the digital waves could never have reached, first.
  4. Caregiver branch. Where caregiver_contact_on_file exists with documented authorization, the wave-three call task includes that contact as the alternate. Documented authorization is the condition, not convenience.
  5. Wait 14 days after wave 3. If unbooked, apply channel-exhausted and stop outreach. The card stays open until eligibility_window_end so an inbound booking still lands correctly, but no further messages go out. Four touches and a phone call is enough; a fifth teaches the patient to ignore the practice.
  6. Engagement interception. Any open, click, reply or inbound call sets engagement_signal and, if no booking follows within 72 hours, moves the card to Engaged: No Booking and creates a same-week call task. This interception jumps the queue ahead of cold patients because someone who clicked and did not book is usually one short conversation away.
  7. Window close. At eligibility_window_end with no booking, move to Lapsed, record which waves ran, and feed the panel gap report.

Exit: booked, declined, suppressed, or lapsed.

4. Booking Funnel and Conversion

Trigger: a booking is made from the Wellness Visit Booking page, by BO, or by staff.

Actions in order:

  1. Hard eligibility gate. Reject any booking dated before eligibility_start_date and offer the earliest eligible date instead: “We can book you from {{eligibility_start_date}}, here are the first available times.” The gate is absolute and applies to staff bookings too, with a documented override path for the clinical exceptions.
  2. Write booking_date, booked_provider and booking_source: wave and channel. Without booking_source you cannot tell which wave is earning its cost, and wave three is the expensive one.
  3. Apply awv-booked, remove outreach tags, move the card to Booked, and cancel every pending outreach step immediately. A patient who books on Tuesday must not get wave two on Wednesday.
  4. Send confirmation: “You're booked, {{contact.first_name}}, {{visit_day}} {{visit_time}} at {{location}} with {{provider_name}}. Allow about {{duration}} minutes. We'll send a short form to fill in beforehand so we can spend the time on you rather than paperwork.”
  5. Abandonment branch. If the booking page is opened and availability viewed but no booking completes, wait 2 hours and send one recovery message: “Hi {{contact.first_name}}, looked like you were booking your wellness visit and got interrupted. Here's your link again: {{booking_link}}. Reply HELP and we'll book it for you.” Once only, then route to Engaged: No Booking.
  6. Capacity guard. If the cohort month's bookings exceed the configured capacity, notify the practice manager and hold the next cohort's wave one rather than booking patients eleven weeks out. A recall that books people beyond their own attention span converts into no-shows.
  7. Hand to workflow 5.

Exit: booking confirmed, or card returned to the outreach ladder.

5. Pre-Visit Questionnaire Chase

Trigger: stage becomes Booked.

Actions in order:

  1. Publish the Pre-Visit Health Questionnaire to the portal, set previsit_sent_date, apply previsit-outstanding. Send a doorbell only: “Hi {{contact.first_name}}, there's a short form in your secure portal to fill in before your visit: {{portal_link}}. Takes about five minutes.” The clinical questions live in the portal; the message says nothing about them.
  2. Wait until 7 days before the visit. If incomplete, send reminder one on preferred_channel.
  3. Wait until 3 days before. If incomplete, send reminder two and offer the alternative: “Easier by phone? Book a 10-minute call and we'll fill it in with you: {{previsit_call_link}}.”
  4. Wait until 1 day before. If incomplete, create a front desk task to complete it at check-in and allow extra time. Notify the provider that the questionnaire is outstanding so the visit is not derailed by it.
  5. On completion, set previsit_complete_date, swap the tags, move the card to Pre-Visit Complete, and make the responses available to the provider through the normal clinical route, not as an email attachment and not pasted into a notification.
  6. Portal-inactive branch. If portal_activated is false, skip the digital chase entirely and create the Pre-Visit Phone Review task at booking. Do not send three portal reminders to a patient who has no portal.

Exit: questionnaire complete, phone review booked, or front desk task created.

6. Visit Reminders and No-Show Recovery

Trigger: stage becomes Booked, running alongside workflow 5.

Actions in order:

  1. 7 days before: the reminder that matters, because wellness visits are booked weeks ahead. Include a one-tap reschedule, not just a confirm: “Hi {{contact.first_name}}, your wellness visit with {{practice_name}} is {{visit_day}} at {{visit_time}}. Still good? Confirm or move it here: {{manage_link}}.” Offering the reschedule openly converts a future no-show into a kept appointment on another day.
  2. 2 days before: short confirmation with location and duration.
  3. 3 hours before: final doorbell with location and parking or arrival detail. Nothing clinical.
  4. Reschedule branch. A reschedule keeps the card in Booked, rewrites booking_date, restarts the reminder ladder and leaves the questionnaire progress intact. It is explicitly not treated as a cancellation.
  5. Cancellation branch. Return the card to Engaged: No Booking, not to the cold waves, and create a rebooking task within 2 business days. Release the slot to the cancellation-fill process if the practice runs one.
  6. No-show branch. Same day: “Hi {{contact.first_name}}, we missed you today. No problem at all. Grab another time whenever suits: {{booking_link}}.” No fee language, no reproach. Wait 3 days, send one more. Wait 7 days, create a call task. Two no-shows in a recall year route to a staff review rather than a third automated attempt.

Exit: attended, or returned to Engaged: No Booking.

7. Attendance, Outcome Capture and Next-Year Enrollment

Trigger: the appointment is marked attended.

Actions in order:

  1. Set attended_date, apply awv-attended, move the card to Visit Attended.
  2. Create a documentation-confirmation task on the provider, confirming the visit outcome has been recorded in the chart by the practice's normal process. This build does not hold the clinical record; it holds the recall state.
  3. Follow-up branch. If the visit generated further actions (a referral, a screening order, a medication review) create or link the relevant card in the appropriate pipeline. The wellness visit is where downstream care gets generated, and that generation should not depend on someone remembering.
  4. Update last_wellness_visit_date to attended_date. Move the card to Recall Complete, apply awv-complete.
  5. Create next year's card in Eligibility Pending with a fresh recall_year, a computed eligibility_start_date, and recall_cohort_month assigned against next year's capacity. This step is what makes the program a system instead of a campaign.
  6. Wait 2 days. Send one short satisfaction prompt if the practice runs a review or experience program, kept entirely separate from the recall messaging and subject to its own consent.

Exit: next year's card created.

8. Decline, Opt-Down and Preference Management

Trigger: Recall Preferences or Decline Record submitted, an inbound decline in conversation, or any opt-out keyword.

Actions in order:

  1. Offer the ladder down before the door out. The preferences page leads with change channel, change language, phone only, and pause for this year: with full opt-out last. Most patients who click want fewer messages, not none, and losing them from recall entirely is a worse outcome for them than a quieter channel.
  2. Channel change: update preferred_channel and the consent flags, and resume the ladder from the current wave on the new channel.
  3. Pause this year: move the card to Declined with decline_reason of declined this year, and still create next year's card. A single no is not a permanent no, and treating it as one is how panels quietly shrink.
  4. Seen elsewhere: record the reason, suppress this year, and create a task to request records and update last_wellness_visit_date. A patient who had the visit elsewhere is current, not lapsed, and the panel report should say so.
  5. Full recall opt-out: set recall_opt_out, apply recall-opt-out, and stop the program for that patient across all channels and all years until they reverse it. Notify panel_provider once, so the clinical team knows this patient will no longer be reminded.
  6. SMS or email opt-out keyword: set only that channel's flag to no, apply the revoked tag, confirm once in plain language: “You're unsubscribed from texts from {{practice_name}}. We'll still write or call you about your yearly visit unless you tell us not to: {{preferences_link}}.”, and continue on remaining channels. A channel opt-out is not a program opt-out and must not be treated as one.
  7. Write consent_captured_at, consent_language_version and consent_source on every change, and keep the prior state as history rather than overwriting it.

Exit: preferences recorded; program state updated.

9. Monthly Cohort Performance and Panel Gap Report

Trigger: scheduled monthly, plus a weekly operational slice.

Actions in order:

  1. Weekly, internal: the Engaged: No Booking queue with owners, overdue-band counts, previsit-outstanding cards inside 3 days of a visit, letters queued against unverified addresses, and any suppression hit that needs a human: duplicates, mail returned, address updates.
  2. Monthly, by cohort: eligible, contacted, booked, attended, declined, suppressed by reason, lapsed. Report booking rate by wave and by channel, and cost per booking for wave three so the expensive wave is judged on its real yield.
  3. Panel gap view per provider: share of their panel current, due, overdue and lapsed. This is the number that changes clinician behavior, because it is about their own patients rather than the practice's average.
  4. Equity view: completion rate split by channel availability (patients with email, SMS only, no digital channel, no portal) and by language and recorded barrier. If completion is materially lower for patients with no digital channel, wave three is under-resourced, and that is a finding about who the program is failing rather than a tuning detail.
  5. Send internally only, to the practice manager and clinical lead, on an access-controlled channel. It contains patient identifiers and panel-level clinical state.
  6. Create tasks for the actionable slices rather than leaving a report to be admired.

Exit: never.

05

What changes

The recall stops being an annual event and becomes a background process. Every month a manageable cohort becomes due, works through a ladder that escalates channel rather than repeating one, and either books or lands in a queue with a name and an owner. Nobody pulls a list. The booking demand arrives in a steady stream the schedule can absorb, instead of a February spike that fills the calendar eleven weeks out and generates no-shows in May.

The second change is that the practice can finally answer the question it could not: what share of each provider's panel is current. That number, broken out by provider, is what moves the program from an administrative chore to something the clinical team cares about. And because the engagement interception exists, the highest-yield work (calling the people who clicked and did not book) gets done before anyone starts cold-calling the people who never opened anything.

The third change is that the patients the old single-email approach structurally missed are now explicitly handled. Patients with no email, no portal, a transport barrier or a language need are routed to the letter and the call, with the call queue prioritized toward them rather than ordered alphabetically. That is the difference between a recall program with a good average and one that actually closes the gap.

Metrics to watch

  • Panel currency: the share of each provider's panel with a wellness visit inside the interval. The headline number, reported per provider.
  • Cohort booking rate: booked divided by eligible-and-contacted, per cohort month, so you can see a month degrading rather than discovering it at year end.
  • Booking rate by wave and by channel, with cost per booking for wave three stated separately. Wave three is letters and phone time; it has to be judged on yield, and it usually earns its place on exactly the patients the cheap waves cannot reach.
  • Engaged-no-booking conversion: how many of that queue book after a human call. If this is high and the queue is long, the program is under-staffed rather than under-messaged.
  • Attendance rate and no-show rate on booked wellness visits, split by booking lead time. Long lead times are usually where the no-shows come from, and that points at cohort sizing, not at reminders.
  • Pre-visit questionnaire completion before the visit, and how often the front desk had to do it at check-in.
  • Lapse rate and the wave distribution of lapsed patients. How far down the ladder the people you lost actually got.
  • Suppression distribution, watched closely. A rising count of record-inactive or mail-returned suppressions is a data-quality finding; any deceased-flag suppression that was caught late is an incident worth reviewing properly.
  • Decline reasons, and the split between pause-this-year and full opt-out. A ladder-down page that is working shows far more pauses and channel changes than hard opt-outs.
  • Equity split: completion by channel availability, language and recorded barrier. This is the number that tells you whether the program is closing the gap or widening it.
  • Messaging health: email deliverability and complaint rate for the cohort sends, SMS opt-out rate, frequency-cap hits, and blocked sends caught by the content guardrail.
06

Before you start

Prerequisites

  • A clean panel list with a reliable last_wellness_visit_date. The whole engine is computed from this field. If it is wrong or missing for a large share of the panel, fix that first. A recall program built on bad anchor dates will contact the wrong people, which is worse than contacting nobody.
  • The practice's written interval and eligibility rule, and the date logic for patients with no prior visit. Signed off administratively, because the eligibility gate is a hard stop that staff will occasionally want to override.
  • A reliable deceased and inactive-record signal the platform can check on every send. If the only source is a quarterly export, say so out loud and set the suppression battery to be correspondingly conservative. This is not a detail to discover in production.
  • A one-click clinician hold that any clinician can set without justifying it to the system.
  • A monthly capacity figure per provider for wellness visits, so cohort sizes are set by what the schedule can absorb.
  • Verified mailing addresses and a returned-mail handling process, if wave three includes letters.
  • Agreed answers for the coverage and cost questions patients will ask, with a human path for them. Automation must not answer those.
  • Role-based access so the panel gap report and the cohort lists are visible only to the roles that need them, reviewed on a schedule.

Integrations

  • Your practice management or records system, for the panel, last_wellness_visit_date, attendance and the deceased and inactive flags. Decide which system is the source of truth for each field and write the mapping down.
  • Calendar sync (Google Calendar or Outlook) for wellness visit availability with correct durations, buffers and per-day caps.
  • Patient portal for the pre-visit questionnaire and anything beyond date, time, location and duration.
  • Print and mail fulfillment for wave three, which receives names and addresses and is therefore a vendor in scope.
  • Email sending infrastructure with a warmed domain and authentication in place. A cohort month is a large send and an unauthenticated one lands in spam.
  • Reporting export for the cohort and panel gap reports. Exports carry patient data and get the same handling as the system.

Numbers and messaging registration

  • Provision a dedicated number for recall SMS and complete A2P 10DLC brand and campaign registration in the United States. Describe the campaign accurately. Preventive-care recall sits closer to the marketing boundary than an appointment reminder does, so register it as what it is and expect the carrier review to take that view, getting this wrong means silent filtering of an entire cohort month.
  • Keep the recall number and campaign separate from clinical care-coordination traffic, so an opt-out from recall never suppresses a clinically necessary message.
  • Automatic immediate opt-out handling on recognized keywords, with the required opt-in, help and opt-out wording present where carrier rules say. Make the confirmation make clear that a text opt-out is not a program opt-out.
  • Quiet hours in the patient's local time. A recall is never urgent, so keep it inside business hours entirely.
  • Set the frequency cap globally: one recall touch per 7 days and four per year, counted across every program the patient is in. A recall running on top of three other campaigns is how a practice earns a reputation for spam.
  • Stagger the cohort email send across the day rather than firing thousands at once, and watch complaint rate on the first two cohort months closely. A spam complaint spike damages deliverability for every clinical email the practice sends afterwards.

Protected health information and consent

A recall program touches more patients at once than anything else in the practice, so a small content mistake becomes a large-scale disclosure. Three things deserve particular attention: what the message says, who it goes to, and whether it is a treatment communication at all.

  • Keep PHI out of SMS bodies and email subject lines. “Your yearly check-in with {{practice_name}} is due” is fine. Anything that names a condition, a medication, a screening, a prior result or a past visit detail is not, and neither is personalized content implying what the patient will be screened for, which is a clinical disclosure dressed as helpfulness. Treat both surfaces as readable on a lock screen and by anyone sharing the household.
  • Apply minimum necessary, including to the letter. The envelope carries nothing clinical. No service name on the outside, no window showing anything but the address. The letter inside says a yearly visit is due and how to book; it does not recite the patient's history. Verify the address before sending, and treat returned mail as a stop signal rather than a retry.
  • Ask whether your recall is a treatment communication or marketing. This matters more here than in any of the other clinical builds. Routine preventive-care reminders are generally handled differently from promotion of a service, and the distinction can turn on the content, the funding of the communication and the jurisdiction. Where the message stays narrowly about a due preventive visit and how to book it, the practice is on much firmer ground than where it bundles in other services. Have your compliance counsel decide which side of the line your specific wording sits on, and keep the booking page single-purpose rather than letting it become a cross-sell surface.
  • Capture consent per channel, versioned, and keep recall consent separate. Record the exact wording shown, the version, the timestamp, the method and the source. A channel opt-out suppresses that channel; only an explicit recall opt-out suppresses the program. Keep revocation events as history, and never let a recall opt-out bleed into clinically necessary communication on another number.
  • Get a signed business associate agreement in place before any patient data flows. The platform acts as a business associate when it processes patient data for the practice, and so does every vendor downstream: the SMS carrier or aggregator, the email sending infrastructure, the print and mail fulfillment house (which receives names and addresses and is often overlooked) the calendar provider, any AI service touching message content, and any warehouse or spreadsheet the cohort reports are exported into. Identify each, confirm each is covered, and remember that an agreement with the platform does not extend to an integration or a mail house you engaged yourself.
  • Treat the cohort lists and the panel gap report as sensitive datasets. A list of patients overdue for care, per provider, is substantive clinical information about a large group of people. Restrict access by role, send it only on access-controlled internal channels, set retention periods, and resist the temptation to keep every historical cohort export indefinitely.
  • Handle the deceased check as a safety control, not a data-quality nicety. It is checked on every send, not per cohort. A recall letter to a family that has had a bereavement is the most avoidable harm in this entire build, and the only reliable defense is checking immediately before every outbound touch, across every channel including the mail queue.
  • Keep the audit trail complete. Every eligibility calculation, suppression hit and reason, send, consent change and decline should be attributable to a named workflow or person with a timestamp, including suppressions, because being able to show that a patient was correctly excluded matters as much as showing one was contacted.

All of the above describes operational practice, not legal advice. Which requirements apply to your practice, whether your specific recall wording counts as a treatment communication or as marketing, how consent must be worded for your jurisdiction and patient population, what retention periods apply, which vendors need agreements and in what form, and how state privacy and telecoms law interact with federal requirements are questions for the practice's own compliance counsel and privacy officer. Have them review the message templates, the letter, the booking page, the consent and preferences wording, the vendor chain including the mail house, and the retention configuration before the first cohort goes out, and again whenever a template or integration changes.

Scope and build cost are set per practice. Book a call at bookings.appbo.io to work through yours.

Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call