VSL not converting: a step-by-step diagnosis from tracking to checkout
When a VSL gets traffic but few sales, find the stage that leaks before you change anything. This guide walks through seven checks in order, with the metric that points to each problem, how to confirm it and what to fix first.
On this page
- Why is my VSL not converting? Work the funnel in order
- Step 1: Is the sale actually being recorded?
- Step 2: Is the traffic right?
- Step 3: Does the page load and earn the play?
- Step 4: Where does the video lose people?
- Step 5: Is the offer the problem?
- Step 6: Is checkout leaking?
- Step 7: Is the back end keeping the money?
- Symptom, likely cause and test
- A worked diagnosis with numbers
- What if the VSL has never converted?
- What not to do when a VSL stops converting
- A one-hour triage checklist
- Frequently asked questions
If your VSL is not converting, find the stage that leaks before you change anything. Work in order: is the sale being recorded, is the traffic right, does the page load and earn the play, where does the video lose people, does the offer turn pitch viewers into clickers, does checkout turn clickers into buyers, and does the back end keep the money. Fix the first broken stage first.
Why is my VSL not converting? Work the funnel in order
A sale is the product of several stage rates. When sales fall, your first job is to find which of those rates moved, because every stage downstream inherits the damage. Fixing a downstream stage while an upstream one is broken wastes a test, and a tracking fault can make a healthy funnel look dead. So work from the top:
The funnel in order, one metric per stage
Every stage downstream inherits the damage from the stages above it
- Sale recordedOrder match = orders in analytics ÷ orders in checkout
- Ad to pageClick-to-load rate = landing page views ÷ link clicks
- Page to videoPlay or unmute rate = plays (or unmutes) ÷ unique visitors
- Video to pitchPitch reach = visitors who reach the pitch second ÷ unique visitors
- Pitch to clickCTA click rate = CTA clicks ÷ visitors who reached the pitch
- Click to orderCheckout conversion = orders ÷ CTA clicks
- Order to keptNet revenue rate = (revenue − refunds − chargebacks) ÷ revenue
Compare each rate with your own baseline: the same VSL in a period when it worked, or another VSL on similar traffic. Published averages won't help, because they mix different prices, traffic and denominators. The VSL metrics guide explains the full metric tree behind this table.
Step 1: Is the sale actually being recorded?
What points here: CTA clicks look normal but orders are near zero, or your checkout shows sales that your analytics and ad platform don't.
How to confirm: Make a real purchase through the whole path, starting from an ad URL with its tracking parameters, then refund it. Check that the order appears in your checkout, in your VSL analytics and in your ad platform, on the same day. Then compare a week of order counts across all three, with time zones and currencies set the same everywhere.
What to fix: Repair the passback from the checkout's thank-you page or the store webhook, and make sure server-side events are deduplicated so each sale counts once. In RevvyScales, every CTA click gets a click_id that the checkout reports back with the sale (conversion tracking setup). The VSL tracking guide walks through the full chain and an end-to-end test.
Step 2: Is the traffic right?
What points here: a low click-to-load rate; a play rate that's fine for one ad or placement and poor for another; a high ad hook rate with low revenue per visitor.
How to confirm: Break results down by campaign, ad, placement and device. Compare link clicks with landing page views, the clicks after which your page actually loaded. A big gap means people click and leave before the page loads, or the clicks are accidental or automated. A play rate that differs sharply between ads points to message match: some ads promise what the page doesn't show.
What to fix: Restate each ad's promise in the headline and in the first seconds of the video. Pause placements that send clicks without plays. If an ad has a strong hook rate but weak downstream revenue, its hook is attracting the wrong people or overpromising.
Step 3: Does the page load and earn the play?
What points here: a play or unmute rate below your baseline, especially on mobile, or click-to-load falling after a page change.
How to confirm: Load the live page on a phone over a mobile connection, not on office Wi-Fi. Check field data, not just a lab test. Google's Core Web Vitals rate a page as good when Largest Contentful Paint is 2.5 seconds or less, Interaction to Next Paint is 200 milliseconds or less and Cumulative Layout Shift is 0.1 or less, measured at the 75th percentile of page loads (web.dev).
What Core Web Vitals rate as good
Field data, at the 75th percentile of page loads
What to fix: Compress the poster, remove scripts and tags you don't need, and stream the video adaptively instead of loading one large file. Then work on the headline, the poster and the unmute prompt. The VSL page speed guide lists the fixes in priority order.
Step 4: Where does the video lose people?
What points here: a normal play rate but low pitch reach.
How to confirm: Open the second-by-second retention graph. Find the three steepest drops and read the script at those timestamps. Compare mobile with desktop, and new viewers with returning ones. Check where the pitch sits: if most viewers have left by the time the price appears, the offer never gets a hearing. RevvyScales marks the pitch on its retention chart and compares periods side by side (reading your analytics).
What to fix: Tighten the lead, cut slow sections before the pitch, and smooth the transitions where viewers drop. The retention graph guide explains what each curve shape usually means.
Step 5: Is the offer the problem?
What points here: healthy pitch reach, few CTA clicks per pitch viewer, low earnings per click.
How to confirm: Watch the pitch as a buyer would. Is the price clear? Does the button appear when the price is revealed? Does the page show the same price and bundles the video describes? Is the guarantee easy to find? A mismatch between video and page breaks trust at the worst moment.
What to fix: Make the offer clearer before you cut the price. Test bundle structures, the guarantee and bonuses that answer the main objection. Use only real reference prices and real deadlines: a made-up "regular price" or a deadline that resets is a misleading claim, and US law requires ads to be truthful and not misleading (FTC advertising FAQs). The VSL conversion rate guide shows how to set a break-even target for this stage.
Step 6: Is checkout leaking?
What points here: normal CTA clicks, few orders per click.
How to confirm: Buy on a phone yourself. Count the fields, time the page loads, watch for costs that appear late (shipping, taxes, currency conversion), and check that the checkout shows the price the video promised. Ask your payment processor or checkout platform for its report of failed and declined payments: if many attempts fail, the problem may be payments, not persuasion. Compare checkout conversion by device and by country.
What to fix: Remove fields, show the full price early, offer the payment methods your buyers use, and fix any mismatch between page and checkout. If declines cluster by country or card type, talk to your processor.
Step 7: Is the back end keeping the money?
What points here: front-end sales look acceptable but profit doesn't, or refunds and chargebacks rise a few weeks after a change.
How to confirm: Compare refund and chargeback rates by period and by offer. Check upsell take rates, and look at revenue per visitor including upsells, not front-end revenue alone.
What to fix: Bring the promise in line with what the product delivers, set honest expectations in the VSL, and improve onboarding. Treat any change that lifts sales and refunds together as suspect until net revenue proves otherwise.
Symptom, likely cause and test
Start at the top of the funnel and answer from your own numbers. Each path ends at the likely cause and the test that confirms it:
Where does it break?
One question per stage, from the sale record down to the back end
Do your sales agree across your checkout, your analytics and the ad platform?
Are landing page views close to link clicks?
How is the play rate?
Where does the retention graph lose people?
What happens after the pitch?
Best fit
Broken passback or webhook
Your checkout shows orders and your analytics shows none. Likely cause: a broken passback or webhook. Test to confirm: a test purchase from an ad URL.
Best fit
Attribution window, lost browser signals or missing server events
The ad platform reports far fewer sales than your checkout. Likely cause: the attribution window, lost browser signals or missing server events. Test to confirm: compare by day and check deduplication.
Best fit
Slow page, or accidental or automated clicks
Your sales agree across tools, but landing page views sit well below link clicks. Likely cause: a slow page, or accidental or automated clicks. Test to confirm: a mobile load test and a placement breakdown.
Read more: VSL Page Speed: Make Video Pages Load Fast on Mobile
Best fit
Message mismatch
Sales agree and the page loads, but play rate is low on one ad only. Likely cause: a message mismatch. Test to confirm: restate that ad's promise in the headline.
Best fit
Load speed, poster, headline or unmute prompt
Sales agree and the page loads, but play rate is low everywhere. Likely cause: load speed, the poster, the headline or the unmute prompt. Test to confirm: a page speed check and a headline test.
Read more: VSL Page Speed: Make Video Pages Load Fast on Mobile
Best fit
Weak lead, or a hook the video doesn't pay off
Play rate is normal, but the retention graph shows a steep drop in the first minute. Likely cause: a weak lead or a hook the video doesn't pay off. Test to confirm: the retention graph, then a test of a new lead.
Read more: Video Retention Graph: How to Read a VSL Drop-Off Curve
Best fit
Slow middle section, or a pitch that comes too late
Play rate and the first minute are normal, but pitch reach is low. Likely cause: a slow middle section or a pitch that comes too late. Test to confirm: the retention graph, then cut or move the pitch.
Read more: Video Retention Graph: How to Read a VSL Drop-Off Curve
Best fit
Offer, price clarity, button timing or price mismatch
Pitch reach is healthy, but few pitch viewers click the CTA. Likely cause: the offer, price clarity, button timing or a price mismatch. Test to confirm: watch the pitch, then run an offer split test.
Read more: VSL Conversion Rate: Formulas, Break-Even and Targets
Best fit
Checkout friction or payment declines
Pitch viewers click the CTA, but few clicks become orders. Likely cause: checkout friction or payment declines. Test to confirm: a checkout test on a phone and the decline report.
Best fit
Refunds, chargebacks or weak upsells
Sales look fine, but profit is poor. Likely cause: refunds, chargebacks or weak upsells. Test to confirm: refund rate by offer, and RPV with upsells.
A worked diagnosis with numbers
Here's an illustrative funnel per 10,000 link clicks, last month against this week:
Last month vs this week, stage by stage
Illustrative funnel per 10,000 link clicks: the relative change in each stage rate
The offer and checkout rates haven't moved, so rewriting the pitch or cutting the price would be the wrong fix. The biggest relative drop is pitch reach, from 22% to 14%, followed by click-to-load, from 86% to 74%. In this example, comparing periods on the retention graph shows a steady slide through a new four-minute section the editor added before the price, and the page got heavier when an uncompressed poster went live.
Fix pitch reach first. Restoring it to 22% on this week's traffic gives 1,628 pitch viewers, 293 clicks, 152 orders and $10,640 in revenue, which puts revenue per visitor back at $1.44. Then fix the poster: getting click-to-load back to 86% brings visitors back to 8,600 and revenue to $12,390 per 10,000 clicks.
What if the VSL has never converted?
A new VSL has no good period to compare against, so use two other yardsticks.
Break-even math. Work out the conversion rate you need: cost per visitor ÷ contribution per order (what an order leaves after product costs and fees). Say visitors cost $0.90 each and an order leaves $45: you need 2.0% of visitors to buy. Then write down stage rates that would produce it, for example 25% pitch reach × 18% CTA clicks per pitch viewer × 45% checkout conversion ≈ 2.0%, and set your actual rates next to that plan. Start with the stage furthest below its planned rate. If you run other VSLs on similar traffic, their stage rates make a better plan than any guess.
A warm-traffic check. Send the VSL to people who already know you: your email list, past buyers, retargeting audiences. If warm visitors don't buy either, the offer or the VSL itself is the problem, and new ads alone are unlikely to fix it. If warm visitors buy and cold visitors don't, look at the traffic side: the angle, how aware the audience is of the problem, and the match between ad and page.
What not to do when a VSL stops converting
- Rewrite the whole VSL. You'll replace the parts that work along with the part that broke.
- Change five things at once. If results improve you won't know why, and if they don't you won't know what to undo.
- Judge on one day. At 50 orders a day, a 25% swing from one day to the next can happen by chance alone. Compare whole weeks.
- Blame the ad platform before checking tracking. A broken passback looks exactly like a dead funnel.
- Chase conversion rate. A price cut can lift conversion rate and still lower revenue per visitor.
- Cut upsells to simplify. Check what they add to revenue per visitor first.
A one-hour triage checklist
Work through it in order; the ticks stay in this browser:
One hour, in this order
0 of 7 done
Frequently asked questions
Why does my VSL get views but no sales?
Views mean the page and the opening work, so the leak is later. Check pitch reach first: if few viewers reach the price, the middle of the video is losing them. If many reach the pitch but few click, look at the offer, the price clarity and when the button appears. If clicks are normal but orders are not, test the checkout on a phone and check your payment declines.
How long should I wait before deciding my VSL does not work?
Long enough to count sales, not days. As a rough guide, the relative uncertainty on a count of sales is about plus or minus two divided by the square root of the count, so 25 sales carry roughly 40% uncertainty and 100 sales about 20%. Run whole weeks, check tracking first, and compare stage rates with a baseline before you judge.
Is my VSL too long?
Length is the problem only if viewers leave before the pitch. Look at the retention graph and pitch reach. If most viewers are gone before the price appears, tighten the sections before the pitch or move the pitch earlier. If viewers stay through the pitch but do not buy, a shorter video will not fix it; the offer or the checkout needs the work.
Why do Meta and my checkout show different sales numbers?
They count differently. Meta credits a sale only within its attribution window and only when it can connect the sale to an ad, while your checkout records every order. Lost browser signals, missing or duplicated server events, time zones and refunds widen the gap. Use checkout numbers for money decisions and platform numbers for comparing ads inside the platform.
What conversion rate should my VSL have?
There is no reliable universal number, because price, traffic temperature and the denominator, whether visitors, viewers or clickers, all change it. Work out the rate you need instead: break-even conversion rate equals cost per visitor divided by contribution per order, what each order leaves after product costs and fees. If each visitor costs $1 and each order leaves $50, you need 2% of visitors to buy.
Should I change the offer or the video first?
Let the stage rates decide. If pitch reach is low, fix the video before the pitch, because only the viewers who stay ever see the offer. If pitch reach is healthy but CTA clicks per pitch viewer are low, the offer or the way it is presented is the problem. Changing both at once hides which change worked.
