Coming Soon - The Watchman Tower WordPress plugin is currently in development. This documentation is prepared in advance for the upcoming release.

Settings Overview

The Watchman Tower plugin offers simple configuration with sensible defaults. All settings are managed through the plugin dashboard. Location: WordPress Admin → Watchman Tower → Settings

Heartbeat Interval

What is it?

The interval controls how frequently your WordPress site sends health data to Watchman Tower. Default: 300 seconds (5 minutes)

Adjusting the Interval

1

Locate Control

Find “Heartbeat Interval” in the dashboard settings panel
2

Set Value

Use the slider or input field to set seconds (60-3600)
3

Auto-Save

Changes save automatically via AJAX - no button needed
4

Applies Immediately

New interval takes effect on the next heartbeat cycle
[Screenshot: Interval slider]

Allowed Range

MinimumMaximumDefault
60 seconds (1 minute)3600 seconds (1 hour)300 seconds (5 minutes)
Recommended: 60-120 seconds Why: - Quick issue detection = minimal revenue loss - High uptime expectations - Customer-facing transactions Example: WooCommerce store processing orders 24/7
Recommended: 180-300 seconds Why: - Balance between monitoring coverage and server load - Good for most production sites - Default value (300s) works well Example: Company website with contact forms and content
Recommended: 600-900 seconds Why: - Less time-sensitive content - Lower traffic = less urgency - Reduces server load Example: Personal WordPress blog with moderate traffic
Recommended: 1800-3600 seconds Why: - Not customer-facing - Minimal monitoring needed - Reduces noise in logs Example: dev.yoursite.com or staging environment

Performance Considerations

Lower intervals (60-120s):
  • ✅ Faster issue detection
  • ✅ More granular uptime data
  • ❌ Slightly higher server load
  • ❌ More API calls (may affect rate limits)
Higher intervals (600-3600s):
  • ✅ Lower server resource usage
  • ✅ Fewer API requests
  • ❌ Longer time to detect issues
  • ❌ Less detailed uptime graphs
Even at 60-second intervals, the heartbeat is lightweight (~2KB payload). Performance impact is negligible on modern hosting.

How It Works

// Simplified JavaScript loop
let interval = 300; // seconds

function scheduleNextHeartbeat() {
  setTimeout(() => {
    sendHeartbeat();
    scheduleNextHeartbeat();
  }, interval * 1000);
}

// Started on page load
scheduleNextHeartbeat();
The interval value is stored in WordPress options:
// Behind the scenes
$interval = get_option('wthb_heartbeat_interval', 300);
Changing the interval does NOT restart the current cycle. If the next heartbeat is scheduled in 3 minutes, changing the interval to 1 minute won’t trigger an immediate heartbeat - it applies to the next cycle.Tip: Send a manual heartbeat to sync immediately.

Pause Monitoring

What is it?

Temporarily disable heartbeat monitoring without disconnecting your site. Toggle: ON/OFF switch in dashboard

When to Pause

Maintenance Windows

Planned server maintenance or updates

Development Work

Testing changes that might break the site

Migrations

Moving to a new host or server

Known Issues

Preventing alerts during acknowledged downtime

How to Pause

1

Open Dashboard

Navigate to Watchman Tower plugin dashboard
2

Toggle Switch

Click the “Pause Monitoring” toggle to ON
3

Confirm

Confirm in the modal dialog (if enabled)
4

Verify

Status badge changes to yellow “Paused”
[Screenshot: Pause monitoring toggle in ON position]

What Happens When Paused

AspectStatus
Heartbeat sending⏸ Stopped
Alert notifications⏸ Disabled
Dashboard status🟡 Shows “Paused”
Site connection✅ Maintained
Plugin active✅ Still running
Settings accessible✅ Can be changed
Important: Paused state is synced with Watchman Tower, so you won’t receive false downtime alerts. Your uptime percentage calculations also exclude paused periods.

How to Resume

Simply toggle the switch back to OFF:
  1. Click the toggle
  2. Heartbeat loop restarts immediately
  3. Status updates to “Connected”
  4. Next heartbeat scheduled based on interval

Pause Duration

No time limit - monitoring stays paused until you manually resume. Best practice: Don’t forget to re-enable! Set a reminder if pausing for extended maintenance.

Paused vs Disconnected

FeaturePausedDisconnected
Heartbeats⏸ Stopped❌ Not connected
Connection✅ Active❌ Removed
Settings✅ Saved❌ Cleared
Resume🔄 One click⚙️ Full setup again
Use CaseTemporaryPermanent
💡 Always pause instead of disconnecting if you plan to resume monitoring later.

Manual Heartbeat

Send Heartbeat Now

Button: “Send Heartbeat Now” in Quick Actions panel Triggers an immediate heartbeat, bypassing the scheduled interval.

When to Use

  • ✅ After changing settings (to verify changes)
  • ✅ Testing connectivity after setup
  • ✅ Troubleshooting heartbeat issues
  • ✅ Forcing data sync with dashboard
  • ✅ After WordPress/plugin updates

How It Works

1

Click Button

Click “Send Heartbeat Now” in dashboard
2

AJAX Request

JavaScript sends AJAX call to WordPress admin
3

Collect Metrics

Plugin gathers fresh site health data
4

API Call

Data sent to Watchman Tower API via HTTPS
5

Update UI

Dashboard status widget refreshes immediately
6

Confirmation

Success/error message displayed

Rate Limiting

Limit: 1 manual heartbeat per minute Why: Prevents API abuse and excessive server load Error message if exceeded:
⚠️ Please wait before sending another heartbeat
Rate limit: 1 per minute

Behind the Scenes

// AJAX call to trigger heartbeat
jQuery.ajax({
  url: ajaxurl,
  method: "POST",
  data: {
    action: "wthb_send_heartbeat",
    nonce: wthbData.nonce,
  },
  success: function (response) {
    // Update UI
    updateStatusWidget(response.data);
    showNotification("Heartbeat sent successfully");
  },
  error: function (xhr, status, error) {
    showNotification("Failed to send heartbeat: " + error, "error");
  },
});
Manual heartbeats do NOT reset the scheduled heartbeat timer. The automatic cycle continues independently.

Advanced Settings

Constants (wp-config.php)

For advanced users, you can override settings via constants:
// wp-config.php

// Force specific heartbeat interval (seconds)
define('WTHB_HEARTBEAT_INTERVAL', 120);

// Disable manual heartbeat button
define('WTHB_DISABLE_MANUAL_HEARTBEAT', true);

// Custom API endpoint (for testing)
define('WTHB_API_ENDPOINT', 'https://custom-api.example.com');
| Constant | Type | Purpose | |----------|------|---------| | WTHB_HEARTBEAT_INTERVAL | int | Force interval (seconds) | | WTHB_DISABLE_MANUAL_HEARTBEAT | bool | Hide manual button | | WTHB_API_ENDPOINT | string | Custom API URL | | WTHB_TIMEOUT | int | API request timeout (seconds) | | WTHB_DEBUG | bool | Enable debug logging | Note: Constants override dashboard settings and are not editable via UI.

WordPress Cron

The heartbeat relies on WordPress cron (WP-Cron). Check if cron is working:
wp cron event list
You should see:
wthb_heartbeat_event    2024-01-15 14:35:00    300 seconds
Problem: WordPress cron doesn’t fire reliably on low-traffic sites. Solution 1: Disable WP-Cron and use system cron Add to wp-config.php: php define('DISABLE_WP_CRON', true); Add to system crontab: ```bash */5

Data Privacy Settings

What Data is Collected

See detailed breakdown in Metrics Reference → Summary:
  • Site health metrics (WordPress version, PHP version, etc.)
  • Performance data (RAM usage, disk space)
  • Security settings (SSL, plugin/theme versions)
  • Active plugins list (names only, not code)

What is NOT Collected

  • ❌ User passwords or credentials - ❌ Database contents - ❌ Post/page content - ❌ Personal user data - ❌ Customer information - ❌ Payment details
  • ❌ Email addresses (except admin email as site contact)

GDPR Compliance

The plugin is GDPR-compliant:
  • No cookies set
  • No personal data tracked
  • No third-party scripts on frontend
  • Data processing agreement available
  • Right to deletion honored

Opt-Out Options

Option 1: Pause monitoring (temporary) Option 2: Disconnect site (removes all data) Option 3: Delete site from Watchman Tower dashboard (permanent)

Multisite Considerations

Network Activation

When network-activated on WordPress Multisite:
  • Each subsite gets its own instance ID
  • Configure settings per-site (not network-wide)
  • Independent monitoring per subsite
  • Separate heartbeat intervals possible

Super Admin Controls

Super admins can:
  • Network activate/deactivate
  • View all subsite connections
  • Force disconnect subsites (if needed)

Troubleshooting Settings

Possible causes: - JavaScript errors on page - AJAX requests blocked by security plugin - Database connection issues Solutions: - Check browser console for errors - Temporarily disable security plugins - Check file permissions - Clear cache (browser + WordPress)
Explanation: New interval applies to the NEXT heartbeat cycle, not the current one. Solution: Send a manual heartbeat to sync immediately.
Check: - JavaScript enabled in browser? - Admin AJAX URL correct? - Nonce validation passing? Debug: javascript console.log(wthbData); // Check if data available
Causes: - WTHB_DISABLE_MANUAL_HEARTBEAT constant set to true - JavaScript not loaded - User lacks admin permissions Fix: Remove constant from wp-config.php if set

Next Steps