Licensing

Offline license key (SPFXFC-) for a tenant or site collection. Verification runs locally without network calls.

Community and Pro

Without a valid key, the form runs in Community (Free) mode. A valid key unlocks Pro. Keys are issued by the product vendor. The license is verified in the browser using the key's signature and does not call any external service.

FeatureCommunityPro
Tabs in form (maxTabs)2unlimited
Active rules (maxRules)3unlimited
Cascading lookups (allowCascadingLookups)noyes
Custom scripts (allowCustomScripts)noyes
AI Assistant in designer (allowAiAssistant)noyes
"Powered by FormCraft 365 (Community Free)" watermark in form footershownhidden

How the License Is Enforced

Limits are enforced only in the designer. Nothing is blocked at runtime: the form evaluates all rules, displays all tabs, and runs cascading lookups and scripts even if the configuration exceeds Community limits.

Enabling script execution at runtime is controlled independently by the script policy, not the license.

Key Scope

Key Format

The key is a string SPFXFC-<data>.<signature>. Data is base64url-encoded JSON, and the signature is ECDSA P-256 / SHA-256. Only the public key is bundled in the package, so a key cannot be generated or modified without the vendor. Changing a single character invalidates the signature. The contents (version v, tid, tier pro or trial, exp, iat, and optionally cust and sid) are displayed by the dialog after pasting the key.

What to Provide to the Vendor

To issue a key, the vendor needs your Tenant ID and, for a site-collection-scoped key, the Site Collection ID of each site. Both values are displayed in the license dialog in the designer, each with a Copy button.

  1. Open a list form and in the designer (gear icon, Form Settings), click License in the header.
  2. Copy the Tenant ID and Site Collection ID and send them to the vendor along with the requested validity period and customer name.
  3. For multiple site collections, repeat this step on a site in each one.
"License Key" dialog in the designer: license status, Tenant ID and Site Collection ID rows with Copy buttons, key input field, and "Save for" option

Entering the Key in the Designer

  1. In the designer, click License in the header (next to the Community Free or PRO badge).
  2. Paste the key into the License Key field. The key is validated as you type. A valid key displays the tier, expiration date, customer, and scope in green; an invalid key shows the reason (see Error Messages).
  3. Under Save for, choose the storage location (see below) and click Save key.
  4. On success, "Key saved and license updated" is displayed and the badge in the header changes to PRO.
License dialog after pasting a valid key: green validation message with tier, valid until date, customer, and scope (entire tenant or number of site collections)

"Save for" Option

OptionWhere It Is WrittenWho Is Allowed
Entire tenant (requires App Catalog admin)Tenant Storage Entity SpfxFormCustomizer_License in the tenant App CatalogTenant App Catalog administrator
This site collectionFile SiteAssets/FormCustomizer/license.txt in the root web of the site collection (applies to subsites too). If the user lacks permissions to the root web, it is written to the current web's Site Assets.Site owner (after storage lock, owners only)

Tenant Storage Entity (PowerShell)

A tenant App Catalog administrator can write the key without using the designer:

Connect-PnPOnline -Url "https://<tenant>.sharepoint.com/sites/appcatalog" -Interactive
Set-PnPStorageEntity -Key SpfxFormCustomizer_License -Value "SPFXFC-..." -Scope Tenant

# Remove
Remove-PnPStorageEntity -Key SpfxFormCustomizer_License

The dialog displays this same command when writing to the tenant from the browser fails, along with a Copy command button.

File in Site Assets

The "This site collection" option creates (or overwrites) the license.txt file containing a single line—the key itself. You can also create the file manually: upload a text file named license.txt into the FormCustomizer folder of the Site Assets library of the root web of the site collection. The key is signed, so protecting the file from tampering is not necessary for licensing integrity.

Writing to the web property bag is not used. Modern sites with NoScript (DenyAddAndCustomizePages) block it even for owners. Legacy keys in the web or list property bag are still read, but new keys are never written there.

Lookup Order and Caching

When a form opens, the key is searched in the following order—the first valid key wins:

  1. Tenant Storage Entity SpfxFormCustomizer_License.
  2. File SiteAssets/FormCustomizer/license.txt in the root web of the site collection.
  3. The same file in the current web (only if it is a subsite).
  4. Web property bag (read-only, legacy location).
  5. List root folder property bag (legacy location).

Behavior Without a License and After Expiration

Error Messages

The dialog reports why a key cannot be used. Find the resolution by message text:

MessageCause and Resolution
Invalid key format.The key does not start with SPFXFC-, is truncated, or has corrupted data. Paste the full key again without quotes or line breaks that an email client may have added.
Key signature is invalid.The key was modified or is not from the vendor. Alternatively, the browser cannot verify the signature (missing Web Crypto, typically an insecure context). Request a new key from the vendor.
Unsupported key version.The key uses a newer format. Upgrade the solution package.
Key was issued for a different tenant.The tenant ID in the key does not match the tenant where the form is running. Send the vendor the Tenant ID from the dialog (Copy button).
Key is not intended for this site collection.The key lists different site collections. Send the vendor the Site Collection ID from the dialog and request an update.
Key has expired.The exp date has passed. Request a new key.
Cannot write to tenant without App Catalog admin permissions…Save the key to the site collection, or pass the displayed Set-PnPStorageEntity command to a tenant administrator.
Failed to save key: …Another write error (e.g., Site Assets library unavailable). Use the displayed command or create license.txt manually.

Further troubleshooting: Troubleshooting, license was not recognized.