Funnel script
One-time offer (OTO) script
A complete OTO upsell page script in under 200 words. Headline (natural-next-step), 3-bullet stack, price with comparison to just-paid front-end, two clearly visible buttons (yes / no thanks), mirror of front-end's guarantee. Captures 15 to 35% of front-end buyers.
Verified · editorial policy
TL;DR
As of , the short version is: A complete OTO upsell page script in under 200 words. Headline (natural-next-step), 3-bullet stack, price with comparison to just-paid front-end, two clearly visible buttons (yes / no thanks), mirror of front-end's guarantee. Captures 15 to 35% of front-end buyers.
One-time offer (OTO) script TL;DR
- Script
- One-time offer (OTO) script
- Format
- Single-page upsell shown after front-end Stripe success
- Target length
- 150 to 200 words
- When to use
- On every front-end funnel (tripwire, VSL, sales page, Perfect Webinar). The OTO is funnel infrastructure, not a separate strategy. If you have any paid offer with a checkout, you should have at least one OTO step.
- TL;DR
- A complete OTO upsell page script in under 200 words. Headline (natural-next-step), 3-bullet stack, price with comparison to just-paid front-end, two clearly visible buttons (yes / no thanks), mirror of front-end's guarantee. Captures 15 to 35% of front-end buyers.
- Last verified
- May 20, 2026
The script, block by block
Block 1 · Block 1: Headline (1 line)
Name the natural-next-step outcome.
Say something like
You just got [front-end deliverable]. Now [natural extension] for $[2–5x front-end price].
Founder note
Headline extends the buyer's just-made decision. 'You just got X' acknowledges the decision; 'Now [Y]' extends it. Do not introduce a new sales argument.
Block 2 · Block 2: Stack (3 bullets)
List 3 deliverables specific to the upgrade.
Say something like
Here's what's added:\n• [Extension 1] – [small anchor]\n• [Extension 2] – [small anchor]\n• [Bonus 3] – [small anchor]
Founder note
Three bullets max. The buyer already trusts you; don't re-pitch. The stack is shorthand confirmation that the price is fair.
Block 3 · Block 3: Price + guarantee (1 line)
State the price + mirror the front-end's guarantee.
Say something like
$[OTO price]. Same [60-day] guarantee as your [front-end] – refund if [outcome] doesn't happen by [date].
Founder note
Guarantee mirroring is mandatory. If the front-end has a 60-day guarantee and the OTO has 'no refunds on upgrades', the buyer's trust collapses and the OTO converts at near-zero.
Block 4 · Block 4: Buttons (2, both visible)
Yes / no thanks – both buttons clearly visible.
Say something like
[Yes button: 'Yes, add this for $X – one-click'] | [No thanks button: 'No thanks, just send me [front-end]']
Founder note
Both buttons visible and labelled. Hidden 'no thanks' is adversarial UX that survives short-term but kills long-term trust. The 'yes' button must be one-click (Stripe Setup Intent) – re-entering card info tanks OTO conversion by 40 to 70%.
Variables to fill in
[front-end deliverable]– What the buyer just paid for. Verbatim from the front-end page.[natural extension]– The next thing in the same direction. Not a leap to a different cohort.[OTO price]– 2x to 5x the front-end. Beyond 5x feels like a frame-break.[guarantee event]– Same trigger event as the front-end. Mirror exactly.
Common script-level mistakes
- OTO is a different cohort's offer. $1 starter buyer + $497 mastermind OTO = frame break, near-zero conversion.
- OTO has more friction than front-end. Re-entering card details, extra info forms, popup confirmations all cost 10–30% per friction layer.
- OTO is the same product re-priced. Feels like bait-and-switch on the original purchase.
- Hidden 'no thanks' button. Adversarial UX that destroys long-term trust.
- Different guarantee terms than front-end. Buyer's just-built trust collapses.
Questions founders ask about this script
Should the OTO be on a separate page or in the checkout?
Separate page after Stripe success. In-checkout order-bumps work for low-priced add-ons ($7–$19 bumps to a $97 core) but underperform separate-page OTOs for higher-priced extensions.
How long should the OTO page be visible?
Permanent. The phrase 'one-time offer' means the offer is a one-time decision in the buyer's path, not a time-limited offer. Fake countdowns are trust-breaks.
Should I have one OTO or two?
Start with one. Take rate on a second OTO is 5 to 20% of buyers who took the first. Beyond two, take rates collapse and the funnel feels like a hard sell.
Related funnel playbook
One-time offer (OTO) funnel playbook →
An OTO (One-Time Offer) is a single upsell shown immediately after a front-end purchase. Done right, it captures 15 to 35% of buyers and often doubles or triples the funnel's profitability. The key: the OTO extends the buyer's just-made decision, not introduce a new one.
Related Brunson terms
Now diagnose your live page
Script is the structure. The 90-second Launch Diagnostic checks whether your live page is breaking on Hook, Story, or Offer right now and tells you which block of this script needs the most work first.