Someone asked on ExtensionPay's discussions how to charge on their own landing page before anyone installs. Setups that track paying users from inside the extension want the extension first. With license keys you can flip the order, because the key is the proof of purchase and it can arrive before the extension does. We make Keyturn Kit, a starter that works this way, so take this with that in mind.

The order of things

  1. Buy button on your page, linking to a checkout (Lemon Squeezy here; Polar, Dodo Payments, Gumroad and Payhip work the same way).
  2. The confirmation screen and the receipt email both point to your Chrome Web Store listing. The receipt carries the license key.
  3. The buyer installs, and the extension opens a page that asks for the key.
  4. The extension activates the key with the provider's license API. No accounts, no server of yours.

Point the receipt at the store

In Lemon Squeezy each product has a confirmation modal (title, message, button text, button link) and receipt settings (thank you note, button text, button link). Set both links to the store listing and say what comes next: "Install the extension, then paste the key from this email."

Ask for the key on first install

Without this, a buyer installs, sees a locked popup and has to guess where the key goes.

// entrypoints/background.ts (WXT) export default defineBackground(() => { // Registered at the top level: the service worker only gets onInstalled if the listener exists on first run. browser.runtime.onInstalled.addListener(({ reason }) => { if (reason === 'install') void browser.runtime.openOptionsPage(); }); }); 

The options page needs one field and an Activate button:

const r = await license.activate(key, 'Chrome'); if (!r.ok) showError(r.error); 

Say on that page that people who haven't paid can use the free part and buy later, so one page serves both.

Three decisions

  • Set an activation limit in the provider, for example 3, so a key covers one person's browsers without spreading.
  • When you refund, disable the key; the extension notices on its next daily check.
  • For Firefox and Edge the key flow is the same, but the receipt needs a link per store, so a small "get the extension" page beats one store link.

The full guide has the same steps with links to Lemon Squeezy's docs, and the free MIT edition of Keyturn Kit ships the options page, the activation and the first-install snippet.