Theme

Start for free

Developer tools

For command-line tools: which posts sell licences, and how a purchase started in the terminal links.

A paid command-line tool has a small website, a landing page with a terminal demo, docs and a buy page, while installs happen through Homebrew, npm or cargo. Tally ties each licence to the visits behind it, and an identify call keeps purchases started from the terminal from going unlinked.

Start for free

14 days free, no card needed.

01How they sell

  • One-offA licence key bought once, sometimes per major version, unlocking pro commands.
  • SubscriptionA yearly plan for updates or a team licence, renewing on the purchase date.

02Payments it reads

  • Lemon SqueezyLicence keys through Lemon Squeezy: orders, refunds and subscription invoices are read, with the visitor's id in custom data.
  • PolarDeveloper-run tools sell licences and subscriptions through Polar; orders and cycles are read.
  • PaddlePaddle's tax handling suits tools sold to companies; transactions and refunds are read.
  • StripeTools that issue their own keys sell through Stripe Checkout or Payment Links.

What Tally can't read

  • Installs through Homebrew, npm, cargo or another package manager aren't visits and aren't read.
  • Use of the tool in the terminal isn't read; Tally puts no telemetry in your binary.
  • A licence bought from inside the terminal, with no browser visit behind it, links only by the buyer's email, if your site identified them before.

03Where buyers come from

  • Hacker NewsA Show HN with a terminal recording sends a burst of developers; revenue per visitor shows how many bought.
  • Reddit and XPosts in programming subreddits and on X show the tool solving a problem in a few lines.
  • GitHubThe free core's repository links to the pro page; UTMs on the README's links tell them apart.
  • Docs searchDevelopers searching a flag or an error land on docs pages and find the pro features there.
  • Returning installersPeople who installed the free version come back by typing the address, which Readable Direct counts as typed.

04What Tally answers

  1. Do people who installed the free version come back to buy?

    Readable Direct reads no-referrer visits as typed or bookmarked, shared links, returns from checkout or in-app browsers; installers who type the address to buy show under typed, with the revenue beside it.

    Readable Direct
  2. Which launch post sold licences?

    Every licence has a receipt with the visits behind it and its credited source, so a launch day's sales can be counted post by post.

    Receipts
  3. Do visitors watch the terminal demo or scroll past it?

    The scroll heatmap shows how many visitors reach the demo, and the click map whether they press play or copy the install command.

    Heatmaps
  4. Can my AI assistant tell me how the launch is going?

    The MCP server lets an AI assistant query your revenue and sources, and the command line answers the same from a shell.

    API, CLI and MCP
  5. Do buyers decide on the first visit?

    Path to purchase gives the share who buy on their first visit and the median time; for a tool people install for free first, expect the path to run through the install and back.

    Path to purchase

05Numbers worth watching

First-visit buyers
How many buy on their first visit, before trying the free version at all.
Revenue per visitor
Revenue per visitor by source, which keeps a front-page launch's crowd in proportion.
Coverage
The share of revenue linked to a visit; purchases opened straight from the terminal are the gap to watch.
Refunds and chargebacks
Refunds by source, which show where buyers come from who expected different pro features.

06An example

Example
  1. Glad HamsterCustomerBerlin, Germany · Desktop · FirefoxRedditOrganic Sociallatest visit: 4 pages/blog/stripe-fees+2/thanks3 visits3m 08s median6m 42s longest$49

    Visits, last 30 days

    Whole journey
    1. RedditOrganic Social
      /blog/stripe-fees/pricing/signup/thanks

      4 pages · 6m 42s engaged · 1 goal$49 credited to this visit

    2. Directtyped or bookmark
      /pricing/docs

      2 pages · 1m 36s engaged

    3. GoogleOrganic Search
      /blog/stripe-fees/

      2 pages · 3m 08s engaged

  2. Cosy CapybaraAustin, United States · Mobile · SafariGoogleOrganic Searchlatest visit: 2 pages//pricing1 visit1m 11s engaged–

    Visits, last 30 days

    Whole journey
    1. GoogleOrganic Search
      //pricing

      2 pages · 1m 11s engaged

  3. Spry BisonToronto, Canada · Desktop · ChromeChatGPTAI Assistantslatest visit: 4 pages/compare+2/docs/api2 visits3m 57s median5m 44s longest–

    Visits, last 30 days

    Whole journey
    1. ChatGPTAI Assistants
      /compare/pricing/docs/docs/api

      4 pages · 5m 44s engaged · 1 outbound click

    2. PerplexityAI Assistants
      /compare

      1 page · 2m 09s engaged

  4. Snug CapybaraCustomerLeeds, United Kingdom · Desktop · EdgeNewsletterEmaillatest visit: 2 pages/changelog/2 visits1m 41s median2m 34s longest$120

    Visits, last 30 days

    Whole journey
    1. NewsletterEmail
      /changelog/

      2 pages · 2m 34s engaged

    2. Directtyped or bookmark
      /

      1 page · 48s engaged

  5. Bubbly LlamaUtrecht, Netherlands · Mobile · Chromex.comOrganic Sociallatest visit: 1 page/blog/launch-week1 visit1m 04s engaged–

    Visits, last 30 days

    Whole journey
    1. x.comOrganic Social
      /blog/launch-week

      1 page · 1m 04s engaged

  6. Velvet PenguinBengaluru, India · Desktop · ChromeHacker NewsOrganic Sociallatest visit: 3 pages/blog/stripe-fees/docs/pricing1 visit4m 56s engaged–

    Visits, last 30 days

    Whole journey
    1. Hacker NewsOrganic Social
      /blog/stripe-fees/docs/pricing

      3 pages · 4m 56s engaged

Fig. 1The visitor list on the example site, with a buyer's visits unfolded. For a CLI tool, look for a first visit from a post, a docs visit later, and the typed-in return before the purchase.

07Setting up

  1. Any HTML siteAdd the tag to the landing page, docs and buy page; a static site needs only the one script tag.
  2. Lemon SqueezyWhen the buy button opens Lemon Squeezy checkout, pass tally_visitor_id in the checkout's custom data.
  3. If the CLI opens a purchase URL, send people to your buy page rather than straight to checkout, so the tag can add the visitor's id.
  4. Make copying the install command a goal with tally('install_copied') on the copy button.

08Questions

  • Our CLI has an upgrade command that opens checkout. Is that linked?

    If it opens your buy page, the tag adds the visitor's id and the purchase links like any other. If it opens checkout directly, the sale links by email when the buyer was identified before, and is counted as unlinked otherwise.

  • Does Tally add telemetry to our tool?

    No. It runs on your website only. Nothing is added to your binary, and installs aren't counted.

  • Are licence refunds tracked?

    Yes, from Lemon Squeezy, Paddle, Polar or Stripe, against the sale they reverse and its source.