Count how many times your office types the same appointment. Let's say it goes like this: the setter writes it down on the call, the office types it into the CRM, then onto the rep's calendar, then somebody texts the rep the address, and then it goes on the board in a spreadsheet. That's the time written down four times for one homeowner, and every one of those is a fresh chance to turn Thursday into Wednesday.
On our own floor it's typed once. The setter books it on the dialer when the homeowner says yes. Then it waits in QA, which is a reviewer checking the booking with the call recording attached. When QA approves it, that creates the sales opportunity and the calendar event, and then the rep sees it. Nobody retypes the address or pastes a spreadsheet into another spreadsheet, and the status rides along, so the next department reads it instead of asking around. We built that CRM and dialer inside our own website in 12 days, and yeah, I had way too much fun doing it.
Here's the catch, though, and it's why this guide has a check in it. Typed once means a mistake is typed once too, and then it goes everywhere. If the setter books the wrong time and QA misses it, the wrong time lands on the calendar, the opportunity and the rep's phone all at once, and the rep's standing at the door like, wait, we said Thursday? So this is all of it: the map to draw, how to count the typing, what to do about every extra one, the one check you keep, the exact clicks in HighLevel if that's your CRM, and a first test with a planted mistake before you trust any of it.
Start here: paste this into ChatGPT or Claude
Not technical? Start here. Copy this prompt into ChatGPT or Claude (the free versions work) and it walks you through the whole guide, one step at a time, in plain English. It asks before it assumes anything and checks with you before anything that costs money, reaches a real customer or deletes something. The rest of the page is the same guide, written out, if you'd rather do it yourself.
Hi! Please be my patient guide for this step-by-step guide from Receipts Group: "Type every appointment once: the handoff map for your office"
The guide is here: https://receiptsgroup.com/guides/type-every-appointment-once (open it if you can; if you can't, everything you need is below).
About me: I run a small business and I'm not technical. Use plain words and short sentences.
My goal: every appointment my office books gets typed once and checked once. I trace one appointment from the homeowner's yes to the rep at the door, count every time it gets typed, make the step before do each extra one for me, and keep one check right after the booking, so a wrong time can't travel to everybody.
How to help me:
1. One step at a time. For each step, tell me in a sentence what it's for and exactly what to do (where to click, what to type, who to ask). Then stop and wait until I say "done" or tell you what I see.
2. Ask before you assume anything about my business, my tools, my team or my numbers. One question at a time.
3. If you use a technical word, explain it in plain English the first time (for example: handoff, setter, QA, dialer, CRM, opportunity, pipeline, stage, workflow, integration, connector, webhook).
4. Stop and check with me before anything that costs money (a paid plan, a phone number, a connector like Zapier), anything that reaches a real customer (a call or text to a homeowner, turning on call recording), and anything that deletes something (a workflow, a pipeline, a card, a row in a sheet).
5. Use only what I tell you or show you. Never make up numbers, names or results. If you're not sure where a setting is in my software, say so and tell me to check its help pages or its support. Don't guess a menu.
6. If I paste anything, remind me first to take out homeowners' names, phone numbers and addresses.
7. You're not my lawyer. Before I record calls, tell me to have my lawyer check the recording rules where I do business.
The steps, from the guide:
Part 1: draw the map
Step 1. Pick one appointment from last week that made it to the house. Use its appointment number, not the homeowner's name.
Step 2. Walk it from the yes to the door, and back. I ask each person who touched it: where did it come from, what did you type, what did you only read, and where did it go next? Include how the result (sat, sold, cancelled) got back to the office.
Step 3. Help me fill in the map below, one stop at a time.
Step 4. Circle every double: anything typed at a stop that was already typed at an earlier stop (copy and paste counts). Write down every time someone had to ask "did that one confirm?".
Step 5. Find the check: where does someone compare the booking with what the homeowner said? If it's nowhere, or only the rep at the door, that's fix number one.
Part 2: fix each double (the step before should do it)
Step 6. For each double, go down this list and stop at the first one that works: (a) same system, same record: the next stop reads the record that's already there, or an automation inside the tool does it; (b) a built-in connection between my two tools: help me send the support question below to both companies; (c) a connector like Zapier (we look up both tools in Zapier's app directory, zapier.com/apps, first) or a developer with a webhook; (d) keep the copy on purpose, with a read-back against the source.
Step 7. Set up one status, in one place, that every department reads (the status list below). Help me decide who changes each one.
Part 3: the one check
Step 8. Pick who does QA: someone other than the setter. Fill in the QA check card below with me. Nothing moves until it's approved. A fix happens at the source (the booking itself), and then it goes back to QA.
Part 4 (only if I use HighLevel): set it up
Step 9. Call recording, so QA has the call. Stop and check with me first, and remind me to ask my lawyer about the recording rules. Settings → Phone System → Phone Numbers → the three dots next to each number the setters call from → Edit Configuration → check Call Recording, and set Play Call Recording Message (for example: "This call will be recorded for quality purposes").
Step 10. The pipeline: Opportunities → Pipelines → Create new pipeline, named Appointments, then Save. Add these stages with Add stage, in this order: Waiting on QA, Back to setter, QA approved, Sat.
Step 11. Workflow 1, "Booked: into QA": Automation → Workflows → + Create Workflow → Start from Scratch. + Add New Trigger → Appointment Status. Filter By Appointment Status: New. In Calendar: my sales calendar. If I add Modified By, it has to include User. Action: Create Opportunity (HighLevel's action list may call it Create/Update Opportunity): Pipeline: Appointments, Pipeline Stage: Waiting on QA, Opportunity Name left blank, Duplicate Opportunity on. Settings tab: Allow Re-entry on. Save, and leave it in Draft.
Step 12. Workflow 2, "QA approved: send it": + Create Workflow → Start from Scratch → + Add New Trigger → Pipeline Stage Changed. In Pipeline: Appointments. Pipeline Stage: QA approved. Action: Send Internal Notification → SMS → Particular Users (whoever sends the reps out), with the alert below. Settings tab: Allow Re-entry on, Allow multiple Opportunities on. Save, and leave it in Draft.
Step 13. How QA works the queue: open the card in Waiting on QA, play the booking call in Conversations, compare it with the appointment on the calendar, then drag the card to QA approved or Back to setter. After any fix, the card goes back to Waiting on QA. A reschedule makes a new card by itself; set the old card's status to Abandoned. Reps only drive on cards that say QA approved.
Part 5: test it before I trust it
Step 14. The planted mistake. A test contact with my own name and my own cell (never a customer). In HighLevel: publish both workflows (stop and check with me first; they only notify my team, but workflow 1 makes a card for every new appointment on that calendar from then on). The setter calls my cell from HighLevel's phone, I say yes to Thursday at 4, the setter reads it back, and then books it for Wednesday at 4 on purpose. Only the setter and I know. Did a card show up in Waiting on QA? Did QA catch the wrong day from the call? Then the fix: back to the setter, reschedule to Thursday at 4, a new card in Waiting on QA, QA approves, and the alert goes out. Set both test cards to Abandoned. Not on HighLevel: do the same planted mistake in my own tools and see if the check catches it before the rep hears about it.
Step 15. Every week, look at what QA sent back and fix the step that keeps causing it.
When we get to it, use the handoff map from the guide (fill in the blanks with my details):
---
HANDOFF MAP: one appointment, from the yes to the door
Appointment #: ______ (the number only: no homeowner
name, phone number or address on this sheet)
Fill in one of these for every stop, starting at the
call and ending when the result (sat, sold, cancelled)
is back in the office:
STOP #: __
Who touches it (job title): ______________
Where (the dialer, the CRM, the calendar, a text,
a spreadsheet, paper): ______________
What they TYPE (day, date, time, address, name,
phone, product, notes): ______________
What they only READ: ______________
How it gets to the next stop:
[ ] it moves by itself
[ ] someone types it again
[ ] someone copies and pastes it
[ ] someone asks somebody
THE COUNT
Times the day and time got typed: ___
Times the address got typed: ___
Times the name and phone got typed: ___
Times someone asked "did that one confirm?": ___
Where someone checks the booking against what the
homeowner said: ______________
(nowhere, or "the rep at the door"? that's fix #1)
---
When we get to it, use the status list from the guide:
---
ONE STATUS, EVERYONE READS IT
(one field, in one place: your CRM, not a group text)
WAITING ON QA set by: the booking itself
BACK TO SETTER set by: QA, with what's off
QA APPROVED set by: QA. Now a rep can drive.
SAT set by: the rep, from the house
SOLD / NOT SOLD set by: the rep
CANCELLED set by: whoever hears it first,
the same day
The rule: if somebody has to ask what's going on
with one, a status is missing. Find who should have
changed it, and make it their step.
---
When we get to it, use the support question from the guide (fill in the brackets with my details):
---
Hi, quick question about [the software's name].
When [this happens: a setter books an appointment in
____], can it automatically [do this: create the
opportunity / put it on the rep's calendar / text the
rep / add a row in ____] without anybody typing it
again?
1. Is that built in, or does it need an integration,
Zapier or a developer?
2. Which details come across: day and time, address,
name, phone, product, notes?
3. If someone changes the time later, does the change
come across too, or only the first booking?
4. Does it cost extra, and on which plan?
Thanks!
---
When we get to it, use the QA check card from the guide:
---
QA CHECK: before anything moves
(done by someone other than the setter who booked it)
Open the booking and the booking call side by side.
1. DAY, DATE AND TIME
Does the booking match what the homeowner said
yes to on the call? Listen for the read-back.
2. ADDRESS
Same street and number as the call?
3. PRODUCT
What they asked about, so the right rep goes?
4. WHO'LL BE THERE
Everyone who decides, named on the call?
All four match: QA APPROVED. Now it moves.
Anything off: BACK TO SETTER, with what's off.
The setter fixes the booking itself (never a side
text to the rep), and it comes back to QA.
No read-back on the call: BACK TO SETTER.
If the time was never said back and agreed to,
there's nothing to check it against.
---
When we get to it, use the alert text from the guide (in HighLevel, the tag icon inserts the contact's name):
---
QA approved: {{contact.name}}.
The time is on the calendar and the address is on
the contact. Only drive on cards that say QA approved.
---
Watch out for these:
- A wrong time still reaching the rep: QA approved it without hearing the read-back. No read-back, no approval.
- Someone fixing the rep's text instead of the booking: now there are two Thursdays. Fix the booking, and it goes back through QA.
- In HighLevel, the calendar event shows up when the setter books, before QA. Reps go by the card's stage.
- No card in Waiting on QA: workflow 1 isn't published, the wrong calendar is picked, or Modified By leaves out User.
- Two cards for one appointment: that's a reschedule. Set the old one to Abandoned.
- Calls from a setter's own cell: HighLevel never sees them, so QA has no recording.
- Connecting things before there's a check: that only makes the wrong time travel faster.
- Pasting customer details into an AI: take out names, numbers and addresses first.
When we're done, give me a short recap: my map's count before and after, the fix for each double, who does QA, and what the planted-mistake test showed.
Start by asking me a few quick questions about my business and my tools, one at a time. Then begin with step 1.How the pieces connect
This is how one appointment moves on our floor. Your tools can be different. The shape is what you copy: one typing, one check, and everything after that reads the same record.
- 1The yesThe setter books it on the dialer, on the call→ the appointment, typed once: the time, the address, the product
- 2QAA reviewer checks the booking against the call recording→ approved, or back to the setter with what's off
- 3The opportunity and the calendar eventMade by QA's approval, from the same booking→ nobody retypes the time or the address
- 4The repSees it on the calendar and the phone→ the right door at the right time
- 5The statusRides along: waiting on QA, approved, sat, sold→ the next department reads it instead of asking around
The catch: QA is the only stop where a person looks at what was typed. If a wrong time gets past QA, every stop after it copies the wrong time perfectly. Typed once means checked once, so that check has to be good.
Words you'll see
- Handoff: every time an appointment moves from one person or one screen to the next.
- Double: anything typed at a stop that was already typed at an earlier one. Copy and paste counts.
- Setter: the person on the phone who books the appointment.
- QA: quality assurance. Here it's a reviewer who checks the booking against the call before anything moves.
- Dialer: the phone system your setters call from.
- CRM: the software that holds your customers and what happened with each one.
- Opportunity: the CRM's record of one possible sale.
- Pipeline and stage: the columns an opportunity moves through, like Waiting on QA, QA approved and Sat.
- Status: one field that says where the appointment is, so nobody has to ask.
- Integration: a built-in connection between two programs.
- Connector: a service like Zapier that moves details from one program to another for you.
- Webhook: a way for one program to send details to another the moment something happens. A developer sets it up.
Draw your handoff map
Pick one appointment from last week
Any one that made it to the house. Write down its appointment number, not the homeowner's name: this sheet gets passed around, and names, phone numbers and addresses stay where they already live.
Walk it from the yes to the door, and back
Start at the call and ask each person who touched it four things: where did it come from, what did you type, what did you only read, and where did it go next? Keep going past the appointment, too: how did the result (sat, sold, cancelled) get back to the office, and who typed it? Do it with them, not from memory. The doubles hide in the stuff people do without thinking, like the quick text to the rep.
Write every stop on the map
One block per stop. Use job titles, not names, so it's about the process and not about anybody.
HANDOFF MAP: one appointment, from the yes to the door Appointment #: ______ (the number only: no homeowner name, phone number or address on this sheet) Fill in one of these for every stop, starting at the call and ending when the result (sat, sold, cancelled) is back in the office: STOP #: __ Who touches it (job title): ______________ Where (the dialer, the CRM, the calendar, a text, a spreadsheet, paper): ______________ What they TYPE (day, date, time, address, name, phone, product, notes): ______________ What they only READ: ______________ How it gets to the next stop: [ ] it moves by itself [ ] someone types it again [ ] someone copies and pastes it [ ] someone asks somebody THE COUNT Times the day and time got typed: ___ Times the address got typed: ___ Times the name and phone got typed: ___ Times someone asked "did that one confirm?": ___ Where someone checks the booking against what the homeowner said: ______________ (nowhere, or "the rep at the door"? that's fix #1)Circle every double
Anything typed at a stop that was already typed at an earlier stop. Copy and paste counts too, because it's still a person moving it by hand. And every time somebody asks “did that one confirm?”, write it down: that's a status that isn't riding along.
Find the check
Where does somebody compare what got booked with what the homeowner actually said? If the answer is “nowhere” or “the rep, at the door”, that's your first fix, before you connect a single thing.
Fix each double: the step before does it
For every circled double, the stop before should be doing it for you. I'd go down this list in order and stop at the first one that works:
- Same system, same record. If the next stop lives in the same tool, it should read the record that's already there, not get its own copy. Booking right on the customer's record instead of on a notepad fixes a bunch of these by itself. The rest is usually an automation inside the tool (HighLevel calls them workflows; the section below has the clicks).
- A built-in connection. Two different tools, like your dialer and your CRM, may already have a connection you can turn on. Ask both companies' support with the message below.
- A connector or a developer. No built-in connection? A connector service like Zapier can move the details from one to the other. Look up both of your tools in Zapier's app directory (zapier.com/apps) first. Or a developer connects them directly with a webhook.
- Keep the copy, on purpose. Can't connect it yet? That's fine. Leave it on the map as a known double, and have whoever copies it read it back against the source before it moves on.
Hi, quick question about [the software's name].
When [this happens: a setter books an appointment in
____], can it automatically [do this: create the
opportunity / put it on the rep's calendar / text the
rep / add a row in ____] without anybody typing it
again?
1. Is that built in, or does it need an integration,
Zapier or a developer?
2. Which details come across: day and time, address,
name, phone, product, notes?
3. If someone changes the time later, does the change
come across too, or only the first booking?
4. Does it cost extra, and on which plan?
Thanks!Fix the asking around, too
The other half of the map is all the “hey, did that one confirm?” stuff, which is a pain. That's a status that doesn't ride along. Put one status in one place that every department reads, and give each change to one job title.
ONE STATUS, EVERYONE READS IT
(one field, in one place: your CRM, not a group text)
WAITING ON QA set by: the booking itself
BACK TO SETTER set by: QA, with what's off
QA APPROVED set by: QA. Now a rep can drive.
SAT set by: the rep, from the house
SOLD / NOT SOLD set by: the rep
CANCELLED set by: whoever hears it first,
the same day
The rule: if somebody has to ask what's going on
with one, a status is missing. Find who should have
changed it, and make it their step.Let Claude or ChatGPT sort the fixes
Paste your finished map into this prompt and it lists every double with the fix that fits. Before you paste: appointment numbers only, no homeowner names, phone numbers or addresses. In Claude you can also choose whether your chats help improve its models: Settings → Privacy → Help Improve our AI models (or go straight to claude.ai/settings/data-privacy-controls).
Below is my handoff map for one appointment, from the homeowner's yes to the rep at the door. Each stop says who touches it, where, what they type, what they only read, and how it gets to the next stop.
Please:
1. List every double: anything typed at a stop that was already typed at an earlier stop (copy and paste counts). For each one, name the earlier stop that already has it.
2. For each double, say which of these four fixes fits, trying them in this order: (a) same system, same record: the next stop reads the record that's already there, or an automation inside the tool does it; (b) a built-in connection between the two tools; (c) a connector service like Zapier, or a developer with a webhook; (d) keep the copy for now, with a read-back against the source.
3. For each fix that needs my software's support, write the short question I should send them.
4. Tell me where on my map someone checks the booking against what the homeowner said. If nowhere, say that first: it's fix number one.
5. Show it as one small table (the double, the earlier stop, the fix), then three lines in plain words: what to fix first and why.
Rules: use only what's in my map. If you're not sure a tool can do something, write "ask support". Never guess a setting, a menu or a price. Plain words, short sentences.
My map:
[paste it here: appointment number only, no homeowner names, phone numbers or addresses]Good: every double from your map, each with one fix and a question for support where it needs one. Bad: it tells you a menu or a setting in your software. It can't see your software, so check that with its help pages or support before you click.
The one check you keep
Type it once, check it once. When the copies happen by themselves, the check right after the booking is the only place a person still looks, so it has to be good, and it has to be somebody other than the setter. On our floor that's QA with the call recording attached.
QA CHECK: before anything moves
(done by someone other than the setter who booked it)
Open the booking and the booking call side by side.
1. DAY, DATE AND TIME
Does the booking match what the homeowner said
yes to on the call? Listen for the read-back.
2. ADDRESS
Same street and number as the call?
3. PRODUCT
What they asked about, so the right rep goes?
4. WHO'LL BE THERE
Everyone who decides, named on the call?
All four match: QA APPROVED. Now it moves.
Anything off: BACK TO SETTER, with what's off.
The setter fixes the booking itself (never a side
text to the rep), and it comes back to QA.
No read-back on the call: BACK TO SETTER.
If the time was never said back and agreed to,
there's nothing to check it against.- Nothing moves until it's approved. Not onto the rep's calendar “just for now”, and not into a side text.
- A fix happens at the source. The setter fixes the booking itself, then it comes back to QA. Fix the rep's text instead, and now you've got two versions of Thursday.
- No read-back, no approval. If the setter never said the day, the date and the time back and got a yes, QA has nothing to check it against.
Want the four boxes in more detail, with the setter's lines? That's my four-box appointment check.
Example (made up)
Everything here is made up: a fictional roofing office, one appointment, before the fixes.
| Stop | Who | What got typed | How it got to the next stop |
|---|---|---|---|
| 1. The call | Setter | Name, phone, address, Thursday at 4, a roof | Written on a notepad |
| 2. The CRM | Office manager | Name, phone, address, a roof (again) | Read off the notepad |
| 3. The calendar | Office manager | Thursday at 4, the address (again) | Typed onto the rep's calendar |
| 4. The rep's text | Sales manager | The address, Thursday at 4 (again) | Copied off the calendar into a text |
| 5. The board | Office manager | Name, the time, the rep (again) | Typed into the spreadsheet |
| 6. The result | Rep, then the office | Sat, not sold (twice) | The rep texts the office, the office types it into the CRM and the board |
After the fixes (still made up): the setter books it once, right on the customer's record in the CRM, on the call. QA checks it against the recording. QA's approval moves it to QA approved and sends the sales manager the alert. The board is the pipeline, so nobody keeps the spreadsheet, and the rep moves it to Sat from the driveway. The time is typed once, the address is typed once, and the morning question goes away because the stage answers it.
In HighLevel: QA's yes moves it, nobody retypes it
HighLevel (also called GoHighLevel) can do most of our floor's flow with call recording, one pipeline and two workflows. One thing it can't do: its list of workflow actions has no action that makes a calendar appointment, so the calendar event gets made when the setter books, not when QA approves. So in HighLevel the status is the pipeline stage, and the rule for reps is simple: go by the stage. Every click here is from HighLevel's own help pages, checked 2026-10-25.
Set it up
Record the booking calls, so QA has the call
WhereSettings → Phone System → Phone Numbers → ⋮ next to the number → Edit ConfigurationCheck Call Recording, and set Play Call Recording Message, like “This call will be recorded for quality purposes.” Do it on every number your setters call from. Recordings play back in Conversations: find the contact, and the playback controls sit on the call entry. A call from a setter's own cell never reaches HighLevel, so setters book from HighLevel's phone.
PermissionsHighLevel's help says that in many U.S. states, playing a recording disclaimer is legally required. Read “Recording calls has rules” above and ask your lawyer before you turn this on. Recording is billed per minute (What it costs, below).Make the Appointments pipeline
WhereOpportunities → Pipelines → Create new pipelineName it
Appointmentsand click Save. Type each stage name and click Add stage, in this order:Waiting on QA,Back to setter,QA approved,Sat. Add your sales stages after that if you track them here. Stage names have to be unique in a pipeline.Workflow 1: make the workflow
WhereAutomation → Workflows → + Create Workflow → Start from ScratchName it “Booked: into QA.” This one turns the setter's booking into a card in Waiting on QA, so nobody types it into the pipeline.
Trigger: Appointment Status, New
Where+ Add New Trigger → Appointment StatusUnder Filter By Appointment Status, pick New (HighLevel: a new appointment is scheduled). Add the In Calendar filter for the calendar your sales appointments go on. If you add Modified By, make sure it includes User (your team booking by hand), or the setters' bookings slip right past it.
Action: Create Opportunity
WhereClick + → Create Opportunity (HighLevel's action list calls it Create/Update Opportunity)Pipeline: Appointments. Pipeline Stage: Waiting on QA. Leave Opportunity Name blank, and HighLevel names the card after the contact. Turn on Duplicate Opportunity: HighLevel's help says that with it off, a contact who already has an opportunity doesn't get a new one, so a repeat customer's booking would never show up for QA. The card is tied to the contact, so the name, the phone and the address come along without anybody typing them.
Settings: Allow Re-entry on
WhereSettings tab → Allow Re-entryTurn it on, so a second booking or a reschedule makes a new card. HighLevel's help says a rescheduled appointment is treated as a new one, which is what you want here: a changed time goes back through QA. Click Save, and leave it in Draft until the first test.
Workflow 2: QA's yes sends it
Where+ Create Workflow → Start from Scratch → + Add New Trigger → Pipeline Stage ChangedName it “QA approved: send it.” Add the filters In Pipeline: Appointments, and Pipeline Stage: QA approved. HighLevel's help says dragging a card by hand fires it, and so does a card moving back into that stage later.
Action: tell whoever sends the reps
WhereClick + → Send Internal Notification → SMS → Particular UsersPick your sales manager, or whoever runs the reps' schedule (or the rep, if one rep owns that calendar). Paste the alert, and use the tag icon to drop in the contact's name instead of typing it. Each person needs a phone number set in HighLevel to get the text.
QA approved: {{contact.name}}. The time is on the calendar and the address is on the contact. Only drive on cards that say QA approved.Settings: re-entry and multiple opportunities on
WhereSettings tab → Allow Re-entry, Allow multiple OpportunitiesAllow Re-entry, so a card that went back and got approved again sends again. Allow multiple Opportunities, so a customer with two cards gets an alert for each one (HighLevel's help: with it off, only the first opportunity that meets the trigger gets in). Save, and leave it in Draft until the test.
Optional: the same thing for Back to setter
A third workflow, built like workflow 2 with Pipeline Stage: Back to setter, sending the setter a text, so a fix doesn't sit there all afternoon.
How QA works the queue
- Open Opportunities and the Appointments pipeline. Waiting on QA is the queue.
- For each card: play the booking call in Conversations, and compare it with the appointment on the calendar, using the QA check card above.
- All four match: drag the card to QA approved. Anything off: drag it to Back to setter and tell the setter what's off.
- The setter fixes the appointment itself. A reschedule makes a new card in Waiting on QA by itself (workflow 1); open the old card and set its status to Abandoned (HighLevel's opportunity statuses are Open, Won, Lost and Abandoned). Any other fix, like the address on the contact: the setter drags the card back to Waiting on QA.
- Reps only drive on cards that say QA approved, and move them to Sat from the driveway.
First test: plant a wrong time (a few cents)
Before you trust it, plant a mistake and see if it gets caught. You play the homeowner with your own phone, so no customer is involved, and in HighLevel it costs a few cents.
Make a test contact
Your own name and your own cell number. Never a customer.
Publish the two workflows
Switch both from Draft to Publish. They only notify your team, but workflow 1 makes a card for every new appointment on that calendar from now on, real ones included. That's the point, just know it's on.
The setter books it wrong, on purpose
The setter calls your cell from HighLevel's phone. You say yes to Thursday at 4. The setter reads it back, you say yes again, and then the setter books it for Wednesday at 4. Only you and the setter know.
Watch what QA does
A card should show up in Waiting on QA. QA does the normal check. Good: QA hears Thursday on the call, sees Wednesday on the calendar, and drags it to Back to setter. Bad: it gets approved. That's not the software, that's the check, and it's the most useful thing this test can tell you.
Run the fix all the way through
The setter reschedules the appointment itself to Thursday at 4. A new card shows up in Waiting on QA. QA checks it and drags it to QA approved, and the alert should land on your sales manager's phone. Then set both test cards to Abandoned, so they don't count.
Not on HighLevel? Same test in your own tools: book a test appointment with the wrong time on purpose and see if your check catches it before the rep hears about it. If the wrong time reaches the rep, you just found where your check needs to go.
What it costs in HighLevel: a couple of minutes of calling your own cell (US calls are $0.0166 a minute, recording $0.0025 a minute) and one alert text (about 1.2 cents with the carrier fee). Call it a nickel.
What it costs
| What | Plan | Price |
|---|---|---|
| The map, the count, the status list, the QA card | None | $0 |
| Claude (the prompts) | Free | $0 |
| Claude, if you want more use | Pro | $20 a month billed monthly, or $17 a month billed yearly ($200 up front) |
| ChatGPT | See OpenAI's pricing page | Not checked: OpenAI's pricing pages didn't load for us on 2026-10-25 |
| HighLevel | Starter | $97 a month, or $970 a year. 14-day free trial; billing starts automatically when it ends unless you cancel, and usage fees can apply during the trial |
| HighLevel | Unlimited | $297 a month, or $2,970 a year |
| Calls out through HighLevel's phone system (US) | Usage | $0.0166 a minute ($0.0180 before HighLevel's listed discount) |
| Call recording in HighLevel | Usage | $0.0025 a minute, plus $0.0005 a minute a month to store it |
| Call transcripts in HighLevel (optional) | Usage | $0.024 a minute, on top of recording |
| Alert texts to your team | Usage | $0.00747 per outgoing US text segment, plus carrier fees (HighLevel's own estimate: about $0.005). A segment is 160 plain characters, or 70 once there's an emoji |
| Zapier (only if two tools don't connect) | Free | $0: 100 tasks a month, two-step Zaps (one trigger, one action) |
| Zapier | Professional | $29.99 a month billed monthly, or $19.99 a month billed yearly, at 750 tasks a month |
What one appointment costs to run through it in HighLevel, let's say the booking call runs 5 minutes: recording it is about 1.25 cents, storing it is a quarter cent a month, and the QA approved alert is one text at about 1.2 cents with the carrier fee. The call minutes you'd pay anyway. Zapier counts a task each time it finishes a step for you, so one booking moving from one tool to another is one task.
When it breaks
A wrong time still reaches the rep
The rep has a different time than the calendar
No card shows up in Waiting on QA
Two cards for one appointment
A rep drives to one that isn't approved
The QA approved alert never comes
QA can't find the recording
People still ask “did that one confirm?”
Your two tools don't connect and Zapier doesn't list one of them
A connection only sends the first booking
The AI tells you where a setting is in your software
ChatGPT or Claude can't open the guide link
Typed once, checked once
Map it, make the step before do every double for you, and keep the one check right after the booking, because now your mistakes travel as fast as your appointments do.
If you'd rather have the whole floor built this way, dialer to CRM to calendar with QA on every appointment, that's our call center buildout.
Checked on Oct 25, 2026 against
Every claim about a third-party tool in this guide (plans, prices, menu paths, commands, limits) was checked against these official pages on Oct 25, 2026. These screens change often: if something looks different, trust the page over this guide.
- HighLevel Help: Overview of Phone Number Configuration OptionsSettings → Phone System → Phone Numbers, the three dots, Edit Configuration; Call Recording; Play Call Recording Message; “In many U.S. states, playing a recording disclaimer is legally required” (checked 2026-10-25).
- HighLevel Help: How to Enable Call Transcriptions for Recorded CallsRecorded calls play back in Conversations on the call entry; transcripts need recording on and cost $0.024 a minute on top of recording (checked 2026-10-25).
- HighLevel Help: How to Create PipelinesOpportunities → Pipelines → Create new pipeline, Save, Add stage; stage names unique within a pipeline (checked 2026-10-25).
- HighLevel Help: Step-by-Step Guide to Creating OpportunitiesDrag a card to another stage on the Opportunities board, or pick a stage in the edit drawer; Opportunity Status options (checked 2026-10-25).
- HighLevel Help: Introduction to Workflows and AutomationsAutomation → Workflows → + Create Workflow → Start from scratch; Save; Test Workflow (checked 2026-10-25).
- HighLevel Help: Workflow Trigger - Appointment StatusAdd New Trigger, Appointment Status; Filter By Appointment Status (New: a new appointment is scheduled), In Calendar, Modified By (API, Customer, User, Workflow); a reschedule is treated as a new appointment (checked 2026-10-25).
- HighLevel Help: A List of Workflow ActionsAppointment actions are Update Appointment Status and Generate One Time Booking Link (no action that makes an appointment); Create/Update Opportunity; Send Internal Notification (checked 2026-10-25).
- HighLevel Help: Workflow Action - Create OpportunityPipeline, Pipeline Stage, Opportunity Name (blank uses the contact's name), Duplicate Opportunity (duplicates are judged by contact; off means a contact with an opportunity gets no new one) (checked 2026-10-25).
- HighLevel Help: Workflow Trigger - Pipeline Stage Changed+ Add New Trigger, Pipeline Stage Changed; In Pipeline and Pipeline Stage filters; manual moves and moves back fire it; Publish (checked 2026-10-25).
- HighLevel Help: Workflow Action - Internal NotificationSend Internal Notification by Email, In-App, SMS or WhatsApp to Particular Users; the tag icon inserts values; an SMS fails for a user with no phone number (checked 2026-10-25).
- HighLevel Help: Workflow Settings - OverviewThe Settings tab: Allow Re-entry; Allow multiple Opportunities (off: only the first opportunity that meets the trigger enters) (checked 2026-10-25).
- HighLevel: PricingStarter $97 a month ($970 a year), Unlimited $297 a month ($2,970 a year), 14-day free trial, billing starts when it ends unless cancelled, usage billed separately (checked 2026-10-25).
- HighLevel Help: LC Phone Pricing & Billing GuideUS outbound calls $0.0166 a minute ($0.0180 before the discount); recording $0.0025 a minute; storage $0.0005 a minute a month; transcription $0.024 a minute; outbound US SMS $0.00747 a segment (checked 2026-10-25).
- HighLevel Help: How to Calculate SMS and MMS Costs160 characters a segment, 70 with an emoji; carrier fees estimated at about $0.005 a segment (checked 2026-10-25).
- Zapier: PricingFree: 100 tasks a month, two-step Zaps; Professional $29.99 a month billed monthly or $19.99 a month billed yearly at 750 tasks; what a task is (checked 2026-10-25).
- Zapier: App DirectoryThe directory of apps Zapier connects (checked 2026-10-25).
- Claude: Plans and pricingFree at $0; Pro at $20 a month billed monthly, or $17 a month billed yearly ($200 up front) (checked 2026-10-25).
- Claude Privacy Center: How do I change my model improvement privacy settings?Settings → Privacy → Help Improve our AI models (or claude.ai/settings/data-privacy-controls), for Claude Free, Pro and Max (checked 2026-10-25).
- Florida Statutes 934.03 (Florida Senate)(1) the ban on intercepting a call; (2)(d) lawful when all of the parties to the communication have given prior consent (checked 2026-10-25).
