Back to the build library
Healthcare & clinics
Standard

Intake Form and Consent Automation

Digital intake and consent captured before arrival and filed to the right record, so the clipboard and the retyping both disappear.

Industry
Healthcare & clinics
Build effort
Standard
Typical time to launch
2–3 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

A new patient arrives for a nine o'clock appointment and is handed a clipboard with six pages on it. They spend twelve minutes filling it in, standing up, in a waiting room, from memory. Their medication list is approximate because the bottles are at home. Two fields are left blank and one is illegible. Then a staff member types all of it into the EHR, introducing a second generation of errors, and the original goes into a folder or a scanner. The appointment that was supposed to start at nine starts at nine fifteen, and the provider opens a chart that is still half empty.

Everything about that sequence is expensive. The patient's time is wasted, the staff member's time is spent on transcription that produces nothing of clinical value, and the provider starts the encounter gathering information that should have arrived before the patient did. The schedule absorbs the delay and the rest of the morning runs behind. Where it costs real money is the data quality: an incomplete medication list or a missing allergy is a clinical risk, and a missing signature on a consent or a financial policy is a billing problem that shows up weeks later when it is much harder to fix.

The compliance exposure is quieter but just as real. Paper intake forms carrying a full medical history sit in trays and folders and get carried between rooms. Consents get signed but not dated, or dated but not filed, or filed but against the wrong encounter. When someone asks six months later whether a particular patient consented to a particular thing, the honest answer is often that the form exists somewhere. This build replaces the clipboard with a sequence that runs before the visit: the right forms for the right visit type, sent on a schedule, completed on the patient's own phone at home where their medication bottles are, signed with a timestamp, and filed to the correct record with a durable trail showing exactly what was presented and exactly what was agreed.

02

What gets built

Pipeline and stages

One pipeline, Intake and Consent, one opportunity per upcoming appointment that requires intake.

  • Appointment Booked: record created, form set not yet determined.
  • Packet Assigned: the correct form set has been selected for this visit type and patient status.
  • Packet Sent: delivered, awaiting completion.
  • Partially Complete: some forms done, some outstanding.
  • Intake Complete: all demographic and history forms submitted.
  • Consents Signed: every required consent captured with a signature and timestamp.
  • Filed to Record: submissions written through to the EHR or chart.
  • Ready for Visit: nothing outstanding; the provider opens a complete chart.
  • Needs Staff Review: a submission flagged something requiring a human look before the visit.
  • On-Site Completion Required: the patient will complete at the office; staff know in advance.
  • Expired - Needs Refresh: an established patient whose information or consents are past the practice's refresh interval.
  • Canceled: closed with a reason.

Calendars

  • New Patient Visit and Established Patient Visit: separated at the calendar level, because the calendar is what selects the packet. One generic appointment type is the usual reason intake automation sends the wrong forms.
  • Procedure or Specialty Visit: any visit type carrying its own procedure-specific consent gets its own calendar or appointment type, so the extra consent is driven by the booking rather than by someone remembering.
  • Intake Assistance Call: short internal slots for patients who cannot complete forms digitally. Offering a call is what keeps this build from excluding people.
  • Extended Check-In: a longer arrival window the automation can flag when a patient reaches the visit with intake incomplete, so the schedule absorbs it deliberately instead of by accident.

Custom fields

  • patient_status (new, established, returning after gap), packet_assigned, packet_version, visit_type, packet_sent_at, packet_completed_at
  • demographics_complete, medical_history_complete, medication_list_complete, allergy_list_complete, pharmacy_on_file, emergency_contact_on_file
  • consent_treatment_signed, consent_treatment_signed_at, consent_treatment_version
  • notice_privacy_practices_acknowledged, npp_acknowledged_at, npp_version
  • consent_financial_policy_signed, consent_financial_policy_signed_at, consent_release_of_information, roi_recipients, roi_expires_on
  • consent_procedure_specific, consent_procedure_signed_at, consent_procedure_version
  • signer_identity (patient, parent, legal guardian, authorized representative), signer_name, signer_relationship, signature_method (typed, drawn, on-site)
  • filed_to_ehr_at, filing_status (pending, filed, failed, manual), filing_error_note
  • flagged_for_review, review_reason, reviewed_by, reviewed_at
  • last_intake_refresh_at, refresh_due_on
  • consent_sms, consent_email, consent_captured_at, consent_revoked_at, preferred_language, accessibility_need, digital_access (yes, limited, no)

Tags

  • Progress: packet-sent, packet-partial, intake-complete, consents-complete, ready-for-visit
  • Packet routing: packet-new-patient, packet-established, packet-procedure, packet-minor, packet-refresh
  • Exceptions: filing-failed, flagged-for-review, on-site-completion, no-digital-access, language-support-needed
  • Consent state: consent-expired, roi-expiring, npp-outdated
  • Messaging consent: sms-opt-out, email-opt-out, all-outreach-paused

Forms

Build these as separate forms rather than one long one. Separate forms let you track partial completion, resend only what is missing, and version each consent independently.

  • Patient Demographics and Contact: name, date of birth, address, phone, email, preferred language, emergency contact, pharmacy, and communication preferences including the SMS and email consent block.
  • Medical History: conditions, surgeries, family history, and the practice's screening questions. Built with conditional logic so a negative answer does not open fifteen irrelevant follow-ups.
  • Medication and Allergy List: deliberately its own form, because it is the one patients most often need to walk to a cabinet to complete, and the one with the highest clinical cost when it is wrong.
  • Consent to Treatment: versioned, with typed or drawn signature, date, and signer identity and relationship.
  • Notice of Privacy Practices Acknowledgment: presents the current notice and records acknowledgment with its version. Acknowledgment of a notice is not the same thing as consent to treatment, and the two should never be collapsed into one checkbox.
  • Financial Policy and Assignment of Benefits: versioned, signed, timestamped.
  • Authorization to Release Information: names specific recipients, states the scope, and carries an expiry date written to roi_expires_on. This one is time-bounded by design.
  • Procedure-Specific Consent: one per procedure the practice offers, attached to the matching appointment type and versioned separately.
  • Minor and Guardian Consent: the variant used when the patient is a minor, capturing guardian identity and relationship.
  • Intake Assistance Request: a single-question form for a patient who wants help, which books the assistance call.

BO's role and guardrails

  • BO chases incomplete packets, explains what each form is for in plain language, re-sends links, resumes a partially complete packet, and offers the assistance call or the on-site path.
  • BO can tell a patient which forms are outstanding and roughly how long each takes.
  • BO never fills in a form on a patient's behalf, never suggests answers, and never confirms a value back to the patient in a message. An intake answer is the patient's own statement.
  • BO never explains the legal effect of a consent, never advises whether to sign, and never characterizes what a patient is agreeing to beyond the form's own plain-language summary. "What does this mean?" routes to a human.
  • BO never discusses anything a patient has entered on a medical history form, and never asks a clinical follow-up question by SMS. If a submission needs clarification, that is a staff call.
  • BO escalates on any message describing a symptom, expressing confusion about a consent, or asking a clinical question, and on anything suggesting urgency.
  • BO stops on all-outreach-paused and honors any opt-out phrasing.

Numbers and channels

  • A dedicated local number for intake messaging, A2P 10DLC registered under the practice's own legal entity, separate from marketing.
  • Email from an authenticated practice subdomain. Subject lines reference the appointment, never the visit reason or form content.
  • Form links that are unique per patient per appointment, short-lived, and resumable, so a patient who gets halfway through does not start over. A link that never expires and is not tied to a patient is the most common security mistake in this build.
  • A landing page the patient can return to, showing which forms are done and which are outstanding, behind the same per-patient link.
  • Inbound voice routing so a patient who would rather do it by phone reaches someone who can.
  • Internal notification channel for flagged submissions and filing failures, carrying record links rather than submitted content.
03

How it runs, step by step

  1. A new patient books a visit nine days out on the New Patient Visit calendar. The booking form captures name, mobile, email, and the SMS and email consent checkboxes, writing consent_sms, consent_email, and consent_captured_at.
  2. The booking creates an opportunity in Intake and Consent at Appointment Booked. The packet assignment workflow reads the calendar and patient_status, selects the new-patient packet, writes packet_assigned and packet_version, applies packet-new-patient, and moves the stage to Packet Assigned. Because the appointment type is a routine new-patient visit rather than a procedure, no procedure-specific consent is added.
  3. Within thirty minutes the packet goes out. One text, one email, both pointing at a single per-patient link that opens a landing page listing the five forms with a progress indicator. The message says what is needed and roughly how long it takes, and names no clinical content. Stage moves to Packet Sent; packet_sent_at is stamped.
  4. The patient opens the link that evening and completes demographics and medical history in about seven minutes. The medication form asks them to list what they take, so they stop to fetch the bottles from the kitchen, which is the entire point of doing this at home rather than on a clipboard. They save and close.
  5. Partial submission writes demographics_complete and medical_history_complete true, leaves medication_list_complete false, applies packet-partial, and moves the stage to Partially Complete. The record now knows exactly what is outstanding, which is what lets the chase be specific rather than a repeat of the original message.
  6. Two days later, with the medication form still open, the chase fires: "Hi [first name], you're almost done with your forms for [date]: just the medication and allergy list left. Pick up where you left off: [link]." The link resumes rather than restarting.
  7. They finish the medication list. All intake forms are now complete, so packet_completed_at is stamped and the stage moves to Intake Complete.
  8. The consent sequence runs as its own step. Consent to treatment, the notice of privacy practices acknowledgment, and the financial policy are presented one at a time, each with its own signature capture and its own version stamp. The patient types their name, confirms the date, and identifies themselves as the patient rather than a representative, writing signer_identity, signer_name, and signature_method.
  9. Each signature writes its own fields: consent_treatment_signed_at with consent_treatment_version, npp_acknowledged_at with npp_version, consent_financial_policy_signed_at. Separate records, separate versions, so that when the practice revises its financial policy next year, this patient's history shows which text they actually agreed to. Stage moves to Consents Signed, tag consents-complete applied.
  10. A review rule fires on the medical history submission. The patient answered yes to one of the practice's screening questions that the clinical team has chosen to flag, so flagged_for_review is set with a review_reason, the stage moves to Needs Staff Review, and a nurse gets a task. The flag is a routing instruction, not a clinical judgment. The automation knows only that a human should look.
  11. The nurse reviews the submission in the chart, confirms nothing needs to change about the visit, and records reviewed_by and reviewed_at. The flag clears and the record returns to the main path.
  12. The filing workflow writes the submissions through to the EHR against the correct patient and encounter, then stamps filed_to_ehr_at and sets filing_status to filed. Stage moves to Filed to Record. Had the write failed, filing_status would be failed with a filing_error_note, filing-failed applied, and a staff task created, because a form the patient completed that never reached the chart is worse than no form at all, since everyone believes it is done.
  13. With intake complete, consents signed, and filing confirmed, the stage moves to Ready for Visit and ready-for-visit is applied. The day-before reminder changes its copy accordingly: "You're all set for tomorrow. Nothing to bring, nothing to fill in. Just arrive a few minutes before [time]."
  14. A sweep the afternoon before lists every appointment on tomorrow's schedule that is not at Ready for Visit, grouped by what is outstanding. Patients with nothing done get flagged for Extended Check-In so the front desk can plan for the clipboard rather than be ambushed by it, and the schedule absorbs it on purpose.
  15. After the visit, last_intake_refresh_at is stamped and refresh_due_on is set to the practice's interval. When this patient books again inside that window, the refresh packet asks only whether anything has changed and re-presents any consent that has been revised since they signed it. Three questions instead of five forms, and a new signature only where the text actually changed.
04

Automations in detail

Eight workflows. Every one checks consent and suppression before its first send, caps automated patient messages at three per packet, and exits on cancellation or human takeover. Waits assume an appointment at least seven days out; the first workflow compresses the sequence for shorter notice.

1. Packet Assignment

Trigger: appointment booked on any patient-facing calendar.

Conditions and branches: this workflow sends nothing. Its only job is to pick the right form set, and it is where the build succeeds or fails.

  • patient_status is new, or the contact has no prior completed packet: assign the new-patient packet, tag packet-new-patient.
  • Established and last_intake_refresh_at inside the refresh interval: assign the refresh packet, tag packet-established. This is the short "has anything changed?" variant.
  • Established but past the refresh interval: assign the full packet, tag packet-refresh, and move the stage to Expired - Needs Refresh.
  • Appointment type carries a procedure consent: append the matching Procedure-Specific Consent and tag packet-procedure.
  • Patient date of birth indicates a minor: swap in the Minor and Guardian Consent variant, tag packet-minor, and route delivery to the guardian contact on file rather than the patient's own mobile.
  • Any consent on file has a version older than the current one: add that consent to the packet regardless of packet type. Add tags consent-expired or npp-outdated as applicable.
  • digital_access is no: skip to workflow 6 and send nothing digital.
  • Days until appointment under 3: compress all waits in workflow 2 to roughly a third and notify the front desk at the start.

Actions in order:

  1. Write packet_assigned, packet_version, visit_type, patient_status. Apply the routing tag.
  2. Move stage to Packet Assigned. Hand to workflow 2.

Stop and exit: immediately after assignment. If the appointment type is later changed, re-run this workflow and reconcile the packet rather than leaving the original assignment in place.

2. Packet Delivery

Trigger: stage moves to Packet Assigned.

Conditions and branches: branch on consent_sms and consent_email. Neither available: go straight to workflow 6. Branch on preferred_language to select the translated packet, and tag language-support-needed if no translation exists for that language, so a human handles it.

Actions in order:

  1. Generate the per-patient, per-appointment packet link. Set its expiry to the appointment date plus a short grace period.
  2. Wait 30 minutes, so a patient who booked by phone is not texted mid-call.
  3. SMS: "Hi [first name], thanks for booking with [practice name] on [date]. We've got a few forms to complete before your visit. About 10 minutes, and you can do them from your phone: [packet link]. Reply STOP to opt out."
  4. Email in parallel. Subject: "Your forms for [date]". Body lists the forms by neutral name, gives the link, and says the forms can be completed in more than one sitting.
  5. Stamp packet_sent_at. Move stage to Packet Sent. Add tag packet-sent. Set the automated message counter to 1.

Stop and exit: all forms submitted, appointment canceled, or opt-out. Never list a procedure name or specialty in the message: use the form's neutral title.

3. Completion Chase

Trigger: record at Packet Sent or Partially Complete for 48 hours.

Conditions and branches:

  • Nothing started: resend the full prompt with a light nudge about why it helps.
  • Partially complete: name only what is outstanding. A generic "please complete your forms" to someone who did four of five forms is the fastest way to lose them.
  • Branch on time remaining. Inside 48 hours of the appointment, skip ahead to workflow 6 rather than continuing the digital ladder.

Actions in order:

  1. Attempt two: SMS. Not-started: "Hi [first name], your forms for [date] are still waiting. Doing them now means you won't be filling anything in at the office: [link]." Partial: "Hi [first name], you're nearly done: just [outstanding form names] left. Pick up where you left off: [link]." Increment the message counter to 2.
  2. Wait 3 days. If still incomplete, attempt three. Email on the same pattern, plus a line offering help: "If you'd rather do these over the phone or at the office, just reply or call [number] and we'll sort it out." Counter to 3.
  3. Wait 2 days. The automated cap is reached, so no further patient message fires. Instead create a front desk task, "Call about outstanding intake forms before [date]", due same day.
  4. If the task is closed with no contact, tag on-site-completion, move stage to On-Site Completion Required, flag the appointment for Extended Check-In, and hand to workflow 6.

Stop and exit: packet complete, opt-out, cancellation, or handoff to workflow 6. Hard cap at three automated messages. The ladder never loops, and BO's conversational replies do not count against the cap because the patient initiated them.

4. Consent Capture and Versioning

Trigger: stage moves to Intake Complete, or the consent portion of the packet is opened.

Conditions and branches:

  • Each required consent is evaluated independently against what is on file and its version. Already signed at the current version: skip it. Signed at an older version: present it again.
  • packet-minor: present the guardian variant, require signer_relationship, and do not accept a signature where signer_identity is left as patient.
  • Release of information is presented only if the practice's policy requires it for this visit type, and it always carries a recipient list and an expiry.

Actions in order:

  1. Present consents one at a time, each on its own screen with its own signature capture. Do not stack them behind a single checkbox.
  2. On each signature, write that consent's own fields: the signed flag, the _signed_at timestamp, and the _version of the text that was displayed. Store the displayed text version, not merely a version number pointing at whatever is current.
  3. Write signer_identity, signer_name, signer_relationship, signature_method once per signing session.
  4. If the release of information is signed, write roi_recipients and roi_expires_on.
  5. When every required consent is current: move stage to Consents Signed, add consents-complete, remove consent-expired and npp-outdated.
  6. If a patient opens a consent and abandons it without signing, wait 1 day and send one reminder naming only the consent's neutral title, then stop and create a staff task. A patient hesitating over a consent may have a question, and the right response is a person, not a third reminder.

Stop and exit: all required consents current, or escalation to staff. A consent is never pre-filled, never defaulted to checked, and never signed by anyone other than the patient or an identified representative.

5. Submission Review and Filing

Trigger: stage moves to Consents Signed, or any individual form is submitted (filing can be incremental).

Conditions and branches:

  • Any answer matching a practice-defined review flag: set flagged_for_review and review_reason, move stage to Needs Staff Review, create a task for the clinical reviewer. Filing still proceeds. The flag routes a human, it does not block the chart.
  • Demographics differ from the EHR record: branch per the practice's source-of-truth decision, either overwriting or creating a confirmation task.
  • Filing integration unavailable: set filing_status to pending and retry rather than failing silently.

Actions in order:

  1. Write submissions through to the EHR against the correct patient and encounter.
  2. On success: stamp filed_to_ehr_at, set filing_status to filed, move stage to Filed to Record.
  3. On failure: set filing_status to failed, write filing_error_note, apply filing-failed, and alert the internal channel immediately with a record link. Create a task to file manually, due before the appointment.
  4. Retry the write automatically after 15 minutes, then 1 hour, then 4 hours. If all three retries fail, escalate to the practice manager. Three consecutive failures usually means the integration is down rather than the record is bad.
  5. Once filing is confirmed and no review flag is outstanding: move stage to Ready for Visit, add ready-for-visit, stamp last_intake_refresh_at and set refresh_due_on.
  6. Send one confirmation: "All done, [first name]. Your forms are complete and we have everything we need for [date]. See you then." It confirms completion and nothing about content.

Stop and exit: stage reaches Ready for Visit, or a staff member resolves the exception manually. A filing-failed record never silently closes.

6. Assisted and On-Site Completion

Trigger: digital_access set to no or limited; Intake Assistance Request submitted; on-site-completion applied; or the chase ladder exhausting.

Conditions and branches: branch on whether the patient wants a phone call, prefers to complete at the office, or needs language or accessibility support. Each gets a different path, and none of them is a dead end.

Actions in order:

  1. Tag no-digital-access or on-site-completion. Move stage to On-Site Completion Required.
  2. Assistance call branch: offer the Intake Assistance Call calendar. "Hi [first name], happy to do these forms with you over the phone. Pick a time here: [booking link], or call [number]." On the call, staff complete the forms in the platform on the patient's behalf, setting signature_method to on-site and recording who entered the data.
  3. On-site branch: flag the appointment for Extended Check-In, notify the front desk the afternoon before with the list of what is outstanding, and prepare the printed packet so it is ready rather than hunted for.
  4. Language branch: apply language-support-needed, route to the staff member or interpreter service who covers that language, and do not send further automated messages in a language the patient did not choose.
  5. On completion by any route, run workflow 5 for filing exactly as for a digital submission, so the record ends up identical regardless of how the data arrived.

Stop and exit: forms completed by any means, or the appointment passes. Note that consents still need signing on this path. The on-site route changes the medium, never the requirement.

7. Pre-Visit Sweep and Exception Digest

Trigger: scheduled daily, mid-afternoon, covering the following day's schedule.

Conditions and branches: group by what is outstanding rather than producing one undifferentiated list. Forms missing, consents missing, filing failed, review pending, and on-site expected are five different problems needing five different responses.

Actions in order:

  1. Query every appointment on tomorrow's schedule not at Ready for Visit, On-Site Completion Required, or Canceled.
  2. Send one internal digest to the front desk and practice manager, grouped as above, ordered by appointment time, carrying record links and counts rather than patient detail.
  3. For any record with filing-failed, escalate separately and immediately rather than burying it in the digest. A completed form that is not in the chart is the one exception that cannot wait until tomorrow.
  4. For records with consents outstanding and the appointment inside 24 hours, create individual call tasks. Consents are the items that actually block or complicate a visit.
  5. Flag appointments with nothing completed for Extended Check-In so the schedule reflects reality.
  6. Send one final patient reminder only where the automated cap has not been reached: "Hi [first name], see you tomorrow at [time]. If you have a minute, finishing your forms now will save time at the office: [link]."

Stop and exit: runs once daily and ends. Track the digest's size over time. A falling exception count is the clearest evidence the earlier workflows are doing their job.

8. Consent Expiry, Revocation and Refresh

Trigger: any of: roi_expires_on approaching; a consent version being updated in the practice's library; refresh_due_on passing; a revocation submitted; an SMS opt-out or email unsubscribe.

Conditions and branches: four genuinely different paths, and collapsing them is the mistake this workflow exists to prevent.

  • Release of information expiring: tag roi-expiring 30 days out, notify the staff member who relies on it, and create a task to decide whether to seek a renewal. Do not auto-renew; an authorization that renews itself was never time-bounded.
  • Consent text revised: flag every active patient whose signature is against the prior version with consent-expired or npp-outdated. Do not send a mass re-signature campaign. Let workflow 1 pick it up at their next booking, which is both less intrusive and better evidence of a real reading.
  • Refresh interval passed: set stage to Expired - Needs Refresh so the next booking triggers the full packet.
  • Revocation submitted: handle by what was revoked. A withdrawn release of information must immediately stop any disclosure that relied on it and notify the recipient list. A withdrawn messaging consent suppresses the channel.

Actions in order:

  1. Write the relevant field false and stamp consent_revoked_at with the exact time and the source it arrived from.
  2. Apply the matching tag: sms-opt-out, email-opt-out, or all-outreach-paused.
  3. Remove the contact from every active sequence, including steps already queued inside a wait. Test this specifically. A packet chase mid-wait is exactly the kind of send that leaks past a naive suppression.
  4. Send one confirmation on the revoked channel where permitted: "You've been unsubscribed from texts from [practice name]. For anything you need, call [number]." Nothing further on that channel.
  5. Create a record note stating what was revoked, what channels remain, and whether an upcoming appointment is affected.
  6. If a packet is outstanding and no digital channel remains, hand to workflow 6 so the patient still gets their forms by a route that works.
  7. Release-revocation branch: notify each party on roi_recipients that the authorization has been withdrawn, and record that notification on the audit trail.

Stop and exit: runs once per event. Re-consent always requires a fresh affirmative submission against the current version. No workflow re-enables a consent field, and no passage of time restores one.

Before launch, test five things: that a procedure appointment type pulls in the procedure consent; that a minor's packet routes to the guardian and refuses a patient-identity signature; that an expired packet link fails closed; that a filing failure produces a visible alert rather than a silent stage change; and that an opt-out fired mid-chase stops the queued message and routes to the assisted path. Then have someone outside the project complete the packet on a phone, start to finish, and time it. If it takes longer than you told the patient it would, shorten the forms rather than changing the message.

05

What changes

The clipboard disappears, and so does the transcription. Patients complete intake at home with their medication bottles in front of them, which produces better data than the waiting room ever did, and nothing has to be retyped because submissions file straight to the record. Staff time shifts from data entry to the handful of records that genuinely need a human.

Appointments start on time. A provider opening a complete chart is starting the encounter at the beginning rather than catching up, and the first visit of the morning no longer sets the day fifteen minutes behind.

Consent becomes auditable in a way paper almost never is. Every signature carries a timestamp, the version of the text presented, the signer's identity and relationship to the patient, and the method of signature. When the practice revises a consent or its notice of privacy practices, the version stamp means the history stays accurate rather than being quietly overwritten by the new text. Release authorizations carry expiry dates and surface before they lapse instead of after.

The exception list becomes visible. Instead of discovering at check-in that a patient has done nothing, the practice sees tomorrow's gaps this afternoon, grouped by what is missing, with time to call.

And the people this kind of automation usually excludes stay included, because the assistance call, the on-site path, and the language and accessibility flags are built in from the start rather than retrofitted after someone complains.

Metrics to watch

  • Share of appointments reaching Ready for Visit before the appointment date: the headline number.
  • Packet completion rate and median hours from send to completion, split by patient_status. New patients and established patients behave differently and should be measured separately.
  • Per-form drop-off. This is the most actionable metric in the build: whichever form loses the most patients is the form to shorten. The medication list and the medical history are the usual culprits.
  • Partial-to-complete conversion rate after the chase, which tells you whether the resume link is working.
  • Average minutes of staff transcription time per new patient, before and after. This is the clearest cost saving and it is worth measuring deliberately.
  • Filing failure rate and median time to resolve a failure. A quietly rising failure rate is the most dangerous number here.
  • Flagged-for-review rate and time to review. If the flag rate is very high the rules are too broad and staff will start ignoring them.
  • On-site completion rate, segmented by digital_access and preferred_language, so you can see who the digital path is not serving.
  • Average appointment start delay for new patients, before and after.
  • Consent currency: the count of active patients whose consents are past the refresh interval, or whose release authorizations are approaching expiry.
06

Before you start

Operational prerequisites

  • Appointment types that actually distinguish visit kinds. The packet is selected from the calendar or appointment type, so a practice that books everything as one generic appointment cannot route packets correctly. Fix this first; it is the most common blocker.
  • Current, approved text for every consent and for the notice of privacy practices, each with a version identifier and a named owner. Start versioning on day one even if nothing has changed yet, because retrofitting versions onto signatures already collected is not possible.
  • A decision on which forms are mandatory before a visit and which are desirable. A hard gate that blocks a patient from being seen is a clinical and ethical decision, not a configuration default. Most practices make consents mandatory and history forms desirable.
  • Agreed review flags, set by the clinical team. Which intake answers should route to a human before the visit. Keep the list short; a flag on everything is a flag on nothing.
  • A refresh interval for established patients, and a rule for which consents must be re-signed on revision versus which only need re-acknowledgment.
  • A non-digital path that genuinely works. Some patients cannot or will not complete forms on a phone. The assistance call, a paper option at the office, and staff entry on the patient's behalf all need to exist, and the automation needs to route to them rather than treating these patients as non-responders.
  • Translated forms where your patient population needs them, and a plan for interpretation. preferred_language is only useful if there is something to route to.

Integrations

  • The EHR or practice management system, natively or through Zapier or Make, for writing submissions to the correct patient and encounter. Map every field explicitly and test the mapping with real-shaped data before launch. Decide what happens on a write failure and build that branch. Silent failures are the worst outcome in this build, because everyone downstream believes the form is in the chart.
  • Decide and document which system is the source of truth for demographics. If the patient updates an address at intake, does it overwrite the EHR record or create a task for someone to confirm? Both are defensible; having no answer is not.
  • Google Calendar or Outlook for the assistance call and extended check-in calendars.
  • Document storage for signed consent artifacts, under the same business associate agreement as everything else.
  • Slack or email for flagged submissions and filing failures.

Numbers and messaging setup

  • Provision a dedicated local number and complete A2P 10DLC brand and campaign registration under the practice's own legal entity before launch, registered to reflect appointment and care coordination messaging. Keep it separate from marketing senders.
  • Configure opt-out handling for STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, and QUIT, plus natural-language variants, with immediate and global suppression including sequences already mid-wait.
  • Build the opted-out path explicitly: email only, or a staff call, or the on-site packet. A patient who opts out of texts still needs to sign a consent, so this cannot be a dead end.
  • Set quiet hours in the patient's own time zone and confirm them against your state's rules. Intake chases are never urgent, so there is no reason to seek an exception here. Hold the send and let it go out in the morning.
  • Cap the chase. Three automated touches per packet is plenty; after that it is a phone call. A patient who has not responded to three reminders is telling you something, and a fourth text does not help.

Protected health information and consent

  • No clinical content in SMS bodies or email subject lines. The message says forms are waiting for an upcoming appointment and gives a link. It does not name the visit type, the procedure, the specialty, or anything a patient has entered. "Your pre-colonoscopy forms" discloses a procedure to anyone who glances at the lock screen.
  • Never echo a submitted answer back in a message. Confirmations say the form was received, not what it said. This applies to BO as much as to templates.
  • Apply the minimum necessary standard to the forms themselves, not just the messages. Collect what the practice will actually use. Every field is a field you must then protect, and a question nobody reads is pure liability. Review the packet annually and delete what has gone stale.
  • Make form links per-patient, per-appointment, short-lived, and resumable. A guessable or permanent link to a prefilled intake form is a direct exposure. Test that an expired link fails closed rather than opening a blank form that files to the wrong record.
  • Keep the consents separate and separately versioned. Consent to treatment, acknowledgment of the notice of privacy practices, the financial policy, a release of information, and any procedure consent are five different things with five different scopes. Bundling them into one signature saves a patient ten seconds and destroys your ability to show what they agreed to.
  • Record signer identity and relationship every time. A guardian signing for a minor and a patient signing for themselves must be distinguishable in the record. Note that rules about who may consent for a minor, and about services a minor may consent to themselves, vary by state and by service type: build the field, and get the rules from counsel.
  • Give release authorizations an expiry and surface it. roi_expires_on exists so an authorization does not sit in a chart looking valid years after its scope ended. Run a workflow that flags them before they lapse.
  • Build consent revocation as a real path. A patient may withdraw a release of information or withdraw messaging consent. Both need a form, a timestamp in consent_revoked_at, immediate effect on anything downstream that relied on that consent, and a note on the record. Revoking a release should also notify whoever was relying on it.
  • Keep an audit trail that shows what was presented, not just what was signed. Store the version of each consent text alongside the signature, so you can reproduce exactly what the patient read. Capture timestamps, signer identity, and signature method. Confirm the retention period, confirm ordinary users cannot edit or delete the trail, and test the export.
  • Restrict access by role. A scheduler needs to know whether a packet is complete; they do not need to read the medical history. Set field-level permissions so completion status and content are separable.
  • Put a signed business associate agreement in place before the first live patient, covering the platform, the messaging carrier, the email sender, form and file storage, the EHR connector, and any automation bridge such as Zapier or Make. Check whether the bridge retains payload contents in its own logs. An intake payload sitting in a middleware log is a copy of a full medical history in a place nobody has inventoried.

This section describes operational practice, not legal advice. Consent requirements, the validity of electronic signatures, minor consent rules, retention periods, and what a notice of privacy practices must contain all vary by state and by the practice's own policies. Have the practice's own compliance counsel review the consent text, the signature mechanism, and the retention plan before going live, and again whenever a consent is revised. To scope this build for your practice, book a call at bookings.appbo.io.

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