License gate, no phone-home spam
License validation runs once via a Polar webhook and caches with a refresh cycle. Conversion events do not trigger license checks. When a license lapses, Beaconry switches off gracefully without hard-cutting your campaign data.
How activation works
- You buy a license on Polar. Polar issues a key like
polar_li_*. - You paste the key into Beaconry → Dashboard → License → Activate.
- Beaconry calls Beaconry's central license-validator (a Cloudflare Worker) once. Worker validates the key against Polar's API, returns activation result. Beaconry caches the result locally with a refresh-cycle timestamp.
- Activation done. The dashboard switches from "Inactive" to "Active".
How the refresh cycle works
Beaconry's central worker subscribes to Polar webhooks. When a customer event happens on Polar's side (license activated, license refunded, license lapsed, subscription renewed), Polar fires the webhook to the worker. The worker updates its internal license database within seconds.
Your WordPress install pings the worker once a day for status. If the cache is fresh (refreshed less than ~1 hour ago at the worker), Beaconry returns "license is valid" instantly. If a state change happened on Polar's side, your install picks it up within 1 hour at most.
Comparison: typical phone-home patterns ping per-event or once-per-page-view. Beaconry pings once per day, server-to-server. Conversion events never trigger a license check.
What happens when a license lapses
Two scenarios, very different behaviour:
Scenario A: License expired (renewal not paid). Beaconry's dashboard shows a warning the day the cache reflects the lapse. Tracking continues for a 7-day grace period. After 7 days, server-side dispatch stops, no events leave WordPress. Your existing visitors and form submissions are unaffected, only outbound platform calls stop.
Scenario B: License refunded by you. Beaconry's worker invalidates the activation immediately on the Polar webhook. Your install picks it up within 1 hour. Tracking stops, no grace period (you got your money back, the trade is symmetric).
In both cases, Beaconry never deletes your settings, never deletes your event-history in the Logs tab, never affects WordPress core or your other plugins. Re-activate a fresh key and tracking resumes immediately.
What happens when the validator is unreachable
Two layers of resilience:
- Network down on validator side: Beaconry caches the last-known-good license state. As long as the cache is < 7 days old, tracking continues. Beyond 7 days, Beaconry assumes the license might have lapsed and switches to grace-period behaviour.
- Network down on customer side: WordPress can't ping the validator. Beaconry uses the cached state until either the network recovers or the cache crosses the 7-day threshold.
Net effect: short outages (hours, not days) do not affect tracking. Long-running customer-side network issues eventually trigger grace-period.
Privacy and data flow
- Beaconry's central worker only knows your license key and the WordPress site URL.
- It does not know what events you fire, what platforms you connect, what data you send. None of that ever leaves your WordPress install — it goes directly to the platform-specific APIs.
- Your access tokens for Meta, TikTok, Google Ads, LinkedIn, GA4 stay encrypted in your WordPress database, never sent to Beaconry's servers.
Power-user notes
- Define
BCNR_LICENSE_KEYinwp-config.phpto keep the key out of the database. - Use the constant
BCNR_LICENSE_DEBUG = trueon staging to see the full validator response in the Logs tab. - The dashboard shows last refresh, next scheduled refresh, license tier and seat count. If anything looks stale, click Refresh now.