License Key Format Update - Summary โ
๐ฏ Issue Identifiedโ
The documentation showed examples using pswp_prod_ prefix format, but Lemon Squeezy generates UUID format by default (like 12345678-1234-1234-1234-123456789ABC).
This created confusion about what format customers would actually receive.
โ Solution Implementedโ
1. Validation Logic (Already Correct!)โ
The code already supports both formats:
// From src/pro/license.js
const looksRight =
/^pswp_[a-z0-9_]{4,}$/i.test(key) || // Custom prefix
/^[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}$/i.test(key); // UUID
Test Results:
- โ
UUID format:
12345678-1234-1234-1234-123456789ABCโ VALID - โ
Custom format:
pswp_prod_abc123def456โ VALID - โ
Demo format:
pswp_demo_test1234โ VALID - โ
Short custom:
pswp_testโ VALID
2. Documentation Updatedโ
New Comprehensive Guide:โ
- Created
docs/LICENSE-KEY-FORMATS.md - Explains both UUID and custom prefix formats
- Shows validation logic and examples
- Recommends UUID format for simplicity
Updated Existing Docs:โ
docs/LEMON-SQUEEZY-SETUP.md- Shows UUID as defaultdocs/CUSTOMER-JOURNEY.md- Uses UUID in examplesdocs/AI-MODEL-INTEGRATION.md- Updated examples
3. Demo UI Updatedโ
Before:โ
placeholder="pswp_demo_abcd1234"
After:โ
placeholder="12345678-1234-1234-1234-123456789ABC"
Updated Components:
- โ
demo-docs-website/src/components/ProDemo/index.js - โ
demo-docs-website/src/components/CustomerPortal/index.js
๐ Supported Formatsโ
Format 1: UUID (Lemon Squeezy Default) โ Recommendedโ
Format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Example: 12345678-1234-1234-1234-123456789ABC
Setup: None required! Lemon Squeezy generates this automatically.
Format 2: Custom Prefix (Optional)โ
Format: pswp_XXXX_XXXXXXXXXXXX
Example: pswp_prod_abc123def456
Setup: Configure custom prefix in Lemon Squeezy (if available)
๐ง What Changedโ
Code Changes:โ
- โ No code changes needed! Validation already supported both formats
Documentation Changes:โ
- โ Created comprehensive format guide
- โ Updated setup instructions to clarify UUID is default
- โ Updated all examples to show UUID format first
- โ Clarified custom prefix is optional
UI Changes:โ
- โ Updated demo placeholders to show UUID format
- โ Updated help text to mention both formats
- โ Increased input width for longer UUID keys
๐ฏ Customer Impactโ
What Customers Will See:โ
In Purchase Email:
YOUR LICENSE KEY:
12345678-1234-1234-1234-123456789ABC
In Demo:
License Key: [12345678-1234-1234-1234-123456789ABC]
โ UUID format (default)
Both Formats Work:
- Customers with UUID keys: โ Works
- Customers with pswp_ keys: โ Works
- No migration needed!
๐ Setup Recommendationโ
For New Users:โ
- Create product in Lemon Squeezy
- Enable "License Keys" toggle
- Stop! Use UUID format (default)
- Test purchase โ receive UUID key
- Key works immediately in Pro package
No custom prefix configuration needed! ๐
๐งช Validation Testingโ
# Test UUID format
curl -X POST http://localhost:4001/api/license/validate \
-H 'Content-Type: application/json' \
-d '{"licenseKey":"12345678-1234-1234-1234-123456789ABC"}'
# โ
Response: {"valid":true}
# Test custom format
curl -X POST http://localhost:4001/api/license/validate \
-H 'Content-Type: application/json' \
-d '{"licenseKey":"pswp_demo_test1234"}'
# โ
Response: {"valid":true}
โ Summaryโ
Problem: Documentation showed pswp_prod_ format, but Lemon Squeezy uses UUID by default.
Solution:
- โ Clarified UUID is the default format
- โ Updated all examples to show UUID first
- โ Documented both formats are supported
- โ No code changes needed - validation already works!
Result: Clear, accurate documentation that matches what customers actually receive from Lemon Squeezy.
Recommendation: Use UUID format (Lemon Squeezy default) for easiest setup! ๐