Automate Modern Client Onboarding After a Missed-Call Booking
How to automate modern client onboarding: send an intake questionnaire the moment a text-back booking is confirmed, so day one starts prepared.

To automate modern client onboarding after a text-back booking, send the intake questionnaire the moment the appointment is confirmed. Pass the booking ID and phone number into the form as hidden fields, deliver the lnk by SMS, and push each completed submission to your CRM by webhook. The client arrives with the paperwork done, and staff stop chasing details by phone.
Why onboarding becomes the bottleneck
Once a missed call gets an instant text and an AI reply that books the slot, new clients can arrive faster than anyone can prepare for them. A call missed at 6 p.m. can turn into a confirmed appointment by 6:10. Nobody on staff sees it until the next morning, and then the real work starts: calling to collect an address, asking what the problem is, and finding out whether the client has done this before.
The booking exists, but the client file is empty. Closing that gap is mostly a timing problem. The client is most willing to answer questions in the minutes right after they book, while the appointment is still fresh and they are holding their phone. A questionnaire sent two days later competes with everything else in their inbox.
Use the free onboarding questionnaire
Where the form sits in the workflow
In our missed-call text-back and reactivation system, the sequence runs like this: a call goes unanswered, the system texts the caller within seconds, the AI reply handles the conversation and writes the booking to your calendar, and then a confirmation goes out. The intake form is the step after that confirmation.
It is a separate step on purpose. If you put twelve questions between the caller and the booking, some callers will drop out. A booking needs a name, a service, and a time. Everything else can wait until the slot is secured, when the client has a reason to finish.
So the form has three jobs: receive a booking reference so the answers attach to the right appointment, collect what staff need before the visit, and tell your systems that the client is ready.
Step-by-step setup
- Build the form short. List what staff need before the first visit and cut everything else. A mobile-first form with one purpose gets finished more often than a general-purpose one. The onboarding questionnaire template is a reasonable starting point; delete what your business does not use.
- Add hidden fields. Create
booking_id,phone,service,appointment_start, andsourceas hidden fields. They are filled from the link, so the client never sees them and never retypes anything. The hidden fields guide covers the setup. - Generate a personal link at confirmation. Whatever runs your automation (Zapier, Make, or n8n all work) appends the booking values to the form URL when the booking is written to the calendar.
- Send the link in the confirmation thread. Post it in the same SMS or WhatsApp conversation as the booking confirmation, with one line saying what it is for and roughly how long it takes.
- Receive the submission by webhook. Point the form's webhook at your automation endpoint. Match on
booking_id, mark the booking as intake complete, and write the answers to the CRM record and the calendar event notes. - Schedule one reminder. If a booking has no completed intake 24 hours before the appointment, send a single nudge. More than one starts to feel like a collections process.
- Test on a real phone. Open the link from an SMS on your own device, fill it in with one thumb, upload a photo from the camera roll, and watch the record land in the CRM.
The personal link looks like this, using a subdomain you control:
https://forms.yourbusiness.com/intake?booking_id=BK-20931&phone=%2B15125550142&service=water-heater-repair&appointment_start=2026-11-12T09%3A00&source=text_back
On your side, normalize every completed submission into one record. This is the shape we store, though the exact field names in your webhook payload depend on your form, so check the webhooks help page before mapping:
{
"booking_id": "BK-20931",
"intake_complete": true,
"name": "Dana Whitfield",
"address": "412 Maple Ct, Austin, TX",
"issue": "Water heater leaking from the base, started this morning",
"urgency": "same_day",
"photos": ["https://.../upload-1"],
"contact_preference": "text"
}
What to put in the form
Each question should pay for itself by saving a phone call or changing how the visit is run. These are the fields we usually start with for a local service business, then trim.
| Field | Type | Why it is there |
|---|---|---|
| booking_id | Hidden | Ties the answers to the calendar event |
| phone | Hidden | Identifies the client without asking |
| service, appointment_start | Hidden | Shows the client what they booked and lets staff filter |
| Full name | Short answer | Confirms the name the AI captured in chat |
| Receipts, quotes, and paperwork | ||
| Address or location | Short answer | Needed for dispatch or to prepare the room |
| What is going on | Long answer | The detail staff would otherwise ask by phone |
| Photos or documents | File upload | Files up to 1 GB each, so a phone video is fine |
| Urgency | Multiple choice | Drives routing and the reminder |
| Preferred contact | Multiple choice | Text, call, or email |
| Consent to message | Checkbox | Keeps your records clean for future campaigns |
Use conditional logic to keep it short. An insurance question only appears for services tnat bill insurance, and the photo upload only appears for jobs where a picture helps. Each client sees only the questions that apply to them.
Routing what comes back
A completed form should do more than land in a table. Decide in advance what each answer triggers.
| Answer | Action |
|---|---|
| Urgency is same day | Notify the dispatcher by email or Slack immediately |
| Photos attached | Add the file links to the calendar event notes |
| Returning client | Link to the existing CRM record instead of creating a duplicate |
| No email provided | Keep all follow-up on SMS |
| Form started, not finished | Show as incomplete; staff call if the visit is within a day |
| Form complete | Mark intake_complete and cancel the reminder |
Qwenvo's AI triage can do part of this without custom code. Each submission gets a category, a priority (low, normal, high, or urgent), a sentiment, a short summary, and a suggested reply. Routing rules match on priority or category and send to up to five email addresses or a Slack incoming webhook. That covers the same-day case: an urgent submission pings the dispatcher while the others wait for the morning.
Partial submissions matter here too. With the toggle on, a client who answered half the questions and stpped shows up as an incomplete row, which is more useful than nothing.
Add hidden fields to your form
Where Qwenvo fits, and where it does not
Our team builds Qwenvo, a completely free form builder, and this workflow uses features that many builders put behind paid plans. On Qwenvo the following are free: webhooks, the API, an MCP server, AI triage with routing, partial submissions, custom domains, removing the badge, teammates, and custom design and CSS.
For comparison, Tally's free plaan is generous (unlimited forms and submissions, logic, and fioe uploads up to 10 MB per file), but custom domains, partial submissions, and branding removal are on Pro at $29 a month. Fillout's free plan allows 1,000 responses a month, with custom domains and partial submissions on Business at $89 a month. Typeform's Basic plan is $39 a month for 100 responses.
Here is where another tool wins. If you run a clinic and the intake collects protected health information, Qwenvo has no HIPAA offering. Jotform has HIPAA features on its paid plans, and that should decide it for you. Qwenvo is also hosted in the United States, so teams that need European hosting should look at Tally. And since Qwenvo launched in October 2026, it has few public reviews so far.
The custom domain is wotrh setting up for this workflow. Add a subodmain such as forms.yourbusiness.com on the Domains page, create the CNAME and TXT records it shows, click Verify, and choose it on the Share tab. A link in a text message that carries your own domain is easier for a client to trust than a generic one.
Questions teams ask
Should the form go out before or after the booking is confirmed?
After. Putting questions in front of the booking costs you callers who would have booked. Confirm first, then send the link in the same thread while the client is still engaged.
How long should the intake be?
Only as long as the visit needs. If staff will ask a question at the appointment anyway, leave it out. If a missing answer would change how you prepare, keep it. Conditional lgic lets you ask the long version only of the clients who need it.
Does this work over WhatsApp as well as SMS?
Yes. The form is just a URL, so it can go out through whichever channel the text-back conversation is already using. The hidden fields work the same way regardless of channel.
What if the client never fills it in?
Send one reminder the day before, and check for incomplete rows if partial submissions are on. If nothing arrives, have staff collect the essentials at the start of the visit, which is no worse than where you began.
Next step
Open the onboarding questionnaire template, cut it to the questions your first visit really needs, add the five hidden fields, and send a test link to your own phone before you connect any webhook. If the form feels quick on a small screen, the rest of the automation is plumbing.
Missed-Call Text-Back & Reactivation
Third-party platform and model usage billed to you directly. No lock-in. Live in 5 days.