You posted twelve videos last month. One of them quietly sold most of your courses — and you probably can’t say which. YouTube tells you views and watch time. Stripe tells you money came in. Neither one connects the two, so the single most useful number for a creator who sells something — which video actually produced revenue — falls into the gap between two dashboards.
Here’s how to close that gap, first by hand, then in a way that stops being a monthly chore.
The honest scope: this only works for what you sell through Stripe
Before anything else, be clear about what “made you money” means here. This method traces revenue that lands in Stripe — courses, digital products, coaching, memberships, templates. It does not attribute AdSense payouts or brand-deal fees, because those never touch Stripe and don’t carry a link back to a specific upload. So when you connect Stripe and YouTube this way, you’re answering one precise question: which videos drove people to buy the thing you sell. That’s usually the question worth answering anyway.
The manual method (a real afternoon of work)
You can do this today with the tools you already have:
- Put a unique link in every video. Use a UTM-tagged URL per upload —
?utm_source=youtube&utm_medium=video&utm_campaign=video-title— in the description and pinned comment. Build it with Google’s Campaign URL Builder, which marks source and medium as required and needs a campaign name or ID. Keep one naming pattern (for example, the video’s slug) so every tag lines up later. This is the thread that survives the jump from YouTube to your checkout. - Match your traffic to your sales window. In Google Analytics, filter sessions by that campaign tag and note which ones reached your product page.
- Line up uploads against Stripe payments. Export your Stripe payments for the month (Stripe’s reports can be viewed in the Dashboard or downloaded as CSV) and lay them next to your publish dates. A spike two or three days after a specific video is your signal.
- Watch the lag, not just the day. Buyers rarely purchase the minute they watch. Look at a rolling three-to-seven-day window after each upload, not same-day sales.
Do this and you’ll usually find the truth surprises you: the video with the most views often isn’t the one that sold, and a modest tutorial quietly out-earns a viral hit because it attracted buyers instead of browsers.
Carry the video’s name through checkout
The weak spot in the manual method is the jump from your link to Stripe. If your video links straight to a Stripe payment page, Google Analytics may never see the sale. Stripe has four features that close that gap without code:
- A Payment Link with UTM codes, one per video. Stripe Payment Links accept
utm_source,utm_medium,utm_campaign,utm_contentandutm_termin the link’s URL. Set the link’s confirmation behavior to redirect (to your own thank-you page), and after payment the redirect URL carries the same UTM codes, so Analytics on that page sees which video the buyer came from. Use letters, numbers, dashes or underscores, up to 150 characters; Stripe silently drops invalid values (Stripe Docs: Track a payment link). - A
client_reference_idper video. Addclient_reference_id=video-slugto the Payment Link URL (up to 200 characters). Stripe attaches it to the checkout and sends it in thecheckout.session.completedwebhook, which helps if you or a tool you use already listens to Stripe webhooks. Don’t put anything sensitive in it (same Stripe page). - Just ask: a custom field. On the Payment Link, click Add custom fields and add a dropdown such as “Which video brought you here?” (the Dashboard allows up to 10 options) or a text field (up to 255 characters). You’ll see the answer on the payment’s details page in the Stripe Dashboard (Stripe Docs: Customize checkout for Payment Links). It’s self-reported, but it catches the buyer who watched on their phone and bought days later on a laptop, which no UTM tag will.
- A promotion code per video. Create a coupon, turn it into a customer-facing promotion code (say, the video’s name), and enable promotion codes on the Payment Link. The
prefilled_promo_codeURL parameter can fill it in for the viewer (Stripe Docs: Promotion codes). Two caveats: codes get shared beyond the video, and codes limited to first-time orders may not work, because Payment Links create guest customers for one-time payments by default. Treat codes as a second signal, not the whole answer.
You don’t need all four. For most creators, a UTM-tagged Payment Link plus one dropdown question is the simplest place to start.
Links checked September 27, 2026.
Why this falls apart as a monthly habit
The manual method works once. The problem is it’s a chore you have to redo every month, across three tools, reconciling exports by hand — and the moment you’re busy shipping content, it’s the first thing you drop. Then you’re back to guessing, and guessing is how creators pour effort into videos that grow the channel but never grow the business.
Letting a board do the lining-up for you
The cleaner version is to stop being the human who reconciles exports. Vexlynk is a board (local-first on the desktop app) where you place your Stripe revenue and your YouTube stats as live, read-only cards side by side, and an assistant reads the whole board at once. Instead of exporting and matching, you ask in plain language — “which video came right before my best sales days last month?” — and it reasons over what’s actually on your board.
Two honest caveats. It reads your data; it doesn’t rewrite attribution science, so a clean UTM habit still makes the answer sharper. And it only sees revenue that flows through Stripe — same boundary as the manual method. What it removes is the monthly reconciliation tax. You can connect YouTube Studio and Stripe on one board and ask the question whenever you want, instead of rebuilding a spreadsheet each time.
Either way, the mindset shift matters more than the tool: stop judging videos by views alone. For a creator who sells, the best video isn’t the one with the biggest number on YouTube — it’s the one your Stripe receipts point back to.
Frequently asked questions
Can I see which YouTube video made me money?
Yes, for anything you sell through Stripe. Tag each video’s links with a unique UTM campaign, then line up the traffic and your Stripe payments against your publish dates over a three-to-seven-day window. It won’t attribute AdSense or brand deals, since those don’t pass through Stripe.
Do UTM tags survive a Stripe Payment Link?
Yes, if the Payment Link’s confirmation behavior is set to redirect: Stripe adds the same UTM codes to your redirect URL after payment, so your analytics on that page can see the campaign. Without a redirect, the tags stop at Stripe’s page.
Does the highest-view video always earn the most?
No — and that’s the point of measuring. Views measure reach; Stripe measures buyers. A smaller, high-intent tutorial often out-earns a viral video that brought curious viewers who never intended to purchase.
Do I still need UTM links if an assistant lines it up for me?
Clean UTM tags still make the attribution sharper, because they mark exactly where a buyer came from. A board that reads your Stripe and YouTube data removes the manual reconciliation, but good tagging gives it a cleaner trail to reason over.
Vexlynk
Vexlynk Team