Website Identity
Persistent installation UUID and normalized domain requirements for license clients
Overview
WooNooW identifies each licensed website using two required values together:
This combined identity is used for activation, validation, deactivation by identity, OAuth activation, and software update checks. Neither value is accepted as a fallback for the other.
Installation UUID
installation_id must be a canonical UUID using the 8-4-4-4-12 hexadecimal format:
A client must:
- generate it once using a cryptographically secure random UUID generator;
- store it persistently for the installation;
- reuse the same value for every license and update request within the same client integration scope;
- keep that scope stable for the lifetime of the installation—the WooNooW reference updater scopes storage by store API URL + product slug;
- avoid deriving it from the domain, license key, hardware, or personal data.
WordPress example:
Do not generate a new UUID on every request or routine plugin update. Losing the stored UUID causes the same domain to be treated as a different installation.
Domain normalization
Clients send the current site URL as domain for license operations and as site_url for update checks. WooNooW normalizes it by:
- removing the scheme, path, query, and fragment;
- lowercasing the hostname;
- removing a trailing dot;
- removing HTTP port
80and HTTPS port443; - preserving non-default ports;
- treating
www.example.comandexample.comas different domains.
Send a canonical URL such as home_url() from WordPress. Authorization decisions use the server-normalized value.
Identity semantics
machine_id may be sent as optional metadata, but it does not form the canonical identity and cannot replace either required value.
Domain changes and migrations
A domain change creates a new identity even when the installation UUID remains unchanged. To release the old activation slot:
- deactivate the old identity using its
activation_id, or its old UUID + domain pair; - activate the same persistent UUID with the new domain;
- continue using the new domain for validation and update checks.
If the old site is no longer accessible, the customer can deactivate it from My Account → Licenses when merchant settings allow deactivation.
Requests that require identity
The pair is mandatory on:
POST /wp-json/woonoow/v1/licenses/activate;POST /wp-json/woonoow/v1/licenses/validate;POST /wp-json/woonoow/v1/licenses/deactivatewhen not usingactivation_id;- OAuth activation requests and token exchange;
GET|POST /wp-json/woonoow/v1/software/check.
See Licensing API, OAuth Activation Flow, and Software Updates API for complete request examples.
Last updated Jul 29, 2026