License activation that lets each vendor choose the right install flow.
Use guided login activation when you want a premium setup wizard, or manual key activation when copy-paste is better. Both flows end with the same secure domain activation, rotating session token, heartbeat, and audit trail.
Guided activation
Open Zartevo, ask the customer to sign in, let them choose the purchased license, then return to your installer with a completion code.
Best for: WordPress wizards, desktop installers, SaaS connectors, and products where login is smoother than copy-paste.
Manual license key
Ask the customer to paste their key inside your settings screen, then activate and verify from your product.
Best for: Simple plugins, CLI tools, private deployments, and products that should work without opening a browser.
Guided activation
Recommended when you want the customer to authenticate with Zartevo and select the purchased license. The product never asks them to paste a license key.
Create the activation session
Your installer sends the product id, domain, environment, and return URL. Zartevo returns a short-lived activation URL.
Open Zartevo from your setup wizard
const response = await fetch("https://zartevo.com/api/licenses/activation-session", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
productId: "PRODUCT_ID_FROM_Zartevo",
domain: window.location.hostname,
environment: window.location.hostname === "localhost" ? "LOCALHOST" : "PRODUCTION",
returnUrl: "https://customer-site.com/your-installer/callback",
fingerprint: "optional-stable-installation-fingerprint"
})
});
const { activationUrl } = await response.json();
window.location.href = activationUrl;Complete after redirect
When Zartevo redirects back, your installer exchanges the short-lived code for the normal session token.
Exchange the completion code
const code = new URLSearchParams(window.location.search).get("Zartevo_activation");
const response = await fetch("https://zartevo.com/api/licenses/activation-session/complete", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ code })
});
const activation = await response.json();
if (activation.valid) {
localStorage.setItem("Zartevo_session_token", activation.sessionToken);
// Continue the installer and unlock paid features.
}Manual license key
Use this when your product should stay inside its own settings page. The customer copies the key from their Zartevo download/license area and pastes it into your product.
Activate with a customer-provided key
const license = new ZartevoLicense(customerLicenseKey, {
productId: "PRODUCT_ID_FROM_Zartevo",
apiUrl: "https://zartevo.com/api/licenses",
});
await license.activate("customer-domain.com");
if (await license.isValid("customer-domain.com")) {
// Unlock paid features.
}After activation, store only the returned session token locally. Keep verifying with heartbeat. Do not hardcode customer license keys in public source.
API contract
The SDK files call these endpoints. Custom integrations can call them directly.
Product setup in Vendor Studio
When creating or editing a product, Zartevo shows product-specific values so vendors do not need to guess IDs or endpoints.