How to Connect Gumroad License Keys to a Tauri Desktop App

The problem

You want to charge for a desktop app, and Gumroad will happily generate a license key for every sale. What it does not give you is the other half: a screen where the buyer pastes the key, a check that the key is real, a way to remember the result without phoning home on every launch, and a decision about what a refunded or over-shared key should do. Writing that yourself is a week of fiddly work.

The kit includes an optional licensing module that covers the other half. A buyer pastes a key into Settings > License and clicks Activate, the app asks Gumroad once, and everything after that is local. Lemon Squeezy keys are supported too. This page is the setup sequence, written for a developer who has the kit unzipped and a Gumroad product ready. Burrow Pro, the desktop app the kit was extracted from, uses the same pattern, so you can see the buyer's side in a shipping product. All of it is Windows-only.

Steps

  1. Create the Gumroad product with license keys on

    In your Gumroad Pro product, turn on Generate a unique license key per sale. Add versions such as Standard, Founding and Family if you sell more than one edition. Do not rename a version after the first sale.

  2. Copy the product id

    Open the product, go to the Content tab and find the license key section, which shows the product_id. Product ids are not secret. No seller token or API key is needed, and none may ever go into the file.

  3. Fill in config/store.json

    Put the id in gumroad.proProductId. Make the names in gumroad.proVersions match your Gumroad version names exactly, capital letters included, and set supportContact to your support email or URL. Add gumroad.maxUses limits that leave slack for reinstalls.

  4. Check the configuration

    Run npm run check:store-config. It prints whether each store is configured and never prints the ids or contacts a store. A typo in a filled-in id does not switch licensing off; Pro stays locked until you fix it.

  5. Test with a Dev build

    Make a Dev build with npm run desktop:build:dev and buy your own product with a Gumroad test purchase. Dev builds accept test purchases, and stable builds refuse them, so a test key can never unlock a shipped app.

  6. Decide what is Pro

    Gate by capability only: requirePro on the server, first on the route, and useEntitlements in the UI. The kit ships one example, a summary of the example items. Never gate the user's data, export, import, backups or privacy controls.

What the buyer sees and what Gumroad sees

The buyer opens Settings > License, pastes the key and clicks Activate. The app sends one request to Gumroad with the product id and the key, stores a tamper-protected record in two places on the computer and does not contact the store again. Gumroad sees the key, the product id and the buyer's IP address, and nothing about their data or computer.

The only outbound use is the activate click, under the named license feature in the network policy. Startup and status checks make no call.

Turning it off and the limits of the approach

Leave config/store.json as shipped, with every value empty, and licensing is off: Pro is on for everyone and there is no trial. That makes it easy to try the kit first. The module also supports a local 7-day trial, which you configure in the same file when you want one. Remember this is deterrence, not copy protection. Because the app runs on the buyer's computer, a determined person can patch any check. To reset a buyer's activation count after a reinstall, open the sale in the Gumroad dashboard and edit License key, Uses; the app cannot do that for you.

Pros and cons

Pros

  • One online check on a button click, then fully offline, so there is no timer or account.
  • Capability gating keeps the buyer's own data free and exportable.
  • Setup is one JSON file plus a configuration checker.
  • It is included in the base kit, with no extra tier.

Cons

  • Refunds and chargebacks are caught only at activation time, because the app never re-checks.
  • Resetting a buyer's activation count is a manual step in the Gumroad dashboard.
  • It is a deterrent, not DRM, so a determined user can bypass it.
  • The configuration is baked into the build, so changing it means a new build.

Frequently asked questions

Do I need a Gumroad API token in the app?

No. The app only asks Gumroad whether a key is valid, using the product id. A seller token must never ship in the app.

Can I use Lemon Squeezy as well?

Yes. The module supports both stores, and the buyer picks the store in Settings > License; only configured stores are shown.

What if I leave the file empty?

Licensing stays off, Pro is on for everyone and the Pro gate always passes.

Does the buyer need an account with me?

No. The key from the Gumroad receipt is all they paste.