OFFER · Any sales page above $1, OTO page, sales-VSL outline, evergreen funnel landing page.
Hook-Story-Offer page template
The Hook-Story-Offer page is the minimum-viable Brunson sales surface. Three sections — Hook, Story, Offer — with six blocks total. Every Brunson sales page collapses to this template; longer formats add layers on top, but the core structure is fixed.
Verified · editorial policy
The 6 blocks
Block 1
Hook — H1
Purpose: Above-the-fold outcome + time + buyer specificity.
[OUTCOME] in [TIME], for [SPECIFIC AUDIENCE].
Slot guidance: Same shape as the outcome-time-headline swipe file. The whole page hinges on this sentence.
Block 2
Hook — Sub-headline + CTA
Purpose: One sub-sentence of positioning + one outcome-CTA button.
[POSITIONING SENTENCE]. [OUTCOME VERB] [SPECIFIC NEXT STEP].
Slot guidance: Sub-headline is positioning, not a feature list. Outcome verb on CTA, not 'Get started'.
Block 3
Story — Founder bridge
Purpose: Three-paragraph Epiphany Bridge collapsed to landing-page length.
[BACKSTORY]. [DESIRE]. [PROBLEM]. Then [EPIPHANY]. I now believe [NEW BELIEF]. [PRODUCT NAME] is what I built around that belief.
Slot guidance: See /template/epiphany-bridge-story-template for the full structure. On a landing page, compress to 150-300 words.
Block 4
Story — Social proof
Purpose: One real testimonial or one stated absence ('we do not publish testimonials before they are verified').
[ONE TESTIMONIAL with verifiable detail] OR [HONEST EMPTY STATE].
Slot guidance: Honest empty state is a strong move pre-revenue. See /swipe-file/single-testimonial-block-swipe-file for honest social-proof patterns.
Block 5
Offer — Stack and price
Purpose: 3-7 component stack slide with honest anchors, sum, and offer price.
[COMPONENT 1] (value [$X]) + [COMPONENT 2] (value [$X]) + ... = [$SUM]. Today: [$OFFER PRICE].
Slot guidance: See /template/stack-slide-script-template for the full block. Inflated anchors are the most common Hook-Story-Offer failure.
Block 6
Offer — Guarantee + CTA
Purpose: Specific guarantee (trigger, window, verifier, refund mechanism) + repeated outcome CTA.
[SPECIFIC OUTCOME] in [TIME WINDOW], verified by [VERIFIER], or [REFUND PROMISE]. [OUTCOME VERB] [SPECIFIC NEXT STEP].
Slot guidance: Same shape as the Dollar Objection script's guarantee block. The CTA must repeat the Hook's CTA exactly.
Worked example
Hook: 'First paying customer in 60 days, for post-launch pre-revenue founders.' Sub: 'The Brunson Hard-Rule playbook for non-engineer founders who shipped with AI tools. Start the diagnostic.' Story: '(see the founder block on the live homepage)' Offer: 'Seven-Step Playbook (value $X) + Weekly Office Hour (value $X) + Diagnostic Database (value $X) = $X real value. Today: $49 / month. First paying customer in 60 days, verified by Stripe, or full refund. Start the diagnostic.'
Common failure modes
- Skipping the Founder Bridge block. The page reads as a feature page instead of a sales surface.
- Hiding the price. The Offer section's job is to make the math believable; obscuring price breaks the math.
- Inflated anchors. Quality raters and savvy buyers spot inflated stacks immediately.
- Generic CTA. The same outcome verb must repeat on every CTA on the page.
Related Brunson terms
Frequently asked
- How long should a Hook-Story-Offer page be?
- 600-1,500 words for a $1-$49 offer; 1,500-3,000 words for a $49-$497 offer; 3,000-8,000 words for above $497. Length scales with price band; structure does not change.
More offer-lens templates
Which template does your page need first?
The free 90-second Launch Diagnostic labels which Brunson failure mode your page hits — Wrong Person, Weak Offer, or Weak Belief — and tells you which template to fill in first.