Licensing
How It Works
Section titled “How It Works”WriteTrack uses offline-validated license keys — no server calls, no runtime dependency on our infrastructure. The key is validated locally using cryptographic signature verification.
- Capture is always free.
start(),getData(), and all event methods work without a license. - Analysis requires a license (or localhost).
getAnalysis()returnsnullon production without a valid key. - Localhost is unrestricted. Full analysis works on
localhostand127.0.0.1with no key, so you can evaluate the complete SDK before committing.
Getting a License Key
Section titled “Getting a License Key”Option 1: CLI (recommended)
Section titled “Option 1: CLI (recommended)”npx writetrack initThe CLI prompts for your email and production domain, registers a free 28-day trial, and saves the key to .env:
WriteTrack — Set up a free 28-day trial
Email address: you@example.comProduction domain (e.g. example.com): example.com
Registering you@example.com for example.com...
Done — license key saved to .env Trial expires: 3/10/2026Option 2: Web portal
Section titled “Option 2: Web portal”Sign up at the customer portal to get a key and manage your account.
Using Your Key
Section titled “Using Your Key”Pass the key when initializing:
const tracker = new WriteTrack({ target: textarea, license: process.env.WRITETRACK_LICENSE_KEY,});Domain Binding
Section titled “Domain Binding”Each license key is bound to a production domain. The SDK validates that the current hostname matches the licensed domain. Subdomains are included — a key for example.com works on app.example.com, staging.example.com, etc.
Expiration and Grace Period
Section titled “Expiration and Grace Period”When a trial or subscription expires, the SDK continues working for a 28-day grace period with a console warning. After the grace period, getAnalysis() returns null. Capture is never interrupted — start() and getData() continue working regardless of license state.
Evaluation Mode
Section titled “Evaluation Mode”On localhost, no key is needed. This is the easiest way to try WriteTrack:
// Full analysis on localhost — no license requiredconst tracker = new WriteTrack({ target: textarea });tracker.start();
const analysis = await tracker.getAnalysis(); // works on localhost