Intern
What you actually do
Your job is the table and the test booking. Event type, stage, fields, one write path. Do not build a 12-step reminder workflow. If GHL is empty after a real booking, you are done for the day — that is the ticket.
Library / Wire / Calendly only counts when GoHighLevel sees the booking
Calendly is a booking UI. GoHighLevel is where the opportunity must live. If the invitee gets a confirmation and GHL never creates a contact, you did not wire a CRM. You wired a second calendar with extra steps. This page is the write-in spec an intern can run on Tuesday.
Calendly is a booking UI. GoHighLevel is where the opportunity must live. If the invitee gets a confirmation and GHL never creates a contact, you did not wire a CRM. You wired a second calendar with extra steps. This page is the write-in spec an intern can run on Tuesday.
Name every Calendly event type and the GHL stage it must write. Discovery is a job. Coffee chat is not a pipeline. If two event types dump into one mood stage called New, reporting cannot tell you which calendar is leaking.
Identity is invitee email, lowercased. Name, phone, and the question answers write to named custom fields, not to appointment notes sales will never open. If the mapping lands in notes, you built a filing cabinet inside a booking tool.
Pick one reminder owner before you connect anything else. Two reminder systems train people to ignore both. Write the rule on the spec page: Calendly handles 24h/1h, or GHL does. The other is off.
No-show is a sequence, not a personality trait. The opportunity cannot sit on Discovery booked as if they will appear. Same-day recovery, rebook as the conversion, then lost with a reason if they go silent.
Prove it with one test booking. You should see one contact, one opportunity, one reminder source, and a show-rate denominator you can compute: held ÷ booked for that event type. If you merge contacts after the test, the identity key is wrong — fix that before you add workflows.
Intern
Your job is the table and the test booking. Event type, stage, fields, one write path. Do not build a 12-step reminder workflow. If GHL is empty after a real booking, you are done for the day — that is the ticket.
Operator
You already feel the leak: the calendar is busy, the board is fiction. Protect Discovery write-in for 90 days. Reminders from one system. No-show is a sequence. Show rate is the Monday number, by event type.
CEO
This is a money leak. Traffic into a calendar that does not write a pipeline is rented conversation. Until held ÷ booked is a number you will defend, more seats and more ads buy ghosts.
Calendly event type (one per job: Discovery, Kickoff, Recare), invitee email as identity, GHL contact, opportunity on a named pipeline, appointment on the contact, reminder owner (exactly one system), no-show tag, Conversations thread.
Calendly event Discovery booked → GHL contact created/updated + opportunity on stage Discovery booked
Reminder sequence owned by GHL or Calendly — never both nagging the same invitee
Event canceled or marked no-show → tag no-show + same-day rebook workflow on that contact
Event marked held → opportunity moves to Discovery held; Conversations stays on the same contact
Export every live Calendly event type. On one page, write the GHL pipeline and the exact stage each type must create or move. Ban leftover event types that still take bookings.
Why: Orphan event types are how discovery, onboarding, and random 15-minute chats share one fake stage.
Done when: A stranger can name event type → stage without opening Calendly.
Email is the match key. First name, last name, phone, and each custom question map to a named custom field. Turn off 'append to notes' as the home for answers.
Why: Notes are not filterable. Sales will open Calendly instead of GHL, and you are back to two databases.
Done when: A test invitee shows answers on the contact record, not only in the appointment body.
Native GHL–Calendly, or one Zap/Make scenario. Not both. If both run, you will duplicate contacts on case-sensitive emails.
Why: Two writers racing is the most common 'Calendly is flaky' ticket. It is not flaky. It is double-write.
Done when: One integration record. The other is disconnected, not paused 'just in case'.
When the event is canceled or marked no-show, tag the contact, move or keep the opportunity on a recoverable stage, and fire a same-day rebook message from Conversations. If they do not rebook in N days, lost_reason = no-show.
Why: A personal founder text does not scale and does not hit the board. Ghosts stay booked forever.
Done when: A canceled test event leaves a message and does not remain Discovery booked.
For each event type: booked, held, no-show. Show rate = held ÷ booked. Write one action or write hold. Do not blend all event types into one vanity percentage.
Why: A blended show rate hides the leaky type. Kickoff can look fine while discovery is a ghost factory.
Done when: The weekly number has a denominator and an owner.
Do not open Workflows. Print the event-type table. Create a throwaway Calendly booking with a fresh email. Confirm GHL shows the contact before the hour, with the stage Discovery booked, source tag separate from offer tag, and phone on the field you named. Screenshot the contact. If the calendar is full and the pipeline is empty, stop and fix write-in. You are not allowed to design a nurture until that screenshot exists.
A second funnel, a paid ads bump, or a 'Calendly premium seat for the team' until write-in is 100% on test bookings. Paying for more event types when discovery does not create opportunities makes the leak more expensive. Ask: held ÷ booked by type, this week. If the answer is a story, the invoice is a login fee.
Someone connected the native integration in a hurry. Event types from a demo still exist. Reminders fire from Calendly and from a GHL workflow copied from a snapshot. No-shows stay on Booked. Sales lives in the calendar view. Monday reporting is a screenshot of Calendly occupancy, which is not show rate. That is a booking tool with a CRM sticker.
Book Discovery as a stranger. Confirm one contact and one opportunity. Cancel. Confirm a recovery message and that the stage is not still Booked-as-if-they-will-appear. Book again, mark held, confirm the stage moves. If you needed to merge contacts, the identity key is wrong. Do not add a dedupe workflow. Fix the email match.
Duplicate nags train mute. Pick one clock. If GHL SMS is the confirmation, Calendly email reminders go off for that event type. Split by channel only if you have written who owns which message.
Only if each job has one source of truth. Discovery on Calendly, internal kickoff on native — that can work if the spec says so. Two public booking links for the same job is how you double-book and under-write.
Then sales still lives in the calendar. Add the opportunity create/move on booking. A contact without a deal is a rolodex, not a pipeline.
This week
This week: one event type (Discovery) writes a contact and an opportunity. One reminder owner. One no-show test. Show rate named. No second event type until that is true.
A high score in a CSV is not a qualified opportunity.
Read ↗If the thank-you does not change the contact, the page was a brochure.
Read ↗If paid lives in Stripe and the opportunity is still open, reporting is theatre.
Read ↗A lead sitting in Ads Manager is already someone else's booking.
Read ↗Working notes
The minimum CRM, pipeline, and nurture spec before you add more pages. Request the file. It arrives by email — not a public dump, not a drip of slogans.
Email and WhatsApp stay open. A call is for installing the system — not for a tour of tools.