Installation and licensing
Install PageDesigner, run migrations, configure licensing and hosted features.
Install PageDesigner, run its migrations, configure licensing and hosted features, and understand optional theme integration.
This guide is for the Paymenter owner or system administrator. A normal page editor can start at Quickstart and page management.
Before you install
Confirm that you have:
- Administrator access to Paymenter.
- A PageDesigner release ZIP from an authorized source.
- A PageDesigner license key and, if supplied, the associated account email or ID.
- A current database backup.
- A supported Paymenter installation and the PHP version required by that Paymenter release.
- Outbound HTTPS access from the Paymenter server if you intend to activate licensing, browse Hosted models, use the hosted AI path, share packages, or download marketplace content.
- License Key join discord to get one if you dont have it.
Keep the previous PageDesigner ZIP and a database backup before every upgrade. PageDesigner stores pages, components, translation data, license state, sharing records, AI runs, and MCP tokens in ext_page_designer_* tables.
Install the ZIP
Upload the extension
Sign in to the Paymenter admin panel, open Extensions, choose the extension upload action, and select the PageDesigner release ZIP.
Enable PageDesigner
Find Page Designer in the extension list and enable it. Enabling registers the extension, routes, navigation hooks, policies, and permissions.
Run the extension lifecycle
Use Paymenter's install or upgrade action when prompted. The extension lifecycle runs the bundled migrations. PageDesigner intentionally does not run migrations during an ordinary web request.
Verify the administration page
Open Extensions → Page Designer. You should see the page list and actions allowed by your role.
Configure hosted access and licensing
Open PageDesigner's extension settings.
Enable component library and Marketplace
Turn on Enable component library and Marketplace when this installation should use Hosted features. Published pages continue to render locally if this is later disabled, but management features that require a valid entitlement become unavailable.
License key
Enter the PageDesigner license key. The browser does not receive this key. PageDesigner uses it server-to-server and stores a SHA-256 hash with the locally verified license grant.
Account email or ID
Enter the account reference only when the license is associated with one or your provider asks you to use it.
Install name
Use a friendly identifier such as Production billing or Staging portal. It helps distinguish licensed installations.
Public server IP
Set Public server IP when the server is behind NAT, CloudPanel, a reverse proxy, or another setup where PHP sees a loopback or private address.
- Enter the public egress address seen by the Hosted service.
- Do not enter
127.0.0.1,::1, or an RFC1918 private address. - If you move the installation to another server, release or deactivate the old install slot before activating the new environment.
Update channel and cache options
| Setting | Effect |
|---|---|
| Stable | Receives stable hosted-library metadata. Recommended for production. |
| Beta | Receives beta channel metadata. Use only when you accept change risk. |
| Auto-check hosted library updates | Compares downloaded reusable models with the current manifest. |
| Auto-update downloaded library cache | Refreshes reusable cached templates when an update is available. It does not rewrite components already placed on pages. |
Save the extension settings. The next licensed management operation performs or refreshes the server-to-server check-in as required.
How license decisions affect the product
An active license is required for page management, custom components, Hosted models, marketplace operations, sharing/imports, the built-in AI agent, direct custom AI providers, MCP tokens and MCP requests, and update checks.
Paymenter permissions apply in addition to the license.
flowchart TD
A[Administrator starts a PageDesigner management operation] --> B{Matching Paymenter permission?}
B -- No --> C[Access denied]
B -- Yes --> D{Valid signed grant or allowed offline grace?}
D -- Yes --> E[Operation continues]
D -- No --> F[Management operation blocked]
F --> G[Already-published local pages still render]An online response that reports an expired, suspended, revoked, invalid, mismatched, or install-limited license blocks immediately. A Hosted outage may use a previously verified signed grant only until its offline-grace deadline.
The editor needs no frontend build
The PageDesigner ZIP contains the editor runtime, GrapesJS, CodeMirror, formatting helpers, language files, and its asset manifest. The editor:
- does not need a root
npm install; - does not use a public CDN for its core scripts, styles, or fonts;
- does not require a theme edit;
- is served through an extension-owned allow-list route.
This is different from the optional integration below.
Optional FlyonUI and Iconify integration
Selected interactive published components can receive richer FlyonUI behavior and Iconify styling when the active theme includes those libraries. PageDesigner does not edit the theme automatically. Without this integration, published components use the extension's built-in graceful fallback, but some enhanced interactions or styles are unavailable.
Run these commands from the Paymenter project root:
npm install flyonui
npm install -D @iconify/tailwind4 @iconify-json/tablerIn the active theme CSS, after @import 'tailwindcss';, add:
@plugin 'flyonui';
@plugin '@iconify/tailwind4';
@import '../../../node_modules/flyonui/variants.css';
@source '../../../node_modules/flyonui/dist/index.js';In the active theme JavaScript, add:
import 'flyonui/flyonui';Then rebuild the active theme:
npm run buildFor the underlying theme workflow, see the Paymenter theme asset documentation.
Paths depend on the active theme. Do not edit themes/default when another theme is active, and do not assume an update to the theme source is visible until its assets are rebuilt.
Configure the AI provider
PageDesigner can use the licensed hosted AI path or a direct OpenAI-compatible provider.
To use a direct provider, configure:
- Use a custom OpenAI-compatible AI endpoint.
- Custom AI endpoint URL — a base URL such as
https://api.openai.com/v1or a full/chat/completionsURL. - Custom AI API key — stored in PageDesigner settings and used by the Paymenter server, never sent to the browser.
- Custom AI model — the exact model ID exposed by the provider.
- Custom AI timeout — 30 to 180 seconds.
Saving a non-empty custom AI API key enables the direct provider and gives it priority over the hosted AI proxy. Hosted components and marketplaces remain separate.
Production endpoints must use HTTPS. Temporarily allow HTTP direct AI provider exists only for local or test environments and should remain off in production.
The AI workflow is queue-backed. Ensure Paymenter's configured Laravel queue worker is running; one model response is checkpointed per job, and a job can run for up to five minutes to accommodate the provider timeout.
Verify the installation
- Open Extensions → Page Designer.
- Create a test page and leave Published off.
- Open the editor.
- Add a basic component, edit its text, and save.
- Open Preview.
- Open the Model Marketplace and confirm it reports either a connected Hosted manifest or the local downloaded cache.
- If AI is configured, send a Read only request such as “Review the page hierarchy without changing anything.”
- Delete the test page only after the checks are complete.
Upgrade safely
- Back up the Paymenter database.
- Retain the current ZIP.
- Upload the new release ZIP through the extension manager.
- Run the extension upgrade/migration lifecycle.
- Re-enable the extension if the manager disabled it.
- Open the Page Designer list and test one draft in the editor.
- Verify a published page on the storefront.
- Review the Model Marketplace, AI status, and MCP token list if you use those features.
Do not delete ext_page_designer_* tables to troubleshoot an upgrade. For rollback, restore the matching database backup and reinstall the previous ZIP.
Uninstalling
The extension's uninstall lifecycle can roll back its migrations. That can remove stored PageDesigner data. Export or back up anything you need before uninstalling.
Disabling PageDesigner is safer than uninstalling when you are investigating a problem. Confirm how your Paymenter version treats extension deletion and migration rollback before proceeding.
Installation troubleshooting
Page Designer is missing
- Confirm the ZIP contains the expected
PageDesignerextension directory. - Confirm the extension is enabled.
- Run the install/upgrade lifecycle again.
- Clear Paymenter application and route caches using the maintenance process appropriate for your installation.
- Check the application log for extension boot or migration errors.
A table is missing
Do not create tables manually. Re-run the PageDesigner install/upgrade lifecycle so the bundled migrations execute in order.
Hosted features say unconfigured
Confirm Enable component library and Marketplace is on, the license key is saved, the Paymenter application URL is correct, and the server can make outbound HTTPS requests.
Activation reports an install or IP mismatch
Check the public application URL and Public server IP. If the installation was moved, release the previous install slot or contact the license provider.
The AI panel stays queued
Verify the Laravel queue worker is running and processing the configured default queue. Review the failed-jobs and application logs before resubmitting a large request.