Local Leap Media

GHL Client Setup — Snapshot & Automation Build SOP

This is the full build process for a new client's GoHighLevel sub-account. It expands Phase 3 of the Client Launch SOP. Mohamed owns this process. Written from Sean's three training calls with Mohamed (Oct 2025, Dec 2025, Jan 2026) and updated against the current system (Jul 2026).

Scope: this SOP is for building a new account. For fixing a live account (broken form connection, calendar edits, setter reassignment), use the GHL Account Operations — Cross-Training Manual instead. Do not duplicate steps between the two.

Goal: the finished account catches every lead, texts the homeowner correctly, notifies the setter and the client, writes every lead to the master sheet, and has a working booking page. Target time when practiced: under one hour.


Before You Start — Inputs You Need

Collect these before opening GoHighLevel. If one is missing, ask before starting.

  1. Client onboarding survey response — company name, address, service area, website, logo, appointment times, CRM details. Keep it open in a side window during the whole build.
  2. Griffin's onboarding call sheet — filled out by Griffin after the onboarding call. This adds what the client said out loud: niche label, retainer or pay-per-appointment, internal or external booking, calendar exceptions (example: "Saturdays only if we call them first"), keep or delete reminders, offers and financing the setters can mention. Where the survey and Griffin's sheet disagree, Griffin's sheet wins — it is newer. If it is still unclear, message Griffin or Sean.
  3. Logo file — from the survey, or the cleaned version Hanif posted and pinned in the client's Discord channel (see Client Launch SOP Phase 2A).
  4. Domain[clientname].directestimatepro.com, already created and connected to the sub-account (Client Launch SOP Phase 2C / Cross-Training Manual D2).
  5. Phone number — already purchased by Sean or Griffin. Buying requires US ID verification, so Mohamed does not buy numbers. You configure the number after it is bought (Phase 3 below).
  6. Facebook + Google integrations signed in — Sean signs these in because they use his logins. If the Integrations page shows "Sign in" or "Connect," stop and tell Sean.

Placeholders used in this SOP: [Company Name] = full public name, [Friendly Name] = short homeowner-facing name (no LLC, no Inc), [ABBR] = short initials for internal labels, [Setter] = the appointment setter assigned to the account.


Phase 1 — Pick and Prepare the Sub-Account

  1. Go to agency view (the zoomed-out account list). If you cannot see it, ask Sean to update your permissions.
  2. Find the sub-account for this client. It is one of two kinds: - A spare pre-registered account (named like A2P #21). These exist so a new client is not blocked waiting on A2P registration (A2P = the carrier registration required to send texts). Status "Active A2P" = ready. See Cross-Training Manual D2. - A recycled account from a churned client. Before anything else: open Automations, create a folder named Old or Archive, and move every existing workflow into it. This hides the old client's workflows so the new snapshot starts clean.
  3. Confirm the Business Portfolio was renamed to the client's company name (Griffin/Sean do this at domain-connect time). If not, rename it now so the account is findable.

Phase 2 — Business Profile

Sub-account → SettingsBusiness Profile.

  1. Friendly Business Name: [Friendly Name] — no LLC, no Inc. This is how the team finds the account and part of what homeowners see.
  2. Legal Business Name: the full legal name from the survey (with LLC) — fine to fill, not critical.
  3. Address: copy from the survey. Double-check the city — some city names are one combined place (example: "Mountlake Terrace"). Search the city in the field rather than typing blind.
  4. Time zone: the single most important field on this page. Look up a major city in the client's state if unsure (example: Los Angeles for Pacific time). Every calendar and every text send-time depends on this.
  5. Business Website: the client's real website from the survey. This shows on the setter-facing page later, so do not skip it.
  6. Business Phone: use the Local Leap office number if the client's number will not validate. Never leave a number that fails validation.
  7. Update/save each section separately. The page saves in independent blocks — saving one block does not save the others. Check each one saved.

The address and website you enter here auto-fill the setter info page later. Fill more rather than less.


Phase 3 — Phone Number Settings

The number is already bought (matching area code to the client, same town when possible). You configure it. Settings → Phone Numbers.

3A. Messaging compliance

Settings → scroll to SMS compliance (it links into the phone settings pages — go section by section).

  1. Keep SMS compliance ON.
  2. Turn OFF the automatic sender-name introduction text. Our workflow message already names the company, so the automatic version is a duplicate.
  3. Keep the automatic opt-out line that ends the first text ("if this is the wrong number, reply…"). It tells us instantly when a number is wrong.

NOTE

Unverified — confirm with Mohamed/Sean before relying on this step. The exact toggle names in the compliance screen have changed since the Dec 2025 training. The intent is fixed: SMS compliance on, duplicate sender-name text off, opt-out reply on. Match the intent to whatever the current toggles are called.

3B. Messaging limits

Set the daily SMS limit to 5,000. The default limit is low enough that a busy account can hit it and silently stop sending texts. 5,000 removes that risk.

3C. Number configuration

Phone Numbers → three dots next to the number → Edit Configuration (GHL docs: Phone Number Configuration Options).

  1. Name the number: [Company Name].
  2. Call Connect: ON (usually the default).
  3. Whisper message: [Company Name]. Lead name: {{contact.name}} — when a homeowner calls back, the setter hears which client and which lead before the call connects.
  4. Call recording: ON. Delete the default "this call is recorded…" announcement text and leave only a period (.). We record without playing an announcement.
  5. Forward / assign to the setter on the account. Default is the lead setter; they can re-route later (Cross-Training Manual B1).

NOTE

Future sub-accounts are moving to the Signal House phone provider (Cross-Training Manual B6). Texting works the same; calling and recordings behave differently. If the account is on Signal House and a step here does not match the screen, follow B6 and tell Sean what changed.


Phase 4 — Integrations (Sean's step — you verify)

Settings → Integrations. Sean connects Google (so leads write to the master sheet) and Facebook (so leads arrive from the ad forms) because both use his logins.

Your job is verification, not setup:

  1. If anything on this page says "Sign in" or "Connect," tell Sean immediately. Do not continue past Phase 7 until it is fixed — workflows cannot pick a lead form that is not connected.
  2. Facebook Form Fields Mapping (Settings → Integrations → Facebook Form Fields Mapping): confirm the client's lead form appears and mapping is done. The standard mapping never changes: - "Are you a homeowner within [area]?" (or any in-service-area question) → Service Area field - "What are you interested in replacing?" (or any project question) → Project Scope field - Name, email, phone, zip map automatically.
  3. The media buyer builds the lead forms and usually does this mapping now — the full mapping workflow lives in the Media Buyer Launch Playbook. You only need to recognize when it is missing (Cross-Training Manual A1 is the fix).

Phase 5 — Load the Snapshot

The snapshot copies the whole template build (pipeline, calendars, workflows, funnel pages) into the empty account.

  1. Go to agency view → find the sub-account → three dots → Manage ClientActions (top right) → Load Snapshot (GHL docs: Load snapshots into existing sub-account).
  2. Pick the current master snapshot: AAA All Niche. One snapshot covers every niche — the niche word is filled in by a custom value (Phase 6). The old per-niche snapshots (AAA HVAC, AAA Windows) are retired; do not use them.
  3. Proceed → select all assets → confirm. On an empty account everything imports cleanly. On a recycled account the old assets are already archived (Phase 1), so the snapshot assets are the only live ones.
  4. Switch to the sub-account and confirm the template assets are there.

NOTE

Unverified — confirm with Mohamed/Sean before relying on this step. "AAA All Niche" was the snapshot name in Jan 2026 and the snapshots have been refined several times since. Confirm the current canonical snapshot name before loading. Loading the wrong (older) snapshot is the most expensive mistake in this SOP.


Phase 6 — Custom Values (the control panel)

Settings → Custom Values (GHL docs: Custom Values). Since the Jan 2026 snapshot, custom values drive everything: change a value once here and it updates every workflow, text, and page that uses it. Fill these before touching the workflows.

Custom value What to put Rules
Niche hvac, countertop, roof Singular, because it renders inside sentences ("your countertop estimate"). If the right label is not obvious, ask Sean — do not guess.
Company Name [Friendly Name] This is what homeowners see in texts. Short, natural, no LLC ("One Stop Heating and Cooling", not "One Stop Heating Cooling & Electric LLC").
Client Phone Number 1–3 The notification numbers from Griffin's sheet Formatted version for display; the raw version is +1 plus digits, no spaces or dashes. Leave 2 and 3 blank if only one number. If a client ever wants 4+ contacts, add the extra one manually in the workflow.
Client Email 1–3 Notification emails from Griffin's sheet Same pattern as phones.
Owner Number / Raw Owner Number Only for internal-booking clients who want direct notification Edit the value, keep the key name. See Phase 9C.

Custom values vs custom fields: a custom field is a sticky note on one contact (one lead). A custom value is a sticky note on the whole sub-account. This SOP only sets custom values.


Phase 7 — Pipeline

Opportunities tab → Pipelines.

  1. The snapshot ships one template pipeline. Rename it: [Company Name] or [ABBR] — anything the team can recognize at a glance.
  2. That is the whole step. The workflows already point at this pipeline because it came from the same snapshot.
  3. Copy the pipeline link into the All Clients sheet (Phase 12) while you are here.

Phase 8 — Calendars

CalendarsCalendar Settings. The snapshot ships a calendar group with two calendars: the homeowner calendar (public self-booking, limited) and the setter calendar (internal, wide-open availability).

8A. Names

  1. Rename the calendar group to [Company Name] — public-facing, use the real name.
  2. Rename the homeowner calendar the same way. Button text and wording inside the calendars stay templated — do not edit copy.

8B. Which calendars stay active

Griffin's sheet tells you which type this client is.

8C. Availability — the judgment step

Edit the homeowner calendar → Availability. Translate what the client wrote into slots (GHL docs: Calendar Availability Settings):

  1. Set the weekly hours from the survey. Use the copy-hours shortcut for identical days, then edit the exceptions.
  2. Meeting duration: 2 hours (our default; nearly every client confirms it).
  3. Buffer: only if the client asked (example: "2-hour appointments but leave 3-hour spacing" = 2h duration + 1h buffer).
  4. Minimum scheduling notice: 24 hours (our default). Only go longer if the client demanded it (example: "2 days out" = 48 hours). Never go under 24 — we need time to confirm before the appointment.
  5. Max bookings per day: set it if the client gave a cap (example: "no more than 2 estimates a day" = 2). Empty or zero = unlimited.
  6. Fixed start times: if the client gave exact slots with gaps (example: 10 AM, 2 PM, 4 PM), set availability windows around those starts and set the slot interval to the gap size (example: 2 hours) so only those times show.

The homeowner sees less than the setter. This is the core calendar rule:

8D. Verify like a homeowner

Open the calendar's share/preview link. Check: earliest slot, latest slot, blocked days, and slot times exactly as the client asked. If a wrong time shows (example: a 3 PM between fixed 2 PM and 4 PM slots), fix the slot interval and check again. Do this every time — it catches most calendar mistakes.

Copy the booking link into the All Clients sheet (Phase 12).


Phase 9 — Workflows (Automations)

Automations tab. The snapshot ships about five workflows. Only three need real editing; the rest are rename-only. Work top to bottom. Rename every workflow you finish with the [ABBR] prefix (example: [GSA] W1 - Add Form Submitted) — the rename is how Sean audits that each one was actually opened and done.

Enable autosave inside each workflow. Save the action after each edit AND save the workflow at the top right — they are separate saves.

9A. W1 — Add Form Submitted (the main lead workflow)

This one catches the lead, texts the homeowner, notifies the setter, and writes the sheet row. Edit every step in order:

  1. Trigger: select the client's Facebook page and lead form. If the form does not appear, the integration (Phase 4) is not done — stop and tell Sean. When new forms are added later, they must be added to this trigger (Cross-Training Manual A1).
  2. Company-name placeholders: everywhere the template says company / Company Name, delete the placeholder tag and type the real name. Use [Friendly Name] for anything a homeowner will read.
  3. Tag step: delete the template tag, create a new tag with the client's name.
  4. First homeowner text: reads like "Hi [first name], this is the scheduling team at [Friendly Name]…". Check the company name renders. If this field is empty the text silently never sends — this is the highest-damage miss in the build.
  5. White-label line: the template may carry an optional white-label sentence (the Home Project Pal / "certified installer" line). Default: delete it — we speak as the client's own scheduling team, first person ("this is the scheduling team at [Company]"). Keep it only if Sean says this client is a white-label account.

    NOTE

    Unverified — confirm with Mohamed/Sean before relying on this step. Whether the Home Project Pal white-label option is still active in the current snapshot is unconfirmed; the Apex white-label variant was already retired in Dec 2025.

  6. Booking link / website: the reply text sends the homeowner to [clientname].directestimatepro.com/schedule-appointment. Confirm the link matches the real domain, then click it to confirm it is not broken.
  7. Assign to user: the setter on the account. Default assignment is the lead setter unless Sean says otherwise (reassignment later: Cross-Training Manual B2).
  8. Setter notification: confirm the notification (and its email twin) includes Service Area and Project Scope, and that the field name inside the message matches the actual field (Project Scope — old templates said Master Project Scope; if you see that, fix it to match).
  9. Create Spreadsheet Row — the step that feeds every tracker we have: - Connect to Sean's Google account → My Drive → the All Clients sheet → Raw Data tab. - Map columns A through I in order: date created, contact fields (name, phone, email), address, city, zip, ad source — finishing with Project Scope. - The exact column list lives in the Raw Data Sheet schema. GHL will refuse to save the step half-mapped, which makes this hard to forget — but check the mapping anyway.
  10. Publish the workflow and save.

9B. W2 — Self-Booked flow

Runs when a homeowner books a time on the calendar page.

  1. Calendar reference: already correct from the snapshot (same-snapshot linkage). Do not touch.
  2. Homeowner confirmation text: read it once; confirm the company name and times render correctly.
  3. Client notification (the customization point): Griffin's sheet says how this client wants to hear about new appointments: - Just a nudge ("New appointment — check Housecall Pro"), or - Full details (name, address, time, project). Edit the notify-client text and notify-client email steps to match. Numbers and emails come from the custom values (Phase 6), so adding a second phone later needs no workflow edit.
  4. Appointment reminders (48h / 24h "reply 1 to confirm, 9 to cancel"): Griffin's sheet says keep or delete. To delete: right-click the first reminder step → delete this and everything below it. Reminders never auto-cancel — only an actual "9" reply cancels the appointment. No reply = the appointment stands.
  5. Rename with [ABBR], publish, save.

9C. W3 — Setter-Booked flow

  1. External-booking client: put this workflow in draft (three dots → draft). Setters book into the client's CRM, so this flow would double-notify.
  2. Internal-booking client: keep it live, and set the client-notification steps the same way as 9B step 3. If the client wants notification no matter who books, that is the Owner Number custom value (Phase 6) — the workflow reads it automatically.

9D. Remaining workflows

Rename with the [ABBR] prefix. No other edits. If a workflow looks like an experiment (old "data merge" style steps), leave it drafted — do not publish template experiments.

NOTE

Unverified — confirm with Mohamed/Sean before relying on this step. The five-workflow inventory reflects the Jan 2026 snapshot. The snapshot has been refined since; count and names may differ. The editing rules (rename everything, W1 checklist, notification customization, reminder keep-or-delete) carry over regardless.


Phase 10 — Website (funnel pages)

WARNING

This phase is mid-transition (Jul 2026). Client booking sites are moving off GHL funnels onto Vercel-hosted pages on the same directestimatepro.com domains — much faster pages, real Google-review sections, and AI-editable. Boost Air is live on the new stack, including a booking-confirmation redirect (calendar RedirectURL → /confirmation-page) replacing the GHL confirmation step. Rollout is per-client. Ask Sean which stack this client launches on before doing this phase. The steps below are the GHL-funnel path, still current for most accounts. (UI updated since training.)

Sites → Funnels → the template funnel.

  1. Settings: rename the funnel to [ABBR]. Connect the domain (it appears after Sean/Griffin's domain step — refresh if not). Save.
  2. The funnel pages are pre-named and never change: /schedule-appointment (main page with the survey), the calendar page, /confirmation, and /setters-only. You edit four pages; ignore the rest.

10A. Main page (/schedule-appointment) — the page you spend the most care on

  1. Logo: download from the survey (or Discord pin). Replace the placeholder logo top and bottom. Check mobile view.
  2. Footer: current year + full official company name (looks official).
  3. Gradient/accent color: match a color from the client's logo. Judgment call — keep text readable. If the logo has no usable color, dark blue or black.
  4. Survey version: make sure the page uses the latest lead-form/survey version, not an older numbered one.
  5. Zip-code check: in the survey's conditional logic, set the zip-code range to the client's state (look up the state's zip range; use a slightly generous range). This makes homeowners enter a plausible 5-digit zip.
  6. SEO metadata (the magnifying-glass icon): social image = client logo; title/content = [Friendly Name]. This is what shows if someone shares or searches the page.
  7. Publish, then preview: click through the survey as a homeowner, check every button.

NOTE

Unverified — confirm with Mohamed/Sean before relying on this step. The zip-code conditional-logic step and the survey version number reflect the Dec 2025 form. The lead form has been re-versioned since (Lead Form Standard Questions is the current question set). Confirm the current form version and whether the zip logic is still set per-client.

10B. Calendar page

Everything carries over from the calendar build. Add the logo, check it looks clean, publish.

10C. Confirmation page

Template is complete. Add the logo, publish. (On the new Vercel stack this page is replaced by the calendar RedirectURL → /confirmation-page — see the warning above.)

10D. Setters-only page (/setters-only)

The internal cheat-sheet the appointment setters read while calling. Company name, address, and website auto-fill from the Business Profile. You add the judgment content — more information is always better:

  1. Owner name — from the survey.
  2. Service area — radius + city, plus the state rule spelled out ("New Jersey only — no other states") so a brand-new setter cannot book across a state line.
  3. Time zone — confirm correct.
  4. Promotional offers — only what the client approved (survey + Griffin's sheet). Delete template offers the client did not approve.
  5. Financing — what they actually offer (months, 0% program). A generic "as low as $[XX]/month" line may stay as the catch-all if the client has financing.
  6. Warranties, rebates, brand names, government programs — anything the client sent. Long URLs become a short labeled link ("[State] rebate program — link").
  7. Project minimum — if the client has one, state it. If they have none, list project types instead (materials, job types they take).

Publish, then read it as if you were a setter on your first day: is anything missing that a caller would ask?


Phase 11 — AI Integration (Private Integration token)

Every client sub-account gets a Private Integration so the company AI agent can read call data and manage calendars. Settings → Private Integrations.

  1. Follow the GHL Claude Read Token SOP to create the integration (~2 minutes). Token handoff to Sean by DM only.
  2. Scopes — the read set from that SOP plus the calendar-write set (standard since Jul 2026): View Calendars, Edit Calendars, View Calendar Events, Edit Calendar Events. (Calendar-group view/edit optional but harmless.)
  3. This is what lets the AI block out days, change hours, and update custom values from natural-language requests instead of manual clicks. Existing clients were back-filled on 2026-07-07; every new build includes it from day one.

Phase 12 — Bookkeeping and Handoff

  1. All Clients sheet: fill the client's row — pipeline link (Phase 7), booking link (Phase 8; for external-booking clients note "book in [CRM], info: [setters-only link]"), setters-only link, client website. Leave blank anything you are unsure of rather than guessing.
  2. KPI tracker: copy the tracker template sheet, name it for the client, set the month-start date cell to the first of the current month, and enter the company name exactly as it appears in the Raw Data sheet (apostrophes in names can break the match — tell Sean if it errors).

    NOTE

    Unverified — confirm with Mohamed/Sean before relying on this step. The per-client tracker copy is from the Oct 2025 call; the KPI system has been rebuilt since and this step may be automated or retired.

  3. Tell the team the build is done in the client's Discord channel. This hands off to Client Launch SOP Phase 4 — Fagr runs the test contact (self-book test + outbound call test) against everything you just built. Do not skip the handoff message; the test contact is what catches a silent miss.

Quick Checklist

# Step Done
1 Sub-account picked; old workflows archived (if recycled)
2 Business Profile: friendly name, address, time zone, website
3 SMS compliance set; limit 5,000; number config (whisper, recording ., assigned)
4 Integrations verified (Google + Facebook connected, form mapped)
5 Snapshot loaded (current master), switched into sub-account
6 Custom values: niche (singular), company name, phones, emails
7 Pipeline renamed; link filed
8 Calendars: names, active set, availability, notice, caps; previewed as homeowner; link filed
9 W1 fully edited (trigger, names, text, link, assign, notification, sheet row); others per type; all renamed [ABBR]
10 Website: logo, footer, color, survey version, zip logic, SEO, all pages published + previewed — or Vercel path per Sean
11 Setters-only page filled (owner, area + state rule, offers, financing, minimum)
12 Private Integration created with calendar scopes
13 All Clients row filled; handoff posted → test contact (Launch Phase 4)