HomeBlog → Embed a VSL in ClickFunnels
Production

How to Embed a VSL in ClickFunnels (The Right Way)

By Ashley Kemp · July 16, 2026 · 8 min read

ClickFunnels will happily put a video on your page in thirty seconds. That is exactly the problem. The default path (drop the video element, paste a link, publish) produces a page that plays a video, and a video sales letter is not a video that plays. It is a sales asset that needs to report back: who watched, how deep, where they left, and which viewers turned into revenue.

This is the clean version of the setup: when the native element is fine, when it is quietly costing you money, the exact embed steps for ClickFunnels 2.0 and Classic, and the checklist that runs before a single paid click hits the page.

To embed a VSL in ClickFunnels 2.0, add an HTML/JS element (Section, Row, plus button, MISC category), open its Code Editor, and paste your player's embed snippet with JavaScript inside script tags. Classic uses the Custom JS/HTML element the same way. Use the native video element for casual video; use a direct-response player when the video's job is revenue.

What are your options for putting a VSL on a ClickFunnels page?

Two paths: the native video element (fastest, fine for demos and thank-you pages) or a custom player embedded through the HTML/JS element (direct-response features: retention analytics, play gates, timed CTAs, server-side tracking). The decision is not about the page; it is about whether you need to see and act on watch behavior.

NeedNative video elementCustom player embed
Speed to publishFastestFive extra minutes
Second-by-second retentionNoYes
Play gates and timed CTAsNoYes
Server-side pixel forwardingNoYes (player-dependent)
Revenue attribution per viewerNoYes (player-dependent)

The honest rule: if the video is decoration, the native element wins on simplicity. If the video is the salesperson, embed a player that can tell you the four numbers that matter on a VSL launch.

Why not just use the native video element for a real VSL?

Because you cannot fix what you cannot see. The native element plays video; it does not give you a retention curve, a pitch-cliff timestamp, gate analytics, or a purchase event tied to watch depth. Running paid traffic to a VSL without those is buying data and throwing it away.

This is not a knock on ClickFunnels. Page building is their job and they are good at it. But a VSL funnel makes its money in the gap between "the page loaded" and "the buyer clicked," and everything in that gap happens inside the player. When the hook bleeds viewers at second 20, the page editor will never tell you. When half your remaining audience leaves at the price reveal, only the player knows the timestamp. The same logic applies to YouTube embeds, with the added tax of related-video distractions pulling people off your pitch entirely.

The funnel builder owns the page. The player owns the proof. Confuse the two and you will optimize headlines while the video quietly loses the sale.

How do you embed a custom player in ClickFunnels 2.0?

Per ClickFunnels' own docs: insert a Section, add a Row, click the plus button, and choose HTML/JS from the MISC category. Open the Code Editor and paste the player's embed snippet. Keep JavaScript inside script tags, never add html or body tags, and note that ClickFunnels support does not troubleshoot custom code, so test on a draft page.

Four-step flow for embedding a VSL player in ClickFunnels: add the HTML/JS element from the MISC category, paste the embed snippet in the Code Editor, wire watch and purchase events with consistent names, and run a staging test before sending traffic.
The whole job is four steps, and the fourth one is the one people skip.

A few practical notes from doing this on real funnels. First, place the element where the video should render, not at the bottom of the page: the embed renders inline where the element sits. Second, ClickFunnels preloads jQuery, so most player snippets need nothing extra. Third, per the HTML/JS element docs, custom code is on you: if the page misbehaves, strip the element back to the bare embed snippet and add customizations one at a time until you find the culprit.

And in ClickFunnels Classic?

Same idea, older skin: add the Custom JS/HTML element to the row where the video belongs and paste the embed snippet there. Classic pages tend to carry more legacy scripts, so the staging test matters even more: one funnel's ancient popup script can fight your player for the same event names.

What does a good ClickFunnels VSL page look like around the video?

One column, one video, one button. Headline above the player restating the hook's promise, the embed above the fold at full row width, the CTA below it (delayed if your traffic is cold), and nothing else: no nav bar, no footer maze, no secondary offers. The page is a frame; the video is the pitch.

ClickFunnels makes it easy to keep adding sections, and every one of them is a place for a cold visitor to wander instead of watching. The discipline that pays: strip the header navigation on the VSL step, keep testimonials below the CTA rather than above the video, and resist the second button. If the offer needs more explanation than the video gives, that is a script problem to fix in the video, not a layout problem to fix with more page.

Set the row to full width on mobile and check that the player does not render letterboxed inside a padded column. More than half of cold paid traffic will meet your VSL on a phone, and a video that loads small under a fat headline loses the hook before it plays.

What should you check before sending traffic?

Five things on a staging page: muted autoplay behavior (every browser forces muted starts, so captions carry your hook), mobile layout at real device widths, pixel and event fires verified in the platform, gate timing if you use one, and page speed with the embed in place. Ten minutes of checking protects the whole media budget.

If you are still picking the player itself, the operator-tested rankings live in the best VSL hosting for ClickFunnels.

Give your ClickFunnels VSL a memory

VSLStats embeds in the HTML/JS element in one snippet: retention curves, play gates, server-side pixels, and revenue attribution on any plan. Try any plan for $1.

Start $1 Trial →

Frequently asked questions

You can, and for a real VSL you should not. YouTube embeds surface related videos and pause screens that leak attention off your pitch, and they give you no second-by-second selling data: no retention curve, no gate, no revenue attribution. Use a direct-response player for the sales page; keep YouTube for content.
A well-built player embed adds one script and loads the video asynchronously, which is comparable to the native element in practice. What actually hurts VSL pages is heavy hero images and stacking multiple tracking scripts. Test your page speed on the staging page before and after the embed and you will know in five minutes.
No. Every major browser requires autoplaying video to start muted, regardless of which player or funnel builder you use. Plan for a muted-start experience: captions carrying the hook, and a clear tap-for-sound affordance. The unmute click is your first micro-conversion.
Fire watch-depth and CTA-reached events from the player, forward purchase events server-side so ad blockers and iOS privacy do not eat them, and reconcile against your payment processor rather than the pixel. ClickFunnels handles the page; the player handles the proof.