Skip to content
SoundSyncAudio software platform

Guide

Storing Plugin Activation State

What to store after activation, what never to store, and how local cache affects startup validation and offline grace.

Live Moonwave FX products workspace showing the SoundSync product management surface for audio software releases.
Live Moonwave FX analytics workspace showing revenue, product, customer, activation, and download reporting.
Live Moonwave FX customers workspace showing customer management and activity for the developer account.

SoundSync

Cache fields

Use the canonical fields returned by activation/validation and separate test/live records.

FieldUseRule
license_keyRequired for serial flowsSensitive. Encrypt/redact. Delete on deactivation.
instance_idRequiredMachine identity. Must match current machine.
tokenOptional but used for validation fast pathSensitive validation token. Rotate when server returns a new value.
statusRequiredOnly activated/valid states may unlock.
activationIdOptionalUseful validation identity. Delete on deactivation.
licenseReferenceOptionalUseful validation identity. Delete on deactivation.
productIdRequiredMust match current product config.
graceExpiresAtOptionalOffline grace deadline from last successful activation/validation.
offlineGraceDaysOptionalDisplay/diagnostic value. Do not use to reset grace locally.
subscription_* fieldsOptionalDisplay/status values. Explicit inactive/payment-required states lock.

SoundSync

Sanitized activation record

This is an example shape; use encrypted platform storage and atomic writes rather than a plain JSON file.

JSON
{
  "schemaVersion": 1,
  "environment": "test",
  "productId": "prod_demo_piano",
  "appId": "ss_prod_demoapp123",
  "license_key": "DEMO-SERIAL-0001",
  "instance_id": "machine-demo-001",
  "status": "activated",
  "activationId": "act_demo_123",
  "licenseReference": "lic_demo_123",
  "token": "validation-token-from-activation",
  "graceExpiresAt": "2026-08-23T15:00:00.000Z",
  "offlineGraceDays": 30,
  "lastValidatedAt": "2026-07-24T15:00:00.000Z"
}

SoundSync

Storage requirements

Local storage is part of the security boundary.

AreaRequirement
EncryptionUse platform secure storage where possible. At minimum encrypt sensitive fields at rest.
Atomic writesWrite to a temp record and replace atomically to avoid corrupting the last valid cache.
CorruptionTreat corrupt or schema-invalid cache as locked; do not unlock from partial JSON.
SeparationSeparate by productId, appId, environment, customer/account where applicable, and machine identity.
Deactivation cleanupDelete activation state and grace fields after successful deactivation.
Pending claim persistenceStore claim_id, license_key, instance_id, email, productId, and started time only while the flow is pending.
Never storeCustomer passwords, plugin secrets outside generated config, or plugin key/secret in logs.