Skip to content

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

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

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

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

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

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

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

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.

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.

60 days
To First Paying Customer
7 steps
Proven Playbook
100%
Money-Back Guarantee
$49
Founding Price /mo

You shipped. Nobody paid. The playbook breaks the pattern or the code refunds you automatically.

Get Free Diagnosis

Refund runs from your dashboard, not a support ticket — the server re-checks eligibility and issues it through Stripe automatically.