Theme

Start for free

Courses and teaching

For developer educators: which tutorials, repos and threads sell the course.

A course for developers sells on free work: tutorials, open-source repos, conference talks and threads, then a course or a team licence bought by someone who has been reading for months. Tally ties each purchase to the visits behind it, so you can see which free work earns the sales.

Start for free

14 days free, no card needed.

01How they sell

  • One-offA course with lifetime access, in tiers from the videos alone to a package with source code and workshops, plus team licences bought by a manager.
  • SubscriptionA membership with all courses and new releases, monthly or yearly.

02Payments it reads

  • PolarDeveloper educators sell courses, repos and memberships through Polar; orders, subscription cycles, refunds and lost disputes are read.
  • Lemon SqueezyCourses sold with Lemon Squeezy as merchant of record, with team licences as their own products.
  • StripeCourse platforms the developer built themselves charge through Stripe Checkout, with team purchases as invoices.

What Tally can't read

  • GitHub Sponsors income isn't read.
  • Courses sold on large course marketplaces aren't read: they take the payment.
  • Company training budgets paid by bank transfer outside your provider aren't read.
  • Visitors whose ad blocker stops analytics scripts aren't counted, so their payments arrive but stay unlinked.

03Where buyers come from

  • GitHubA link in a repo's README sends developers who already use your code, and GitHub appears as a referrer with their purchases.
  • Hacker NewsA tutorial on the front page sends a large crowd that reads closely and rarely buys that day.
  • X and BlueskyThreads showing a technique send developers who follow you for months before buying.
  • SearchSearches for an error message or a how-to land on tutorials, which can start a long path to the course.

04What Tally answers

  1. Do buyers read the free tutorials to the end?

    What they read compares engaged time and scroll depth per page for buyers and everyone else, so the tutorials buyers finish can be told from those people skim for a snippet.

    What they read
  2. Does GitHub or Hacker News send more buyers?

    The referrer breakdown puts revenue beside each site, so a README link with a few hundred visits can be compared with a front-page spike by what each sold.

    Sources with revenue
  3. How much of my revenue isn't tied to a visit?

    Coverage gives the share of revenue linked to a visitor and each reason the rest isn't, with the snippet that fixes it. A buyer whose blocker stopped the script left no visit to link, so that sale stays unlinked rather than guessed.

    Coverage
  4. Can I pull sales by source into my own scripts?

    Yes. A REST API and a command line return the same numbers, and an MCP server lets an AI assistant query them for you.

    API, CLI and MCP
  5. Do buyers of one course come back for the next?

    Lifetime value counts every purchase under the buyer's first source, with repeat rate, so you can see which audience buys the second course.

    Lifetime value

05Numbers worth watching

Coverage
The share of revenue linked to a visitor, which matters more for a technical audience that runs blockers.
Median time to buy
The median time from first visit to purchase, often long when the first visit was a tutorial found by search.
Scroll depth
How far buyers scroll through tutorials compared with other readers.
Revenue by source
Money per source, so GitHub, Hacker News, newsletters and search are ranked by what they sold.

06An example

Example

Reading time

38s

median per pageview

Scroll depth

59%

average depth, of 27,216 views measured

Read to the end

27%

of measured views reached 90% or more

What they read

29,264 pageviews · last 30 days

Open a page to see how far down people read it, and how buyers read it before paying.

  1. /pricing5,526 views78% scrolled on average58s reading time, median

    58s

    reading time, median per view

    78%

    scrolled, on average

    5,526 views · 5,194 with a measured depth

    How far down they read

    Share of measured views that scrolled at least this far

    1. 25% — reached a quarter of the page:95%
    2. 50% — reached half of the page:84%
    3. 75% — reached three quarters of the page:69%
    4. 90%+ — reached the end of the page:48%

    Buyers before paying vs didn't buy

    • Buyers, before paying149 views · 107 buyers96% scrolled on average,1m 41s reading time, median
    • Didn't buy5,342 views · 3,815 visitors61% scrolled on average,44s reading time, median

    35 views by buyers after paying are left out of both.

    Buyers are visitors whose first sale came after viewing this page; only their views before that payment count.

Reading time runs only while the tab is visible and the visitor is active; it's the median per view. A view with no engagement report counts as 0s of reading. Its scroll depth is unknown, so it's left out of every scroll figure rather than counted as 0%. 27,216 of 29,264 pageviews have a measured depth.

Fig. 1What they read on the example site. For developer courses, look for tutorials buyers read to the end and point new readers at them.

07Setting up

  1. Next.jsAdd the tag to the root layout of a Next.js site; client-side navigations between lessons and posts count as pageviews.
  2. PolarPass the visitor's id in the Polar checkout's metadata when you create it, so each order and membership cycle links with high confidence.
  3. Add a UTM-tagged link to the course in each repo's README, so GitHub visits carry a campaign.

08Questions

  • Many of my readers block trackers. Is Tally still useful?

    Blocked visits aren't counted, but payments always arrive from your provider. Sales whose visits were blocked are counted as unlinked, and coverage shows how much of your revenue is unlinked.

  • A manager buys ten seats for their team. How is that counted?

    As one payment, credited to the manager's visit. If they were sent by a team member's link, that visit shows in their journey.

  • Can I see sales in my terminal?

    Yes, with the command line. The REST API and an MCP server for AI assistants are there too.