{"id":368655,"date":"2026-09-14T10:18:18","date_gmt":"2026-09-14T10:18:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/backupbeacon\/"},"modified":"2026-09-15T00:36:10","modified_gmt":"2026-09-15T00:36:10","slug":"backupbeacon","status":"publish","type":"plugin","link":"https:\/\/bel.wordpress.org\/plugins\/backupbeacon\/","author":23551521,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.6.6","stable_tag":"3.6.6","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"BackupBeacon","header_author":"BostonDeveloper","header_description":"The alarm that fires when backups STOP HAPPENING: token-authed REST ping per destination, hourly evaluation, email + dashboard alerts on stale\/silent transitions, event log. Built by BostonDeveloper.","assets_banners_color":"3c3c3c","last_updated":"2026-09-15 00:36:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":91,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"3.6.0":{"tag":"3.6.0","author":"bostondeveloper","date":"2026-09-14 10:17:56","revision":3694963},"3.6.1":{"tag":"3.6.1","author":"bostondeveloper","date":"2026-09-14 18:01:19","revision":3695712},"3.6.5":{"tag":"3.6.5","author":"bostondeveloper","date":"2026-09-14 23:56:49","revision":3696042},"3.6.6":{"tag":"3.6.6","author":"bostondeveloper","date":"2026-09-15 00:36:10","revision":3696066}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3694961,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3694961,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3694961,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3694961,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["3.6.0","3.6.1","3.6.5","3.6.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3694961,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3694961,"resolution":"2","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"The BackupBeacon dashboard: every destination rolled into one ALARM\/OK beacon, with per-destination freshness state.","2":"Destination setup: token-authenticated ping endpoint with rotatable token and freshness limit in hours."}},"plugin_section":[262246],"plugin_tags":[1110,151,4567,5603,75694],"plugin_category":[54,59],"plugin_contributors":[280634],"plugin_business_model":[],"class_list":["post-368655","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-alerts","plugin_tags-backup","plugin_tags-cron","plugin_tags-monitoring","plugin_tags-watchdog","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-bostondeveloper","plugin_committers-bostondeveloper"],"banners":{"banner":"https:\/\/ps.w.org\/backupbeacon\/assets\/banner-772x250.png?rev=3694961","banner_2x":"https:\/\/ps.w.org\/backupbeacon\/assets\/banner-1544x500.png?rev=3694961","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/backupbeacon\/assets\/icon-128x128.png?rev=3694961","icon_2x":"https:\/\/ps.w.org\/backupbeacon\/assets\/icon-256x256.png?rev=3694961","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/backupbeacon\/assets\/screenshot-1.png?rev=3694961","caption":"The BackupBeacon dashboard: every destination rolled into one ALARM\/OK beacon, with per-destination freshness state."},{"src":"https:\/\/ps.w.org\/backupbeacon\/assets\/screenshot-2.png?rev=3694961","caption":"Destination setup: token-authenticated ping endpoint with rotatable token and freshness limit in hours."}],"raw_content":"<!--section=description-->\n<p>Most backup failures are silent: the job stopped running weeks ago and nobody noticed. Backup plugins grade themselves. BackupBeacon is the independent watchdog that does not.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>Add each backup destination (UpdraftPlus to Drive, database dumps to S3, your host's nightly snapshots) with a freshness limit in hours.<\/li>\n<li>Point your backup job at the token-authenticated ping endpoint: <code>POST \/wp-json\/backupbeacon\/v1\/ping\/&lt;destination-id&gt;?token=...<\/code>. Every successful backup pings; the token is rotatable and pings are rate-bounded.<\/li>\n<li>BackupBeacon evaluates every destination hourly (WP-Cron): fresh, stale (past its limit), or silent (never recorded, or a clock-skewed future timestamp). Backdated recordings are refused.<\/li>\n<li>When a destination turns stale or silent, the site admin gets an email and a persistent admin notice - once per incident, not once per cron tick. A dashboard widget rolls every destination into one ALARM\/OK beacon, and the event log records when each destination went stale and when it recovered.<\/li>\n<\/ol>\n\n<p>No account, no external service, no per-site fees. Your backup jobs ping your own site; the watchdog runs where the backups matter.<\/p>\n\n<p><strong>Optional premium plans<\/strong> unlock faster checks (15-minute cadence), more alert channels (Slack\/Discord\/webhook), escalation and maintenance windows, per-destination alert routing, a status API, multisite and white-label agency tooling. Upgrades happen inside your dashboard - no reinstall, no license-key copying - and every feature you use today stays free forever.<\/p>\n\n<p><strong>What it is not<\/strong>: BackupBeacon does not make backups. It is the alarm for the tools that do.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20backup%20plugins%20does%20it%20work%20with%3F\"><h3>Which backup plugins does it work with?<\/h3><\/dt>\n<dd><p>Any of them. If your backup tool can run a curl command (or a WP-CLI line) after it finishes, it can ping BackupBeacon. It is deliberately backup-plugin-agnostic.<\/p><\/dd>\n<dt id=\"does%20it%20need%20an%20external%20account%3F\"><h3>Does it need an external account?<\/h3><\/dt>\n<dd><p>No. Pings arrive at your own WordPress site and evaluation runs on WP-Cron. Nothing leaves your server except the alert email to the admin.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20backup%20job%20never%20pings%3F\"><h3>What happens if my backup job never pings?<\/h3><\/dt>\n<dd><p>That is the point. Silence past the freshness limit flips the destination to stale (or silent if nothing was ever recorded) and the alarm fires.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.6.6<\/h4>\n\n<ul>\n<li>Cloud email alerts (edge relay delivery) are now an Accelerator\/Studio feature: the relay never sends on Free\/Starter\/Pro, relay controls are locked with an upgrade link on lower tiers, and stored relay settings are preserved (never used) while unentitled.<\/li>\n<\/ul>","raw_excerpt":"The alarm that fires when backups stop happening.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/368655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=368655"}],"author":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bostondeveloper"}],"wp:attachment":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=368655"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=368655"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=368655"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=368655"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=368655"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=368655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}