Your Funnel-Build SOP
Personal reference — run this top to bottom every time you build a new funnel. Research the ICP, set Claude up with your rules and section-pass skills, then build each page one section-pass at a time through media, surveys, calls, and upsell automation. Every prompt box below is copy-paste ready. Checkboxes and progress save automatically in this browser.
File Checklist
Tick these off manually before you start a build session — this page can't scan your disk, so treat it as your own pre-flight check.
Research files
Skill / rules setup
GHL / offer details ready
Before you ship
Media & mockups
Surveys
Calls
Upsells & automation
Research
Find the real pains, objections, and pricing signals for your ICP before writing a word of copy. Output: a research dossier (like research.md).
Nail down exactly who you're selling to and what price band before researching. Fill in the brackets, then run it.
I'm building a tripwire/OTO funnel for [describe your ICP — e.g. "GoHighLevel agency owners running $2K–$10K/mo offers"]. Their core product/service is: [describe] My tripwire price range is: [e.g. $7–$27] Before we research, restate the ICP back to me in one paragraph and flag anything too vague to research effectively.
This is the big one — produces the full dossier. Use Claude's research/web tools, not memory.
Research my ICP: [paste ICP from Step 1]. Find and produce a dossier covering: 1. Top 5 pains (ranked by frequency, with VERIFIED verbatim quotes + working source links — Skool, Reddit, G2, Facebook groups, YouTube comments, forums) 2. Top 5 desires 3. Top 5 objections specifically to a [$PRICE] offer 4. 3 marketing hooks written in the ICP's own vernacular (pull directly from quotes found above) 5. 5 proof/social-proof formats that would resonate with this audience 6. Currently-live competing low-ticket offers in this space (price + hook) Rules: - Every quote must have a real, working source link. If a platform blocks retrieval, say so explicitly — do not fabricate quotes to fill gaps. - Flag any secondhand/paraphrased sentiment as such, don't present it as a verbatim quote. - End with a Recommendations section: how to position the offer, pricing test to run, and what proof to lead with. Save the result as research.md.
Research tools sometimes get blocked (Reddit/FB Ad Library often do). Confirm nothing was invented to paper over a gap.
Review research.md. List every claim that does NOT have a working source link next to it. For each one, tell me whether it's clearly labeled as a gap/caveat, or whether it reads as fact without one — flag the latter so I can fix it before I write copy from it.
Setup
Teach Claude your build rules once, as a real Claude Code Skill, so every future funnel page automatically follows your section order, visual system, and GHL wiring — without you re-explaining it each time.
oto-funnel-builder skill at
.claude/skills/oto-funnel-builder/ already encodes the full playbook
(section order, visual system, mobile rules, GHL wiring, pricing rules). Steps
below are for updating it or creating a new skill for a different offer type.
If your build rules change (new section order, new price rules, new visual system), update the source doc first.
Update GHL Agency ICP Research/FUNNELBUILDER.md: [describe the change —
e.g. "add a new section between social proof and the catch for a comparison
table" or "change primary accent from gold to blue"].
Keep everything else in the file as-is.
Whenever the playbook changes, refresh the skill's reference copy so Claude actually uses the new rules.
Copy the latest GHL Agency ICP Research/FUNNELBUILDER.md over .claude/skills/oto-funnel-builder/reference.md, replacing it entirely. Then re-read SKILL.md and tell me if its summary/description still accurately reflects the updated reference.md, or needs edits.
Quick smoke test before you rely on it for a real build.
I want to build an OTO page. Before you write any HTML, tell me which skill loaded and list the required inputs you need from me per its rules.
Claude should name oto-funnel-builder and ask for funnel position, product name/description, price, GHL button ID, and decline URL — never guess these.
Build
Build one page at a time as a sequence of focused passes — not one giant prompt. Repeat Steps 1–4 for each page (Tripwire → OTO1 → OTO1 DS → OTO2 → OTO2 DS → TY). Each pass is handled by its own skill, so Claude does one job at a time instead of juggling thirteen sections at once.
Give the page's fixed inputs once — every pass after this reads from the file instead of needing them re-typed.
Start a new page from the oto-funnel-builder starter template. Funnel position: [Tripwire / OTO1 / OTO1 DS / OTO2 / OTO2 DS / TY] Product: [name] Description: [2–3 lines] Price: [charm price] Main GHL button ID: [button-XXXXX or "use placeholder"] Decline URL: [per the playbook's convention, or specify] Save it as [file path]. Leave the content sections as placeholders — we'll fill them one pass at a time next.
Each pass is its own skill (vf-hero-section, vf-offer-stack-section, vf-proof-section, vf-faq-objections-section, vf-order-confirmation-section) — naming them in sequence lets Claude load the right one for each section instead of guessing.
Fill in [file path] section by section, one pass at a time, in this order — don't skip ahead to the next section until the current one is done: 1. Hero (vf-hero-section) 2. Offer stack (vf-offer-stack-section) 3. Social proof (vf-proof-section — real testimonials attached / no proof yet, use Mode B) 4. FAQ / objections (vf-faq-objections-section) 5. Confirmation strip + catch/close/urgency/guarantee sections per the playbook Pull from research.md throughout — don't invent a pain, hook, or objection that isn't in the research file.
Copy-only and design-only passes, run after every section exists. Order matters: design and voice before mobile, since mobile fixes should be checked against final copy/spacing.
Run three polish passes on [file path], in order:
1. vf-design-taste-pass — spacing/color/type consistency
2. vf-voice-matcher-pass — rewrite copy in the ICP's own words from research.md
3. vf-mobile-pass — audit and fix at 320px, 380/640/680/880 breakpoints
Apply fixes directly, don't just list them.
Final gate before this page is done. Run this on every page, including the TY page (to confirm it has zero upsell CTAs).
Run vf-cta-wiring-audit against [file path]. Fix anything that
fails, then run the full pre-ship checklist from oto-funnel-builder/reference.md
§9 (layout, mobile, GHL, performance, accessibility). List anything still
failing before I ship this.
Media & Mockups
Give every page real visuals instead of empty space — hero mockups, offer-stack icons, and proof screenshots. Do this after a page's copy is locked, not before.
A device/product mockup for the hero section — the "optional visual" slot in the playbook's Section 2.
Generate a hero mockup image for [page name, e.g. "OTO1 — Booked-Calls Kit"]. Show: [what the product looks like in use — e.g. "a laptop displaying the GHL booking calendar with 3 booked calls visible"] Style: clean, premium, dark background, matches the page's amber/near-black accent theme. No fake logos or brand names that aren't mine. Once generated, tell me the file path and I'll drop it into the hero section.
Section 3 (the offer stack) reads stronger with a distinct icon per item instead of the default star.
For each stack item on [page file path], suggest a simple inline SVG icon
(single color, matches --fsop-accent) that represents it. List item name → icon
concept, then generate the SVGs and swap them into the .stack-item .icon
divs in place of the ★ placeholder.
Real dashboard/result screenshots outperform stock testimonials for this ICP (per research.md's proof-format findings).
I have [N] real screenshots to use as social proof at [file path(s)]. They show: [describe each — e.g. "GHL calendar with 4 booked calls," "Stripe payout of $1,240"]. Crop/caption guidance: keep identifying client info blurred unless I've confirmed I have permission to show it. Wire them into the social proof section (Section 4) with a one-line caption under each.
Surveys
Validate before and after you ship — a pre-build survey de-risks the offer, a post-purchase survey feeds the next iteration's research.md and gives you real testimonials instead of placeholders.
Run this against a small sample of your ICP before committing to a full build — cheaper to find out the hook is wrong now.
Draft a 5-question pre-build validation survey for [ICP from research.md] to test the offer: "[working hook/headline]" at [price]. Cover: would-they-buy intent, the single biggest hesitation, which stack item they value most, what they'd expect to NOT be included, and fair-price perception. Keep it under 2 minutes to complete. Format for [Google Forms / Typeform / GHL survey — pick one].
Feeds real testimonials and objection data back into research.md for the next funnel iteration.
Draft a post-purchase survey for buyers of [product], sent [e.g. 7 days] after purchase. Cover: what result they've gotten so far, what almost stopped them from buying (objection data), a quotable testimonial prompt ("describe your result in one sentence"), and permission to use their answer as a testimonial (name/photo optional). Keep it to 4 questions max.
Calls
For funnels that ascend to a booked call (application, DWY, high-ticket) — the script and onboarding flow that turns the call into a closed deal and a retained client.
Built from the objections already surfaced in research.md, so the script pre-empts what this ICP actually says.
Write a sales call script for the [$2K–$10K offer name] call booked
from this funnel. Pull directly from research.md's Top 5 Objections and
Desires sections.
Structure: rapport/context → discovery questions → pitch tied to the ONE
pain they confirm hurts most → price reveal → objection handling (use the
verbatim objections from research.md) → close. Keep discovery questions
open-ended, not leading.
research.md flags onboarding overwhelm as a top churn driver — this closes that gap immediately after the sale.
Build a first-call onboarding checklist for new [product] clients,
aimed at preventing the early-churn pattern research.md identified
("overwhelmed immediately after login," "don't know where to start").
Cover: what to set up together live (not "watch this video later"), the
single first milestone to hit before the call ends, and what happens if
they go quiet in week one.
Upsells & Automation
Once the pages exist, wire the GHL automations around them — confirmation emails, nurture sequences, and the ascension path from tripwire to the $2K–$10K offer.
Write two email sequences: 1. BUYER sequence ([N] emails) — for people who bought at least the tripwire. Goal: deliver value, surface the next ascension offer ([next offer name/price]) without being pushy. 2. LEAD sequence ([N] emails) — for people who visited but didn't buy. Goal: handle the #1 objection from research.md, re-present the tripwire. Tone: [describe]. Each email: subject line + body, ready to paste into GHL.
Not code — a plain-language spec of what triggers what, so you (or whoever builds the GHL workflow) doesn't miss a step.
Map the GHL automations needed for this funnel:
[list pages: tripwire, OTO1, OTO1 DS, OTO2, OTO2 DS, TY]
For each trigger (purchase, decline, abandoned checkout, tag applied),
list: trigger → action (tag/email/SMS/pipeline move) → delay if any. Flag
anywhere a client's data would need to leave GHL — call that out separately
since it needs its own privacy check.
Confirm the full price ladder still follows the multiplier rules in the playbook before launch.
Check my full price ladder against FUNNELBUILDER.md section 7 (pricing rules): Tripwire $[X] → OTO1 $[X] → OTO1 DS $[X] → OTO2 $[X] → OTO2 DS $[X] → application to $[high-ticket offer]. Flag any jump that breaks the ≤4–5× / ≤50% / ≈1.5–2× rules, and confirm every price ends in a charm number.