SignalPress Pro licenses are activated from WordPress against the SignalPress Hub. After the first activation, the site stores signed credentials and validates in the background — the license key is not sent on every request.
Overview: Licensing, tiers, and permissions. Install steps: Setup & Activating SignalPress.
Requirements
- SignalPress (free) active
- SignalPress Pro installed and active
- A valid license key (format
SP-XXXX-...) - Manage license permission or administrator access
Activate a license
- Open SignalPress → Settings → Settings.
- Scroll to SignalPress Pro license.
- Enter your license key in the License key field.
- Click Activate.
On success, the table updates with Status, Tier, Licensed domain, Domain usage, Expires, and Last successful check.
What happens during activation
SignalPress Pro calls the hub /wp-json/signalpress-hub/v1/license/activate endpoint with:
- License key (used once at activation)
- Normalized site domain and stable site fingerprint
- Plugin, PHP, and WordPress versions
The hub returns:
activation_idandactivation_token— stored locally; the token is never shown again after activation- Entitlement payload — tier, status, features, expiry, domain limits, beta flags
Local state is saved in the signalpress_license option. Successful activation fires signalpress/license_activated and refreshes remote config.
Refresh and background validation
| Action | When to use |
|---|---|
| Refresh | After a plan upgrade, domain limit change, or beta enrollment on the hub |
| Automatic validate | Hourly WP-Cron plus admin visits (at most once per hour when credentials exist) |
Refresh calls the hub validate endpoint with signed activation_id / activation_token — not the license key.
If validation fails (expired subscription, revoked activation), Pro revokes local credentials while keeping the masked key for reactivation. Status becomes inactive and tier-gated features lock until you Activate or Refresh successfully.
Hooks:
signalpress/license_refreshed— after successful validate or activationsignalpress/license_revoked— when credentials are cleared after a failed check
Deactivate this site
Deactivate this site calls the hub deactivate endpoint, clears local activation credentials, and fires signalpress/license_deactivated.
Use this when:
- Moving the license to another domain
- Removing SignalPress from a staging clone
- Freeing an activation slot in Domain usage
Saved integration settings, routing rules, and credentials remain on the site but Pro features lock until a license is activated again — Locked features and upgrade paths.
License status values
| Status | Effect on signalpress_has_license_level() |
|---|---|
active | Tier features enabled |
grace | Tier features enabled during a brief post-expiry window |
inactive | Treated as Tier 0 for feature gates |
Read status in code with signalpress_license_status(). Expiry timestamp: signalpress_license_expires_at() (0 or empty display means unknown/lifetime).
License table fields
| Field | Meaning |
|---|---|
| Status | active, grace, or inactive |
| Tier | 0, 1, or 2 |
| License key | Masked display of stored key |
| Licensed domain | Domain bound to this activation |
| Domain usage | Activations used vs limit (Unlimited when no cap) |
| Expires | Renewal date or Lifetime |
| Last successful check | Last hub validate success |
| Update access | Whether Pro plugin updates are available |
| Beta program / Beta version | Shown when enrolled — in-admin surveys may appear |
Beta program
When the entitlement includes beta enrollment:
signalpress_is_beta_participant()returns truesignalpress_beta_version()returns the cohort label- PostHog-powered in-admin surveys may load for beta participants after eligibility rules pass
Beta settings come from the hub entitlement; they are not toggled in wp-admin.
Troubleshooting
| Symptom | Check |
|---|---|
| Activate fails with generic error | Key typo, inactive subscription, or domain limit reached |
Tier shows 0 after activation | Refresh license; confirm hub subscription is active |
| Features locked but status active | Confirm signalpress_operation_mode() is not pro_suspended or disabled |
| Staging site uses production key | Deactivate on one site before activating another, or increase domain limit |
For delivery issues unrelated to licensing, see Connection Tests and Delivery Log.