The playbook
You're not selling the service. You're selling a free 15-minute audit. That's the whole job.
Booking the call
Do it while they're still on the phone. Never hang up and book it after.
The calendar is docked on the right of your call board the whole time you're dialing. Glance at it before you offer the two slots.
You need the first two to book. Ask for the third: "You're Eastern time over there?" Repeat the email back letter by letter — a wrong email is a no-show, and so is a wrong time zone.
The calendar shows times in your zone. If they said 3pm and they're Pacific while you're Eastern, that's 6pm on your screen. Say the time back in their words — "3pm your time" — so you're both certain before you hang up.
Name, email, phone, and the slot you agreed on.
Don't tell them it's booked until you've watched it go through.
"You're all set for the time we picked. You'll get an email confirmation in the next minute — if anything comes up, just reply to that email."
Green button at the bottom of your screen, add a quick note, then Next lead.
Everything books through this one link — you don't need access to anything else.
How to use this
Build
Click a lead, run the script, mark what happened, hit next. Everything saves as you go.
Same room every time, for internal calls with the team. It's also the Team Zoom button in the top bar. This is not the room prospects join — theirs comes from the booking calendar.
Your Dials counter goes up every time you tag a call — any status counts. Booked only moves when you tag Booked.
⤢ for full screen while you're booking.default app in settings, scroll to TEL, choose Quo, then restart your browser. On Mac: open FaceTime settings and set Quo as the default for calls.Log this note to stamp it into the call history, so the whole story is there next time you pick them up.Team activity
Numbers come from what each rep tags on their board. A dial is any tagged call; a booking only counts when they tag Booked.
Lists
Every lead on a rep's board, with their status and latest note.
Upload leads
Drop in a CSV and choose who gets it. Headers can be in any order and any you leave out are simply skipped.
| Column | Needed? | What the caller sees |
|---|---|---|
| business | Required | The big name at the top of the card |
| phone | Required | The number they tap to dial |
| city | Strongly advised | Fills the blank in the opener |
| niche | Strongly advised | Fills the other blank — "best roofer in…" |
| website | Optional | Clickable link on the card |
| rating | Optional | Google stars, shown as ★ 4.6 |
| reviews | Optional | Review count, shown next to the stars |
| Optional | On the card; often blank until they ask | |
| contact | Optional | "Ask for Marco" on the card |
Your numbers
Today resets to zero every morning. Everything below is your running history.
Today
Book rate is bookings divided by dials. Anything over a few percent on a cold list is solid — the number that matters most is just how many dials you got in.
Day by day
Every day each rep logged activity, newest first. Each rep's day is counted in their own time zone — Jamie's on Eastern, Grace's on South Africa time — so a row is that person's working day, not a shared clock.
Texting
Each caller texts from their own Quo number. Replies land on the lead's card, and nobody sees anyone else's threads.
Quo → Settings → API → Generate API key. You need owner or admin on the workspace. Keep it to hand — it goes into Cloudflare, never into this page.
Create a free Cloudflare account, make a Worker, and paste in quo-worker.js. Add a KV namespace bound as MSGS.
Secrets QUO_API_KEY and HUB_TOKEN (invent any long random string for the token). Then one variable per caller named NUMBER_ plus their username — so NUMBER_grace holding +1XXXXXXXXXX. Add NUMBER_jamie when she gets a number. WEBHOOK_SECRET is optional.
Quo → Settings → Integrations → Webhooks → new webhook to https://your-worker-url/webhook, subscribed to incoming messages.
Hit Save and test. Once it says connected, every lead card with a phone number gets a Messages panel.
Team & setup
Who can sign in, how to add someone new, and how to give them a phone number.
| Name | Username | Password | Role | Time zone | Texting number |
|---|
Anyone who opens the site and views the page source can read these, so treat them as a doorway rather than a lock. Don't reuse a password from anywhere else.
In Hostinger's File Manager, open index.html (or whatever you named it) and click Edit.
Search for ACCOUNTS. It's near the top of the script and looks like the block below.
Duplicate one of the rep lines. Change the username, password, display name and time zone. Keep the commas and quote marks exactly as they are.
Save the file, then hard-refresh the site with Cmd+Shift+R. Check the build number at the top of the Guide tab changed if you edited anything else.
New callers see no leads until you assign them some on the Upload leads tab.
Time zone must be one of the standard names — America/New_York, America/Chicago, America/Denver, America/Los_Angeles, Africa/Johannesburg, Europe/London, Asia/Manila. It controls when their day resets and what their clock strip shows.
Quo → Settings → Phone numbers → add a number. Pick an area code that matches the market they'll be dialing.
Workers & Pages → your worker → Settings → Variables and Secrets → Add. Name it NUMBER_ followed by their username, all lowercase — so NUMBER_jamie. Value is the number as +1XXXXXXXXXX. Type is Text, not Secret.
Click Deploy or the change won't go live.
Open the Texting tab here and hit Save and test. It lists everyone who has a number.
The Quo webhook is already set to cover every number on the account, so their texts and callbacks start flowing straight away. They'll see the Texts panel and Inbox next time they sign in.
Callers without a number simply don't see the texting features — nothing breaks, the tabs just stay quiet.
The app is the file on your host; the worker is the code on Cloudflare. Most changes only touch the app \u2014 I'll tell you when the worker needs deploying too.
Everything lives on your Cloudflare Worker. That's one copy — if it were ever wiped there's nothing to fall back on. Take a backup at the end of each week; it's a few seconds and it covers you.
console.cloud.google.com → new project, call it after the company. Then APIs & Services → Library → enable Gmail API.
APIs & Services → OAuth consent screen → User type Internal. This is the important one — Internal apps skip Google's verification and security assessment entirely, which is only possible because your domain is on Workspace.
Credentials → Create credentials → OAuth client ID → Web application. Under Authorised redirect URIs add exactly: https://your-worker.workers.dev/gmail/callback
Secrets GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET on the your worker worker, then Deploy.
They sign in, open any lead, and hit Connect your '+CONFIG.company+' email on the Email panel. Google asks them to approve once. Only accounts on your own domain can connect.
Google occasionally expires the connection — after a password change, or six months idle. If the Email panel asks them to connect again, that's all it is.
your worker. It holds the Quo API key and stores messages. Never put that key in the hub file.Team chat
Your sales channel, mirrored here.
Messages you send from here land in Slack tagged with your name. Huddles, threads, reactions and files still live in Slack itself — the buttons above drop you straight into the channel so the headphones icon is one click away.
What's working
Both callers combined. Everything here is built from the tags they set, so it sharpens as they dial.
Dialed is leads given any tag. Reached means a real conversation — booked, call back, info request or a clear no. Rows under 10 dials are greyed, because the percentages won't hold up yet.
Whether a weak listing makes them more receptive — the premise of the pitch, tested against the calls.
Same measures, side by side. A gap here is about approach; a gap in the tables above is about the list.
Today
Reminders
Waiting on you
Pipeline
Deals
Everything the callers have booked, plus what you do with it. Booked and No Show are shared with them — the rest is yours alone.