The full TrackPlay feature set

Every feature has one job. Move the sale.

The player holds attention. The analytics know who bought. The attribution posts the sale back onto the second that earned it.

23Click-id params captured
7Carts post back
0Features gated

Included on every plan

Your hook dies in silence on every other player

Autoplay with sound is blocked by every modern browser. Most players give up and sit muted while the first fifteen seconds you agonized over do nothing. These features keep the viewer watching until the pitch.

Smart Autoplay in depth
Smart Autoplaysound-first
Browser allows soundplays with sound
Browser blocks itstarts muted
First touch anywhere on the pagesound on, no restart
Unmute rate is a metric, so the effect is measurable

Smart Autoplay

Starts with sound wherever the browser allows it. Where it does not, the video starts muted and sound comes on at the viewer's first touch anywhere on the page, without restarting the video. The hook survives.

Smart Progress Barphase-mapped
Minute 1feels like 40%
Minute 5feels like 64%
Minute 20feels like 86%

Smart Progress Bar

Fills fast in the opening minutes and slows down later, so a long VSL feels shorter at the exact moment the viewer decides whether to stay. Matches your player theme and steps aside when a gate is on screen.

Continue Watchingcross-device
Left on desktop18:04
Back on mobileContinue or restart
Saved position follows the viewer90 days

Continue Watching

A viewer who left at minute 18 should not restart at zero. They pick up where they stopped, even on a different device. Their version of this is a cookie. Ours follows the person.

Exit Intentcaught
Mouse heads for the close buttontrigger
Back button, tab switchtrigger
One designed message, then a cooldown

Exit Intent

The viewer heading for the back button is the cheapest sale left on the table. Catch them on the way out with one well-timed message. A cooldown keeps it from ever nagging.

Returning-visitor thumbnailsby position
Left at 0:40, before the pitchcuriosity frame
Saw the pitch, did not buydiscount frame

Time-range thumbnails

A returning viewer sees a poster that matches where they stopped. The second visit opens with the message that fits what they already know, driven by their actual saved position.

Ask for the sale when intent peaks

The buy button, the order box, the opt-in: each one appears at the second you choose. Every shown and clicked event lands in analytics with revenue attached, so the whole loop is measured.

Timed CTAs in depth
CTA card · shown at 14:20the pitch
Shown2,412
Clicked386
Attributed through checkout$297 avg
Timed Eventsno code
Order box, 0:00hidden
Order box, 14:20revealed
Pitch marker set on the retention graph
Lead Captureat 2:00
Joins the identity grapha person
Flows to CRM tags, webhooks, and pixels
Watch Gatesby watch %
25% watchedpage unchanged
50% watchedtestimonials revealed
75% watchedorder button revealed
AI Voice Segmentsper viewer
“Hi Jane”voiced at 0:04
“You said your goal is more leads”voiced at 1:12
Your ElevenLabs voice, rendered at watch time

Play counts are a vanity metric wearing a lab coat

Your host can tell you 4,812 people pressed play. These reports tell you which one of them bought, what they watched before they did, and which ad sent them.

Retention curves in depth
Retentionbuyers vs non-buyers
Pitch marker · buyers held through it14:20

The retention graph that knows who bought

Everyone has a drop-off curve. This one draws buyers as their own curve next to non-buyers, stacks conversion density on the timeline, and marks your median pitch moment. When the buyers hold through minute 14 and the non-buyers die at minute 6, you know exactly what to cut and what to protect.

Live Statslive
Watching now214
Furthest point being reached12:40
Jane M. · Meta · at 14:02Converted

Live Stats

Ten minutes into a launch you can see whether viewers are reaching the pitch, not just that traffic arrived. Real presence, honest states, and a pill the moment money moves.

The numbers that matterformula on the card
Hook rate71%
Hold rate54%
Revenue per play$0.19

Hook, hold & revenue per play

Hook Rate and Hold Rate answer the two questions a VSL owner actually asks: does the opening hold, and do they reach the pitch. Revenue per Play prices every video in dollars.

Optimize this videoAI
Add a CTA at 2:14, the pitch lands+18% CVR
Trim the dead zone 3:40 to 4:10suggested
One-click apply, from the same screen

AI that reads your curve, not a chatbot

It reads the transcript against real retention, clicks, and conversions, then tells you where the CTA belongs and which seconds to cut. It runs itself once the video has enough plays, and you apply the change from the same screen.

Conversion funneldrop-off
Play100%
Reached the pitch61%
Converted6.8%

Conversion funnel

Page view to play to quartiles to pitch to sale, with step conversion and total revenue. See the exact step that bleeds money.

Qualityevery view reports
Video starts in0.6s
Buffered views0.4%
Playback errors0.02%

Playback quality, measured

If the player itself is losing sales, this is the only tab that will ever tell you. Startup time, buffering, and errors per video. Nobody else in the VSL market measures this at all.

The sale lands on the exact second that earned it

Attribution that stops at the video and picks back up at the cart is guessing. The player injects the session into your checkout link, the cart posts the sale back, and the conversion carries the watch depth, the split-test arm, and the ad that paid for it.

Cart postbacks in depth
The conversion joinpostback
Checkout link carries the session?sid=tp_8fa2
ClickBank posts the sale back$297
Joined: watched to 4:12 · Variant B · fbclid★ attributed

Cart postbacks close the loop

ClickBank, BuyGoods, Digistore24, WarriorPlus, JVZoo, and Kiwify post purchases, refunds, and rebills back onto the session. A postback with no key is recorded as organic, never guessed. BuyGoods affiliates who do not own the cart flip the same integration to postback mode, and every report prices traffic in real network payouts.

Click-id capture23 params
fbclid · gclid · ttclidcaptured
11 more platforms, 3 networkscaptured
subid, subid2 to 4carried to postback

Click-id capture

Which ad paid for this play? Captured once at first touch, attached to every event of the session, and carried through to the conversion.

Server-side pixelsdeduped
Meta CAPIon real revenue
TikTok Events APIon real revenue
GA4 Measurement Protocolon real revenue

Server-side pixels with dedup

Browser and server events collapse into one conversion with deterministic event ids, so nothing double-counts. Fired on purchases and rebills, never on refunds or tests.

Pixels from the playeronce per view
Page loadno pixel
75% watchedpixel fires
Meta, Google, or any custom pixel

Watch-time pixel firing

The pixel that fires on page load retargets people who bounced at second three. Fire it at the watch mark you choose instead, when intent is real. This is the fix.

Sourcesfirst touch
Meta, proved by click-id41%
Affiliate postbacks22%
Unknownnever guessed as Direct

A Sources report that refuses to lie

Each session is classified once, in a strict order: click-id, then UTM, then affiliate id, then referrer. Anything unplaceable is labeled Unknown. If it says Meta, a Meta click-id proved it, and bots sit in their own bucket.

The buyer and the watcher stop being two strangers

An identity graph links sessions, devices, emails, and purchases into one profile per person. It is why resume works across devices, why Hot Leads recognizes a returner, and why the desktop buyer and the mobile watcher are the same row in your data.

Session story · Jane M.lead 82
Turned the sound on0:03
Rewound 10 seconds, 20 times in a row12:40
Clicked the CTA14:22
Converted$297

Customer 360

A profile page per viewer: first-touch attribution, lead score, watch depth per video, sessions, and purchases, stitched across visits and devices. Each session reads as a story, not a log, and a cross-workspace panel shows when this person already bought your other offer.

Hot Leadsscore 82
Reached the offer, rewatched the pitchwhy it scored
Real email on filereachable
Bot traffic penalized, not counted

Hot Leads

Non-converted sessions scored 0 to 100 on watch behaviour, with the evidence attached and a way to reach them. This is the ranked call list for today.

Audience exportcsv
Emails and phonesSHA-256 hashed
Ready for Meta, Google, TikTokcustom audiences
No raw PII leaves the app

Audience exports

The lookalike built from people who reached your pitch beats the one built from page visits. Customer-match files come hashed; the follow-up sheet for your sales team comes with the click-ids and behaviour attached.

Split tests with statistics, not vibes

Testing a new hook should not mean a new URL and a reset ad account. Traffic splits under a single embed, each visitor sticks to their arm for 30 days, and the ad link never changes.

Split testing in depth
Split test · Hook A/B95% conf.
Variant A  4,021 plays4.2%
Variant B  3,987 plays★ 6.8%
Winner on sales, p < 0.05+62% CVR

Whole-video variants, real math

Clone a video into editable variants that share the same media, or pit existing videos against each other. Results ship with z-tests, p-values, and confidence intervals, and the goal metric is a rate per unique play, so an arm cannot win by getting more traffic. An auto-winner without significance is a coin flip with a dashboard.

The parts nobody demos, done honestly

The gate that meters plays is the same gate that serves the video, so billing and analytics cannot drift apart, an old embed cannot leak plays, and nobody discovers a four-figure surprise bill.

The play definition

One genuine sessionone play
Muted autoplay impressionnot a play
Bots and datacentersnot a play
Billing and analyticssame number
Overageopt-in only

Content protection

Your domainsenforced at the stream
Ripped embed elsewhereplays a decoy
Bots, VPN, geo, deviceyour rules
No manifestno video

Workspaces & API

Per-client workspaceszero data bleed
Reporting timezonethe client's Monday
REST API, webhooksscoped keys
Zapier and Makeincluded

Feature questions people actually ask

One session in which the viewer genuinely played the video: pressed play, turned sound on, resumed, or continued. A muted autoplay impression is not a play. Bots are not plays. Billing and every analytics surface report the same number.
Yes. It is one snippet on any page that accepts HTML. ClickFunnels, GoHighLevel, Kajabi, Shopify, WordPress, Webflow, or a custom build. There is also a lazy click-to-load embed for pages with many videos.
ClickBank, BuyGoods, Digistore24, WarriorPlus, JVZoo, and Kiwify. Setup is paste-one-URL plus a secret. BuyGoods affiliates who do not own the cart flip the same integration to postback mode, and commission is recorded as the conversion value.
No. You pick the second or the watch percentage in the dashboard, and the page elements hide and reveal themselves. No code on the page.
Yes. Variants run under the one embed you already shipped, each visitor sticks to their arm for 30 days, and the winner is declared with a p-value and confidence interval. Your ad link, and your campaign learning, never reset.
It will not fix a bad offer. It will tell you the offer is the problem, instead of leaving you to guess. That is the whole point.
See where your VSL loses people

Create a free account, embed one video, and watch the curve. Every feature on this page is on the free plan.

Free plan. No credit card.