Funnel SOP — Research → Setup → Build

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

1

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.

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

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

Prompt
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.
2

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.

Already done once: the 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.

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

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

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

3

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.

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

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

Prompt
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).

Prompt
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.
4

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.

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

Prompt
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).

Prompt
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.
5

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.

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

Prompt
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.
6

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.

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

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

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.

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

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

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