Meet TrackPlay at Affiliate Grand Slam in Rome, 2 to 5 November
Pricing Blog Partners Contact

When should the buy button appear on a VSL?

Most delayed buttons are a round number typed into a page builder, counted from page load. Pick the second from the pitch instead, and count it on the video's clock.

By Sam, Founder of TrackPlay24 Sep 20269 min read
Summarize with:
Illustration: a video frame above a timeline, with a marker two-thirds along that drops down to a buy button
The short answer

Show the buy button on the second the price is spoken, and time it to the video's clock, not the page's. Keep it visible from then on, and show it at once to anyone who has already heard the pitch. Then check that enough viewers reach that second, because a hidden button only pays if the pitch arrives before the buyer's patience runs out.

Why hide the button at all

The case for hiding it is old and simple. A page with a price and a buy button under the video reads as a sales page from the first second, and a cold viewer judges the price before hearing why it is fair. Hide the button, and the page reads as content. DigitalMarketer made that argument in 2016, and a copywriter writing about infomercial tests made it before them: the later ask beat the earlier one. Neither published numbers.

The case against is just as old. "If the customer is ready to give you money, take it," as one marketer put it in a Warrior Forum thread about exactly this setting, over a decade ago. Some viewers decide early. A hidden button makes them wait, and some of them do not.

Both sides are opinions. We found no published test from any testing platform or conversion lab comparing a delayed VSL button with an always-on one. So the useful question is not which camp is right. It is how to set the delay properly, and how to tell whether it is paying on your own traffic. For what the button should look like once it is there, see what makes a good VSL video player.

The clock matters more than the number

Every guide says to reveal the button "when the offer is introduced". None of them asks which clock is counting. There are two, and they drift apart the moment a real person watches.

Page timers

Page builders count from page load. The ClickFunnels delay is an animation delay in milliseconds, triggered on load or on scroll. Kajabi's Time Reveal counts from page load too, and its own help article shows the catch: to reveal a button after a 20-second autoplay video, it sets the timer to 21 seconds. That works only if the video starts the instant the page opens and nobody touches it. GoHighLevel's show and hide timer counts minutes from load as well.

What breaks a page timer

  • The viewer pauses. The timer keeps running. The button arrives before the pitch.
  • The video loads slowly or buffers. An old Warrior Forum thread found the reveal point moving with load time. Every stall is time the timer counts and the viewer never saw.
  • The viewer starts late. They read the headline first, or scroll, or wait with the sound off. The timer started without them.
  • The viewer comes back. A page timer resets on every load, so a returning viewer waits through the whole delay again.

Users on GoHighLevel's ideas board have been asking for a trigger based on video progress since June 2024, with the obvious question attached: what if the viewer pauses the video?

Illustration: a page with a stopwatch on top and a button already showing, next to a paused video whose progress bar is only a quarter full
Two clocks: the page timer keeps running while the video sits paused, so the button shows before the viewer has heard the offer.

The video's clock

VSL players count playback instead. The reveal is tied to a second of the video, so a pause holds it back, a slow load holds it back, and a late start holds it back. The button appears when the viewer reaches the pitch, whenever that is on the wall clock.

There is one flip side. Seeking forward also crosses the second, so a viewer who drags the progress bar to the end can reach the button early. For cold traffic, most VSL owners hide the scrub bar for exactly this reason, which leaves no quick way to jump to the price. The player article covers the rest of that trade.

Pick the second from the pitch, not a guess

Most reveal times are round numbers: five minutes, ten minutes, "about two-thirds in". The script already contains the right one. It is the second the price is spoken, which is why the structure guide says to put the pitch on a known second in the first place.

You do not have to find it with a stopwatch. TrackPlay reads the pitch from the transcript and draws a Pitch marker on the retention graph. Every timed event you configure draws its own named marker on the same chart, so you can see at a glance whether the reveal sits on the pitch or somewhere near it.

Illustration: a falling retention line crossed by a dashed vertical marker, with a buy button pinned to the top of the marker
The button belongs on the pitch marker: the same second on the retention curve, the script and the reveal.

Then check the second against the people who bought. Switch the curve to buyers against non-buyers. If the buyers' line is already falling before the marker, the pitch is late for your own customers, and no reveal setting will fix that. Move the pitch, or cut what comes before it.

One more trap: split tests. If two variants are cut differently, their pitches land on different seconds, and each variant needs its own reveal second. A shared delay puts one of them wrong.

Who should see it early

One reveal second for every visitor is the simple setup, and it is wrong for some of them. The viewer's history decides when the button should appear.

Cold traffic

Hide it until the pitch. This is the viewer the delay was invented for: no trust yet, no context for the price.

Warm list and pre-sold affiliate traffic

Earlier, and test it. A subscriber who has read your emails, or a click from an affiliate who already sold the idea, may be ready before the pitch. The forum thread that argued for delays also warned that pre-sold traffic skews the results, so judge this traffic on its own.

Returning viewers who heard the pitch

Show it at once. They have heard the offer and came back, which means they are closer to buying, not further. Making them sit through the video again is the page timer's mistake repeated. The usual way to do this is a cookie set when the viewer passes the pitch second, so the next visit shows the button on arrival.

Viewers who left before the pitch

Do not reveal it. They have not heard the offer. Bring them back to where they stopped instead: Continue Watching offers Continue or Restart for 90 days, on any device. If they are leaving right now, exit intent shows one designed message on the way out.

Buyers

Do not sell them the product they already own. A buyer who comes back to the sales page should be pointed at what comes next: the login, the onboarding, the next offer.

Illustration: three cards in a row: an eye with a locked button, a refresh arrow with a buy button, and a check badge with an arrow button
Three visitors, three buttons: locked for a new viewer, open for one who heard the pitch, and a next step for a buyer.

Button only, or the whole order form?

The button is one element. The price table, the guarantee, the bonus stack and the FAQ under the video can give the pitch away just as fast. A viewer who scrolls at minute two and finds the price has skipped the argument whether or not the button is visible.

Reveal them together, on the same second. Timed events keep page sections hidden until a second or a watch percentage, then reveal them, with no code on the page. Watch gates do it by how much of the video has been watched. A CTA card puts the button inside the player itself, on the same second.

Once it is revealed, keep it visible. Do not give the main CTA an end time. The viewer who hears the price, keeps watching the objections and decides at minute 31 needs the button still there.

On a phone

A button below the player does not exist for a viewer watching fullscreen. At least one VSL host's own help docs say its CTA buttons do not appear in mobile fullscreen. On a phone, the page under the video is only there once the viewer leaves fullscreen and scrolls.

Two fixes. Put the ask inside the player, where it travels with the video: a Banner CTA card stacks its headline, copy and a full-width button when the player is narrower than 420 pixels, so it stays readable in a portrait embed. Or reveal and scroll together: a timed event can scroll the page to the order section on the pitch second, leaving fullscreen first.

Illustration: two phones playing a full-screen video; the first has an empty dashed button outside the screen, the second has a buy button inside the video
On a phone in fullscreen, a button under the video is out of reach. Inside the player, it is on screen when the pitch lands.

What to measure

Three numbers, in this order.

  1. Reach. The share of viewers still watching at the reveal second. The Funnel tab shows it as the "Pitch reached" step.
  2. Click rate after the reveal. A CTA card draws a marker on the retention graph with its shown and clicked counts at that second.
  3. Orders from those clicks. With cart postbacks, the sale lands on the session that clicked, so a click that never became an order is visible as one.

Then roll them into one: revenue per play.

Illustration: a wide funnel with a thin spout dropping one coin, next to a narrower funnel with a wide spout dropping three coins
Reach times click rate: a wide top with a thin spout can pay less than a narrow top with a wide one. Count what comes out the bottom.

Here is the trap. A later button will almost always show a higher click rate, because only the committed viewers are left to see it. Wistia's data on in-video CTAs shows the effect on marketing videos: on videos of 5 to 30 minutes, CTAs in the last quarter drew 18% clicks from the viewers who reached them, against 14% in the first quarter. That is not proof that later is better. It is survivors being counted. Total clicks are reach times rate, so a button that 30% of viewers reach at an 18% click rate (5.4 clicks per 100 viewers) loses to one that 70% reach at 12% (8.4 per 100).

The test that settles it: clone the video, move only the reveal second, and run both as a split test under the same embed. Each visitor sticks to one version. Decide on conversion rate per play, and wait for the significance flag.

The trade-off, stated plainly

Hiding the button costs every viewer who decided early and left looking for it. Showing it costs every viewer who saw a price with no context and left. Your traffic sets the balance between the two, and no forum thread can set it for you. The retention curve shows which viewers you are losing, and the split test shows which cost is bigger.

Reveal rules at a glance

SituationReveal rule
Cold paid traffic, long VSLOn the second the price is spoken. Keep it on.
Short VSL, under about three minutesEarly, or from the start. A short video has less to lose by waiting less.
Warm list, pre-sold affiliate clicksAt the offer or earlier. Test it against the pitch second.
Returning viewer who heard the pitchAt once, on arrival.
Returning viewer who left before the pitchHidden. Resume where they stopped.
Buyer comes backNo buy button. Point to the next step.
Phone viewerA card inside the player, plus a scroll to the order box.
Order box, price and guarantee on the pageHidden until the same second as the button.
Low pitch reachFix the video first. Moving the reveal earlier is a test, not a fix.
Variants with different cutsEach variant reveals on its own pitch second.

If you want to see where your own pitch lands and how many viewers reach it, the free plan gives you 3,000 plays a month, free forever, with no card.

FAQ

Questions people ask about the buy button

Should the buy button be visible the whole time on a sales video?

For cold traffic on a long VSL, usually not. A price on screen before the offer has been made lets the viewer judge it without the argument. For a short video, a warm list or pre-sold affiliate clicks, an early or always-on button is worth testing. Once the button appears, keep it on screen for the rest of the video.

How long should I delay the buy button on my VSL?

Until the second the price is spoken, not a round number of minutes. Find that second in the script or the transcript, reveal the button on it, and count it on the video's playback time rather than from page load. Then check that enough viewers reach it.

Why does my delayed button show up at the wrong time?

Because it is counting the wrong clock. Page builder delays count from page load, so every pause, slow load, late start or buffering stall pushes the pitch later while the timer keeps running. The button then appears before the viewer has heard the offer. Reveal it on the video's playback time instead.

Should returning visitors have to wait for the button again?

Not if they already heard the pitch. A viewer who saw the offer and came back is closer to buying, not further, and making them sit through the video again costs sales. A viewer who left before the pitch is different: resume them where they stopped and let the reveal happen on the pitch second.

Does hiding the buy button lose sales?

It can. Every viewer who decided early and left looking for a button is a sale the hidden button cost. Showing it early has its own cost, a price seen without context. No published test settles which cost is bigger in general, so test it on your own traffic and decide on orders per play.

How do I delay a button in ClickFunnels so it matches the video?

The ClickFunnels delay is an animation delay counted from page load or scroll, so it cannot know whether the video is playing. To match the video, trigger the reveal from the player's playback time instead, either with the player's own API or with a player that hides page sections until a chosen second of the video.

Put the button on the pitch

Find the second your price is spoken, reveal the button on it, and see how many viewers get there. Free forever: 3,000 plays a month, no card.