
What “activated” means
Flex Forms treats an install as activated when both of the following are true:- A valid Public API key (
pk_forms_…) is saved in Filament under Global Settings → License. - The exact hostname in the browser address bar (the host staff open to use Studio) is registered on your account in the License Portal.
Exact UI path in Filament
Paste the Public API key only in this place. The field label is License public key; the placeholder showspk_forms_….
Open your Filament admin panel
Open Flex Forms from the sidebar
Open Global Settings from the Flex Forms left rail
Select the License tab
?tab=license depending on your panel URL.Paste into License public key
- Placeholder in the UI:
pk_forms_… - Expected value:
pk_forms_followed by 32 hexadecimal characters (0–9, a–f) - Paste only that value — no quotes, no leading
Bearer, no trailing spaces
pk_forms_ and look like a single continuous token. If you see cmp_ or a Lemon-looking key, stop and re-copy Your Public API Key from the portal.Save, then reload
License Portal: register, copy key, add hostnames
The License Portal is where purchase becomes usable credentials. Full portal workflows live on The License Portal; below is the activation-focused path.Create or sign in to the portal
- Email — preferably the same address as Lemon Squeezy checkout.
- Password — for the portal account (this is not your Filament password).
- Lemon Squeezy license key — from the Lemon receipt / My Orders.
- Composer token (
cmp_…) — for package downloads only (Installation). - Public API key (
pk_forms_…) — for Filament only (this guide).
Copy Your Public API Key
pk_forms_.Copy the full value. You will paste it into Filament as described above (or into the Setup Wizard on first launch).pk_forms_… per domain.Register every hostname you use
Confirm plan seats before adding more hosts
Setup Wizard alternative (same key)
On a first launch without a Public API key, Flex Forms often opens the Setup Wizard. The wizard asks for the same credential:- Field conceptually equivalent to License public key
- Same value:
pk_forms_…from the portal - Same rules: never Lemon key, never
cmp_…
- Complete the wizard when it appears, or
- Skip / leave the wizard and finish later under Global Settings → License
Full activation checklist
Use this end-to-end list when onboarding a new environment (production, staging, or a teammate’s local*.test host).
Purchase (if you have not yet)
Register in the License Portal
pk_forms_… and cmp_… — copy both; only pk_forms_… goes into Filament.Install the package
Register hostnames
*.test).Paste the Public API key in Filament
pk_forms_…). Save and reload.Confirm Studio works
Seat limits & moving domains
Activation seats are per hostname, not per form and not per user account in Filament.- Production + staging typically need two seats (Standard is enough for that pair).
- Each extra preview host, client subdomain, or local
*.testname uses another seat. wwwand apex are two seats if both are used for the panel.- Lifetime is not Enterprise seat count — Lifetime includes 10 activations with Pro-class features; see Plans & pricing and Compare plans.
Moving a domain
You are not permanently locked to the first hostname you registered.- In the License Portal, remove the old hostname to free a seat.
- Add the new hostname.
- Keep the same
pk_forms_…in Filament unless you rotated the Public API key. - If you rotated the key, paste the new
pk_forms_…into Global Settings → License and save.
What breaks without a valid license?
When the Public API key is missing/invalid, or the current hostname is not allowlisted (or entitlement has lapsed), Flex Forms intentionally locks runtime mutation paths while preserving your configuration escape hatch.Troubleshooting
Work through these in order when Studio stays locked after you believe activation is done.I pasted a key but Studio is still locked
I pasted a key but Studio is still locked
- Confirm the saved value is under Global Settings → License → License public key and starts with
pk_forms_. - Confirm you saved the form and fully reloaded the browser tab.
- Look at the hostname in the address bar — it must match a portal domain exactly (including
wwwvs bare domain, and including.testfor local). - Clear application caches if your environment caches config:
php artisan optimize:clear. - Confirm you did not paste
cmp_…or the Lemon key into the License field. - Open Studio again and retry save. If a toast still mentions license / domain, the portal list is still the first place to fix.
Portal / Lemon shows the license as inactive
Portal / Lemon shows the license as inactive
I rotated my Public API key
I rotated my Public API key
pk_forms_….- Copy the new key from the portal.
- Paste it into Global Settings → License → License public key.
- Save and reload every environment that still had the old value (production, staging, local).
Wrong key format / validation error on save
Wrong key format / validation error on save
- Prefix:
pk_forms_ - Then: exactly 32 hexadecimal characters (0–9 and a–f / A–F depending on copy)
- Truncated clipboard (missing the last few characters)
- Leading or trailing whitespace / newline
- Accidental wrap that inserts a space mid-key
- Pasting
cmp_…or the Lemon key instead
www vs non-www (or admin vs apex) mismatch
www vs non-www (or admin vs apex) mismatch
https://www.example.com/admin→ registerwww.example.comhttps://example.com/admin→ registerexample.comhttps://admin.example.com→ registeradmin.example.com
example.com → www.example.com but staff bookmark the apex panel URL, register the host that actually remains in the bar when Studio loads — or register both if both are used (two seats).Local *.test host not unlocking
Local *.test host not unlocking
wyachts-super-app.test or my-app.test), not a guess like localhost unless that is truly what the browser shows.After adding the host in the portal, reload Filament. Local caches and long-lived config cache can still serve a previous negative check — run php artisan optimize:clear if you use optimized config/routes.Staging works but production does not (or the reverse)
Staging works but production does not (or the reverse)
- The same (or correctly updated)
pk_forms_…in that environment’s Global Settings. - That environment’s hostname registered in the portal.
staging.example.com does not unlock production admin.example.com. Treat them as separate seats and separate checklist rows.Setup Wizard keeps appearing or License tab looks empty
Setup Wizard keeps appearing or License tab looks empty
pk_forms_… there.If the field looks empty after you thought you saved, confirm you were on the License tab (not Appearance / Mail / Security / Public URLs / Insights) and that the save action completed without a validation error.I pasted cmp_ into License public key
I pasted cmp_ into License public key
pk_forms_… instead.Keep cmp_… only in Composer auth / CI secrets as described in Installation. If the Composer token was exposed in a ticket or screenshot, regenerate it in the portal and update every server / CI job that still uses the old token.Caches still report an old license state
Caches still report an old license state
- Save Global Settings again if the key changed.
- Run
php artisan optimize:clear(or your host’s equivalent clear for config / route / view / application cache). - Hard-reload the browser (or try a private window) to rule out a stale tab.
Need more domains than my plan allows?
Need more domains than my plan allows?
Subscription expired or Composer updates stopped
Subscription expired or Composer updates stopped