Skip to content
EntryWick documentation

For an Owner or Admin who sees the license banner; whoever runs the install.

License states: what each one stops (self-hosted, week 21)

A self-hosted EntryWick degrades when its license is not in order — it never locks. This page says what each state means, what the admin's license banner shows, and what keeps working. PRICING_ENTITLEMENTS §5, ADR-020. How a key is put in: license-keys.md. Where revoked comes from: heartbeat.md.

Who opens it: an Owner or Admin who sees the license banner; whoever runs the install.

What they came to do: understand what the banner means, what has stopped, and what to do about it.

What must be true when they leave: they know that check-in, published events and their data are never held hostage — and exactly which buttons say no, until when, and what makes them say yes again.

Never stopped, in any state

  • Check-in: the scanner app, scanning, search, manual check-in and overrides, kiosks, scanner API keys, and a phone's offline batch upload when it comes back online.
  • Events already published: public pages and registration, tickets, scheduled messages, outgoing webhooks.
  • Reading and exports, in the admin and through the API.

The states

State When Banner (Owners and Admins) What stops
Active Up to and including valid_until (UTC) None (or a quiet line for a new version or a notice) Nothing
Grace The 30 days after valid_until "The license key expired on …: N days of grace left" Nothing yet
Expired From the 31st day after valid_until "The license key expired on …" Publishing a new event; updates
Missing key EW_LICENSE_KEY is empty "This instance has no license key" As expired
Key cannot be verified A typo, a key for another build "The license key on this instance cannot be verified" As expired
Revoked, counting down The license server answered revoked "…was revoked. In N days, on …, the admin and the API become read-only" Updates (at once)
Read-only Seven days after the first revoked answer "This instance is read-only: its license was revoked" Every change in the admin and through the API, including publishing; updates
Unreachable The license server has not answered for 30 days "The license server has not answered for N days" Nothing — a warning only

When more than one applies, the banner shows the most severe (read-only, revoked, expired, cannot be verified, missing, grace, unreachable, then a new version and notices). Notices from the license server are listed under it. Nobody without tenant.update (below Admin) sees the banner. A key whose start date is still ahead publishes and updates normally.

Read-only keeps exactly what a suspended organization keeps on the cloud: members can read, export and do everything under check-in; nothing else, Owners included. API keys keep reads and POST /exports; other calls answer 403 instance_read_only. It applies to every organization on the instance.

Publishing refused shows in the event's Publish dialog before anyone presses it, and through the API as 422 license_not_valid with error.validity (expired, missing, invalid).

Getting out of it

  • Grace, expired, missing, cannot be verified: put the renewed key in EW_LICENSE_KEY, restart the containers, and run php artisan ew:license:check. Publishing and updates come back at once.
  • Revoked or read-only: once EntryWick reinstates the license, the next daily heartbeat (03:45 UTC) — or php artisan ew:license:check --heartbeat now — clears it everywhere.
  • Unreachable: let the server reach license.entrywick.io over https.

For the update tool

php artisan ew:license:check --json prints one JSON object: hosting, validity, reason, key_prefix, license, organization, channel, valid_from, valid_until, grace_ends_on, condition (the banner's state), publish_allowed, updates_allowed, read_only, revoked_at, read_only_after, days_unreachable, unreachable_warning, version, latest_version, update_available, notices, and the last heartbeat's times and error. On the cloud it prints {"hosting":"cloud"}. It always exits 0: updates_allowed: false is a state, not a failure of the command.