Install & activate a license
Ambikly Pro installs as a second plugin next to the free core. This page covers getting it onto the site, activating your license, and what each license state means.
Before you start
| Requirement | Detail |
|---|---|
| Free core installed and active | Ambikly 0.0.10 or newer |
| WordPress | 5.4 or newer |
| PHP | 7.4 or newer |
| An administrator account | License management requires manage_options |
| Outbound HTTPS | The site must be able to reach store.ambikly.com |
The free core must come first
Pro checks for the free plugin twice, and neither check is advisory.
At activation. If the free core's schema class is not present, Pro deactivates itself immediately and stops with:
Ambikly Pro requires the free Ambikly plugin. Please install and activate Ambikly first.
On every page load. If the free core's main class or version constant is missing, Pro does nothing except show an admin notice with a link to install Ambikly. If the free core is present but older than 0.0.10, Pro also does nothing and shows:
Ambikly Pro requires Ambikly 0.0.10 or higher. Please update the free plugin.
In both cases Pro is loaded but inert — no add-ons, no REST routes, no admin screens. It is not a fatal error and nothing is damaged. Install or update the free core and Pro picks up on the next request.
Install Ambikly Pro
- Sign in at store.ambikly.com/account and download the Ambikly Pro zip. Copy your license key from the same page.
- Confirm the free Ambikly plugin is installed and active, and that it is version 0.0.10 or newer. Check under Plugins → Installed Plugins.
- Go to Plugins → Add New → Upload Plugin, choose the zip and click Install Now.
- Click Activate Plugin. Activation runs the free core's database migration, so any new tables an add-on needs are created.
- Confirm Ambikly → Add-ons now lists the full catalog with toggles rather than a locked preview.
Pro adds no entries to the WordPress admin menu. Everything lives inside the existing Ambikly screens.
Activate your license
- Go to Ambikly → Settings → License.
- Paste your key into the license field. It has the shape
XXXX-XXXX-XXXX-XXXX-XXXX. - Click Save & Activate. Pressing Enter in the field does the same thing.
- Wait for the status badge to read Active. You should see "License activated successfully."
- Go to Ambikly → Add-ons and switch on the add-ons you want. See Managing add-ons.
Activation calls the license server at store.ambikly.com with your key and this site's URL, then stores the response. The request has a 15-second timeout.
What the License screen shows
Once a key is activated, the screen displays:
| Field | What it means |
|---|---|
| Status | Active, Expired, Invalid or Disabled. See the table below. |
| License key | Masked — first four characters, then bullets, then the last four. The full key is never sent back to the browser. |
| Expires | The renewal date, or lifetime for a one-time license. |
| Customer name and email | Who the license belongs to, from the license server. |
| Site count / License limit | How many of your seats are in use. Pro is 1 site, Agency is 10. |
| Activations left | Seats remaining. |
| Account link | Opens your license account at store.ambikly.com. |
Three buttons are available: Save & Activate, Deactivate License, and a status refresh that re-checks the license server without changing anything.
License states
The status comes straight from the license server and is stored locally.
| Status | Badge | What it means | What to do |
|---|---|---|---|
valid | Active | The license is activated on this site and in good standing. Add-ons boot normally. | Nothing. |
expired | Expired | The license was valid but the term has ended. Add-ons are paused. | Renew from your account, then refresh the status. |
invalid | Invalid | The key is not recognized, or is not activated for this site URL. | Check the key for typos. If the site URL changed, deactivate and re-activate. |
disabled | Disabled | The license was revoked or refunded. | Contact support. |
| (empty or other) | Unknown | No key has been activated yet, or the server returned something unexpected. | Enter your key and activate. |
Only valid counts as licensed. Every other state pauses add-ons — see What Pro adds for exactly what that does and does not affect.
Daily revalidation
Pro schedules a WordPress cron event named ambikly_pro_daily_license_check that runs once a day. It reads the stored key and asks the license server for its current status, then updates the stored details.
Two things follow from this:
- A renewal picks itself up. You do not have to re-enter anything after renewing. The next daily check flips the status back to Active, or you can force it immediately with the refresh button on the License screen.
- A revoked or expired license takes effect within a day. Nothing in Pro calls the license server on a normal page load — the per-request check that gates add-ons is a cached option read, which is why it costs nothing.
The scheduled event is removed when the Pro plugin is deactivated, along with the cached plugin-update data.
Moving a license to another site
Each license covers a fixed number of sites. To move a seat, free it on the old site first.
- On the old site, go to Ambikly → Settings → License and click Deactivate License.
- Confirm the prompt: "Deactivate this license on the current site?"
- Wait for the success message. The seat is released on the license server and Activations left goes up by one.
- On the new site, install Ambikly Pro and activate the same key with Save & Activate.
Nothing else changes when you deactivate. Add-ons stay enabled in the database and their settings and data are untouched; they simply stop booting until a valid license is present again.
What gets stored
Pro keeps license data in three WordPress options:
| Option | Contents |
|---|---|
ambikly_pro_license_key | The raw key string. Survives deactivation. |
ambikly_pro_license_details | The parsed status fields — status, expiry, customer, seat counts. Cleared on deactivation. |
ambikly_pro_license_server_response | The full raw response from the license server. Cleared on deactivation. |
REST routes
The License screen uses five routes. All of them require manage_options.
| Method | Route | Permission | Notes |
|---|---|---|---|
| GET | /ambikly-pro/v1/license | manage_options | Current status. The key comes back masked. |
| POST | /ambikly-pro/v1/license | manage_options | Saves a key without activating it. license_key is required. |
| POST | /ambikly-pro/v1/license/activate | manage_options | Saves and activates. Uses the stored key if none is sent. |
| POST | /ambikly-pro/v1/license/deactivate | manage_options | Releases the seat. Keeps the stored key. |
| POST | /ambikly-pro/v1/license/check | manage_options | Refreshes status from the license server. |
Error responses you may see: 400 missing_key / 400 no_key when there is no key to work with, 422 activation_failed or 422 check_failed when the license server rejects the request, and 502 deactivation_failed when the license server cannot be reached at all.
Troubleshooting
The license will not activate
Work through these in order.
- Check the key. Copy it again from your account. Watch for a trailing space or a line break picked up by the copy.
- Check the site URL. A license is activated against the site's home URL. If you moved from
httptohttps, or added or removedwww, the license server sees a different site. Deactivate and re-activate. - Check outbound HTTPS. The site must be able to POST to
store.ambikly.com. A firewall, a security plugin blocking outbound requests, or a locked-down host will break this. The request times out after 15 seconds. - Read the message. "Activation failed: Expired" means the license term has ended, not that the key is wrong. "Activation failed: No Site Limit" or a similar seat error means you are out of activations — see below.
- Could not reach the license server on deactivation is a network problem, not a license problem. Retry once the site can reach the server.
Add-ons are paused
You will see an admin notice like:
Ambikly Pro: your license isn't active, so 6 enabled add-ons are currently paused (their settings are untouched and they resume instantly once the license is valid).
This means add-ons are still enabled in the database but are not booting, because the stored license status is not valid. Nothing has been deleted or switched off.
- Open Ambikly → Settings → License and read the status badge.
- If it says Expired, renew from your account, then click the refresh button to re-check immediately.
- If it says Invalid, the site URL probably changed. Deactivate and re-activate the key.
- If it says Active but add-ons are still paused, the page you are looking at may be cached. Reload wp-admin.
The most common cause outside renewal is cloning a site. A database copied from a licensed site carries the licensed status with it, but the license server is checked daily against the new site's own URL, so the clone flips to invalid within a day. Activate the clone with its own seat, or leave it running on the free core.
Activation limit reached
Activations left on the License screen is zero and activation is refused.
- Open your license account and look at the list of activated sites.
- Deactivate a site you no longer use — ideally from that site's own License screen, so the seat is released cleanly.
- If the old site is gone and you cannot reach its admin, release the seat from your account page instead.
- Retry Save & Activate on the new site.
Staging and development copies each consume a seat. If you run a staging site permanently, an Agency license covers ten sites.
Pro is installed but nothing appears
Check Plugins → Installed Plugins. If Ambikly Pro is active but the Add-ons screen still shows the locked free preview, the free core is almost certainly older than 0.0.10 — look for the admin notice naming the required version, and update the free plugin.
For anything else, see Troubleshooting and System status.
Where to go next
- Managing add-ons — enabling, disabling and configuring the 35 add-ons.
- All add-ons — the full catalog.
- What Pro adds — the free-versus-Pro boundary and pricing.