0Dials
0Booked
Team Zoom

⚠ This browser isn't letting the hub save anything. Your notes will disappear if you refresh — hit Load list → Export current list before you close the tab, and tell the team.

The playbook

You're not selling the service. You're selling a free 15-minute audit. That's the whole job.

The five rules
A
Always be closingEvery sentence points at the calendar. If a sentence doesn't move them toward a booked slot, cut it.
B
Two times, never one — and they have to be realNever ask "would you like to book?" Ask "which of these two?" Any times written in the script are examples: glance at the calendar and offer slots you can actually see open.
C
Ask, then stop talkingAfter you offer the two times, say nothing. Let the silence work. First one to talk loses.
D
Free, and fifteen minutesSay both out loud, early. It kills most of the resistance before it starts.
E
Keep it movingOne objection, one rebuttal, one more ask. Still no? Mark it and dial the next one.
Objections

Front desk and gatekeepers
Always ask to be transferred. Never leave your info. Some gatekeepers are family or partners who actually care about the business — those are worth the extra sentence. Others are there purely to filter people like you. Read which one you've got in the first ten seconds and don't spend a minute on the second kind.
Can I ask what this is regarding?
It's about how the business is showing up on AI search — it's a quick one, can you put me through to whoever handles the website?
Ask for the transfer every time. That's the only outcome you want from this person.
Give me your info and I'll pass it along.
No worries, I'll try back another time. Thanks.
Don't leave anything. Hang up and move on. Info left with a gatekeeper never gets passed along — mark it Call back and try a different time of day.
He's not in right now.
No problem — what time is he usually around? I'll try him then.
Put that time in your notes and mark it Call back.
Oh, that's my husband — what's this about?
Then you're probably the right person to tell. I ran a search for the best [their trade] in [their city] on ChatGPT and the business didn't come up. We do a free 15-minute audit that shows exactly why. I've got two slots open — would either of those work to walk through it together?
This one you slow down for. Family and partners often make the call — pitch them properly.
They want information sent over
Absolutely, I can get that over to you. What's your name, and the best email? … Perfect. And so I can follow up properly — what day and time works for a quick call after you've had a look?
Then mark them Info request and hit the handoff button on their card, which emails the details across.
Voicemail — under 20 seconds

Booking the call

Do it while they're still on the phone. Never hang up and book it after.

💻
Say this before you hang up. Every time. "It's on Zoom and we'll be sharing our screen with your results, so make sure you're at a desktop or a laptop — not your phone."
The steps
Only offer times you can see are open

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.

Get their name, email and time zone

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.

Book the slot in their time

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.

Fill in the booking form while they're on the line

Name, email, phone, and the slot you agreed on.

Wait for the confirmation screen

Don't tell them it's booked until you've watched it go through.

Read it back and point them at the email

"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."

Mark them Booked

Green button at the bottom of your screen, add a quick note, then Next lead.

The link

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.

Team Zoom room

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.

Hearing about texts
\ud83d\udd14
Say yes to notificationsThe hub asks once. If you say no, you'll only see texts when the hub is the window you're looking at \u2014 nothing will reach you while you're in Slack or your email. You can turn them on later in your browser's site settings.
\ud83d\udcac
Four different soundsA prospect texting, the team channel, a follow-up falling due, and an email reply each sound different, so you can tell what happened without looking.
Every call gets marked
You can't move on until you've marked itPick one of the seven options in the black bar at the bottom before opening the next lead. If a call never gets marked it doesn't count as a dial, so your numbers would be wrong — and so would the reporting on which industries are worth calling.
?
Not sure which to pick?Rang out with no message — No answer. Left a message — Voicemail. Gatekeeper blocked you — Call back. Disconnected or wrong business — Dead number.
Made a mistake?
Undo takes the tag backHit Undo at the bottom of the screen. The lead goes back to whatever it was before, and the dial comes off your numbers too — so a mis-click doesn't inflate your count.
Or undo something olderEvery tag in the call history has a small undo next to it, so you can fix one from earlier without touching the rest.
What each status means
1
BookedSlot is confirmed on the calendar — not "they sounded interested." Actually booked.
2
Call backReal interest, wrong moment — or the gatekeeper blocked you. Put the day and time in the notes.
3
No answerRang out, no voicemail left. Try again at a different time of day.
4
VoicemailYou left a message. Worth another dial in two or three days.
5
Info requestThey want something sent over. Get their name, email, and a follow-up day and time, then use the handoff button on their card.
6
Not interestedA clear no. Mark it, move on, don't take it personally — it's a numbers game.
7
Dead numberDisconnected, wrong business, or out of service.

Your Dials counter goes up every time you tag a call — any status counts. Booked only moves when you tag Booked.

The calendar
It's docked on your call boardRight-hand side, open the whole time you're dialing, so you're never offering a time that isn't there. Use the Calendar button in the top bar to hide or show it, and for full screen while you're booking.
They confirm by emailEvery booking sends them an email confirmation. If they need to change or cancel, they reply to that email.
When a new list gets added
New leads are tagged NEW in blueAnything from the most recent list you haven't called yet carries a blue NEW tag in your lead list, so fresh leads never get lost among the ones you've already worked.
The dropdown splits your lists apartUnder the search box there's a list picker showing each list and how many are left to call in it — pick one to work only that list, or leave it on All lists.
Pick up where you left offThe button at the bottom of your lead list finds the next person you haven't called and opens them. When a list is fully dialed once, it moves you on to your call-backs, then back through the no-answers.
Time zones
🕘
The clock strip at the top of your boardYour own time on the left, then Eastern, Central, Mountain and Pacific. A zone turns green when it's business hours there, so you can see at a glance where it's worth dialing right now.
Each lead shows their local timeWorked out from their area code, right on their card — green when it's a good time to call, orange when it isn't. Don't call someone at 7am their time; it's a guaranteed no.
Always confirm the zone before you bookArea codes follow people when they move, so the guess on the card can be wrong. Ask: "You're Eastern time over there?" Then repeat the appointment back in their time, not yours.
Booking across zonesThe booking calendar shows times in your zone. If they're Pacific and you're Eastern, their 3pm is your 6pm — book the slot that lands at 3pm for them.
📅
Your day runs on your clockYour dial and booking counters reset at midnight in your own time zone, not anyone else's, and the day-by-day history is logged the same way.
Calling from your work number
1
Install the Quo desktop app and sign inOne-time setup. You need the desktop app, not just the website — the browser on its own can't take over calls.
2
Set Quo as your default calling appOn Windows: search 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.
3
Then just hit Call on any leadQuo opens with the number already loaded and dials from the work number, so your personal number never shows up on their screen. Quo logs and records the call on its side; you keep taking your notes here.
📱
On an iPhone this won't workApple doesn't let anything replace the phone app, so the Call button would use your personal line. On a phone, use Copy number here and paste it into the Quo app instead — or better, work from a laptop.
Using it on your phone
📞
Tap the number to dialThe big number on each lead card, and the blue Call button next to it, hand off to whatever your device dials with. Read the section above first — on a phone that's usually your personal line, which you don't want.
Everything else works the sameThe script, notes, status buttons and calendar all stack vertically on a phone. Tap a lead to open it, and ← All leads at the top takes you back to the list.
But the Zoom calls themselves need a computerThat's the prospect, not you — remind every single one of them before you hang up.
Does my work save?
Yes — automatically, as you typeChecking…
Refreshing is safeClose the tab, refresh it, come back tomorrow — every status, note and call-history entry is still there. The clock in the top bar shows the last time it saved.
Export at the end of the day anywayThirty seconds of insurance. Download the list and keep the file.
When to dial
8–10am and 4–5pm are the sweet spotsOwners are at their desk before the day runs away from them, or winding down at the end of it. Midday is lunch and jobs.
Monday mornings and Friday afternoons are deadTuesday through Thursday is where the bookings are.
No answer isn't a noMost connects happen on the third attempt or later. Cycle back through the no-answers before you write anyone off.
Notes
Everything is timestampedType in the box and it saves on its own. Hit Log this note to stamp it into the call history, so the whole story is there next time you pick them up.
Use the quick chipsThe buttons above the notes box drop in the things you'll write over and over.
Export any timeDownload the whole list with every status and note as a spreadsheet.

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.

Recent activity

    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.

    ColumnNeeded?What the caller sees
    businessRequiredThe big name at the top of the card
    phoneRequiredThe number they tap to dial
    cityStrongly advisedFills the blank in the opener
    nicheStrongly advisedFills the other blank — "best roofer in…"
    websiteOptionalClickable link on the card
    ratingOptionalGoogle stars, shown as ★ 4.6
    reviewsOptionalReview count, shown next to the stars
    emailOptionalOn the card; often blank until they ask
    contactOptional"Ask for Marco" on the card
    How the split works
    1
    Pick a person, or split itAssign the whole file to one rep, or choose Split evenly to deal it out between them alternately.
    2
    Duplicates are skippedAny phone number already on that rep's board is ignored, so re-uploading the same file won't create doubles.
    3
    It appears on their board straight awayNext time they open the hub, the new leads are at the bottom of their list marked Not called.

    Your numbers

    Today resets to zero every morning. Everything below is your running history.

    Today

    Day by day
    By week

    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.

    Weekly totals

    Texting

    Each caller texts from their own Quo number. Replies land on the lead's card, and nobody sees anyone else's threads.

    Setup
    Generate a Quo API key

    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.

    Deploy the Worker

    Create a free Cloudflare account, make a Worker, and paste in quo-worker.js. Add a KV namespace bound as MSGS.

    Add the settings

    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.

    Point Quo's webhook at it

    Quo → Settings → Integrations → Webhooks → new webhook to https://your-worker-url/webhook, subscribed to incoming messages.

    Paste the URL and token above

    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.

    Who can sign in right now
    NameUsernamePasswordRoleTime zoneTexting 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.

    Add a new caller
    Open the hub file

    In Hostinger's File Manager, open index.html (or whatever you named it) and click Edit.

    Find the accounts block

    Search for ACCOUNTS. It's near the top of the script and looks like the block below.

    Copy a line and change it

    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 and upload

    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.

    They start with an empty board

    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.

    Give someone a phone number
    Buy the number in Quo

    Quo → Settings → Phone numbers → add a number. Pick an area code that matches the market they'll be dialing.

    Add it in Cloudflare

    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.

    Deploy

    Click Deploy or the change won't go live.

    Check it

    Open the Texting tab here and hit Save and test. It lists everyone who has a number.

    Nothing else to do

    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.

    Versions
    \u25a3
    This app\u2014
    \u2699
    The workerchecking\u2026

    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.

    Start clean
    Reset the numbersWipes every dial, booking and call history, and puts every lead back to Not called. The lists, notes and pipeline all stay. This is the one you want before a fresh start.
    Delete everythingRemoves the lists as well. Only use this if you're loading completely different data.
    Backups

    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.

    Connect email (one-off, per person)
    Create a Google Cloud project

    console.cloud.google.com → new project, call it after the company. Then APIs & Services → Library → enable Gmail API.

    Set the consent screen to Internal

    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.

    Create an OAuth client

    Credentials → Create credentials → OAuth client ID → Web application. Under Authorised redirect URIs add exactly: https://your-worker.workers.dev/gmail/callback

    Put the two values in Cloudflare

    Secrets GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET on the your worker worker, then Deploy.

    Each caller connects themselves

    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.

    Where everything lives
    The hubThis site, hosted on Hostinger. One HTML file. Editing it means editing that file and re-uploading.
    The texting bridgeA Cloudflare Worker called your worker. It holds the Quo API key and stores messages. Never put that key in the hub file.
    📅
    The calendarYour booking link, embedded on the call board and the Booking tab.
    💾
    The dataLeads, notes, stats and pipeline save in each person's own browser. Clearing their browser data clears their board, so have them export from the call board at the end of each day.

    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.

    Where the bookings are coming from

    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.

    When they actually pick up — their local time
    Day of the week
    Does their Google presence matter?

    Whether a weak listing makes them more receptive — the premise of the pitch, tested against the calls.

    How many attempts it takes
    Caller against caller

    Same measures, side by side. A gap here is about approach; a gap in the tables above is about the list.

    What to buy next

    Good morning

    --:-- your time
    Dialing windows — 8am to 5pm where they are
    Join the team Zoom

    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.

    Mark it

    Update Available

    A newer version of the hub is ready. Your work is saved before it reloads.

    Turn on notifications Without them you won't hear about texts or reminders while the hub is behind another window.
    Still there? You've been idle a while. We'll sign you out in 5:00 to keep the account safe.