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.

🚀 Explore Our Network

Full disclosure: UnlockSaaS is one of ten small products built and run by one independent operator. These are the other nine.

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.