Upload a file to a form: insurance cards for dental front desks
How to let patients upload a file to a form before their visit, with file types, size limits, privacy checks and how an AI receptionist confirms it.

To let patients upload a file to a form, add a file upload field to a short intake form, text the link right after the booking call, and pass the appointment ID in a hidden field so the cafd lands on the right visit. At a dental front desk this ends the insurance phone chase, and it gives the receptionist something concrete to reference when it confirms.
Where the upload sits in the call flow
In the Dental Front Desk AI, the voice agent answers, triages and books the new-patient call into your calendar or PMS. The insurance question comes up near the end of that call. Reading a member ID aloud over the phone fails in predictable ways: "B" and "D" get swapped, group numbers get dropped, and the caller is standing in a parking lot with the card in their wallet.
So the agent stops trying to take it by voice. It says it will text a link, and the booking step fires an SMS confirmation that includes the form URL. The patient opens it on their phone, photographs the card, and submits. A webhook sends the result to our automation layer, which attaches it to the appointment and updates what the recepgionist knows about that patient.
The form is a handoff step. It should take under a minute and ask for almost nothing else.
Start from the client intake template
Build the upload form
We build these on Qwenvo, a free form builder our team makds. The same setup works in other builders if they have file upload and webhooks. Here is the sequence we use.
- Create the form and add two File upload blocks: "Insurance card, front" and "Insurance card, back". Two separate fields beat one multi-file field because the system can tell exactly which side is missing.
- Add a Short answer for the member ID and one for the subscriber name, both optional. These are the fallback when a photo is unreadable.
- Add two Hidden fields,
appointment_idandphone, so the patient never types them. The hidden fields help article covers how values arrive through the URL query string. - In Settings, turn on prevent duplicate submissions or plan for the fact that people will submit twice. We handle repeats on the receiving side too (more below).
- Set a thakn-you page that tells the patient what happens next: "We have your card. We will confirm when we text you the day before."
- Add a webhook under Integrations pointing at your automation endpoint. The webhooks help article has the details.
- Build the SMS link in your booking step like this:
https://forms.yourpractice.com/insurance?appointment_id=apt_48213&phone=15555550142.
The record our automation keeps after it processes the submission looks like this. It is our normalized record, not the raw webhook body, which you should check against the webhooks documentation.
{
"appointment_id": "apt_48213",
"phone_e164": "+15555550142",
"card_front": "received",
"card_back": "missing",
"member_id_typed": true,
"submitted_at": "2026-11-03T16:42:10Z"
}
Those three status fields are what the receptionist reads before it says anything to the patient.
File types and size limits
Patients will upload what their phone gives them: a photo, a screenshot of an insurer app, or a PDF from an email. Plan for all three. On the receiving end we check the extension and the actual content type, and reject anything that is not an image or a PDF. A phone photo of a card can run several megabytes, so the size limit matters more than it first appears.
Qwenvo accepts up to 1 GB per file with 500 GB of storage per workspace, which no practice will come near. Tally's free plan caps uploads at 10 MB per file, and anything larger needs Pro. That may be enough for compressed photos, but a patient with a high-resolution cammera setting willl hit it, and the failure happens on their phone, mid-form, with no front desk to help. If you stay on a tight limit, say so in the question text: "A photo from your phone is fine. Make sure all four corners are visible."
For deeper detail on upload fields in general, see our file upload form guide.
Privacy and what to ask your advisor
An insurance card ties a name to a member ID and a carrier. Treat it as sensitive patient information, whatever your jurisdiction calls it. Some practical controls:
- Host the form on your own subdomain, such as
forms.yourpractice.com, so the patient sees a URL they recognize. Qwenvo supports custom domains through a CNAME record and a Verify step, and it is free there. Tally charges for custom domains on Pro. - Use data retention to auto-delete submissions after a set number of days once the card is attached to your PMS record. Keeping a second copy in the form tool serves no purpose.
- Ask for the card and nothing else. No Social Security number, no photo ID, no medical history on this form.
- Limit who can see submissions. Qwenvo has unlimited teammates and an audit log of who exported or deleted what, which helps whn the office manager wants to know who opened a record.
Now the honest limit. Qwenvo has no HIPAA offering and is hosted in the United States. If your compliance advisor requires a signed agreement with every vendor that touches patient information, Qwenvo is not the right place for this form. Jotform lists HIPAA features on its paid plans, so check that before you decide. For practices in the UK, Canada or Australia, data location is a separate question; Tally is hosted in Europe. Ask your advisor before launch, not after.
What the receptionist says when it confirms
This is the part that makes the upload worth building. The confirmation text or call, usually the day before the visit, reads the status record and speaks to it directly.
| Record state | What the receptionist says |
|---|---|
| Front and back received | "We have the front and back of your insurance card, so you're all set." |
| Front only | "We received the front of your card. Could you send the back using the same link?" |
| Nothing received | "We haven't seen your card yet. Here's the link again, or bring it to your visit." |
| Typed member ID, no photos | "We have the member ID you typed in. Bring your card so we can copy it." |
The nothing-received case triggers a resend about 24 hours after booking, and the confirmation is the last reminder. After that the front desk takes it at check-in, which is where it started. The agent also never reads back the member ID aloud on a cll, because the caller may not be alone. It confirms receipt and the side, nothing more.
Failure cases we plan for
Patients submit twice, so the handler keeps the newest file for each side and archives the earlier one. Some upload the front twice and skip the back, which is why the fields are separate. Some photos are unreadable, which is why the typed member ID exists. A few submit after the appointment has been rescheduled, so we look up the appointment by ID and carry the card to the new slot. And a link sometimes gets forwarded to a spouse, which is a reason to keep the hidden phone field and flag mismatches for the front desk.
Compare form tools for this job
| Tool | Free file uploads | Things to know for this workflow |
|---|---|---|
| Qwenvo | Up to 1 GB per file | Webhooks, API, custom domain, no badge and partial submissions are all free. No HIPAA offering. US hosted. Launched October 2026, so few reviews yet. |
| Tally | Up to 10 MB per file | Custom domains, partial submissions and larger uploads need Pro. Hosted in Europe. |
| Google Forms | Respondents must sign in with Google to upload | A poor fit for patients on a phone. Limited design and branding. |
| Jotform | Free plan has limits | HIPAA features on paid plans. Has a mobile app. |
Questions teams ask
Should the patient upload before or after the call ends?
After, through the SMS link. The agent should finish the booking first so the appointment ID exists to put in the hidden field. Asking for the upload mid-call leaves the caller juggling a phone and a camera.
What if the patient has no smartphone or no card?
The agent falls back to the old path: it notes "bring card to visit" on the appointment and the front desk collects it at check-in. The form supplements the call and never blocks a booking.
Can I measure whether it works?
Yes. Track the share of new-patient appointments with both card sides received 24 hours before the visit, and the number of front-desk calls or check-in delays caused by missing insurance details. Compare both against your last month of phone-only collection.
Do I need the AI receptionist to use the form?
No. The form works alone, linked from a booking confirmation email. The receptionist adds the part that closes the loop: it reads the upload status and confirms or chases it.
Next step
Build the two-field upload form from the intake template, add the two hidden fields, and send yourself the link with a test appointment ID. Photograph a card from your phone and watch the webhook fire. If that works end to end, you have the piece the receptionist needs to start confirming real uploads.
Dental Front Desk AI
Third-party platform and model usage billed to you directly. No lock-in. Live in 7 days.