{"slug":"mainwp-fleet-management","title":"MainWP Fleet Management","tags":["mainwp","fleet","multi-site","updates"],"agent_summary":"Staged update pipeline, connection troubleshooting, and monitoring layers for WordPress fleet management via MainWP.","trigger_phrases":["mainwp updates","mainwp fleet","wordpress fleet management","mainwp connection","mainwp monitoring"],"runnable":false,"markdown":"\nMainWP centralizes management of WordPress sites from a single dashboard. Hub at `mainwp.abreumovers.com` for WPX-hosted sites.\n\n## 4-Layer Monitoring\n\n| Layer | What | Frequency |\n|-------|------|-----------|\n| Uptime | HTTP status, SSL/domain expiration | 5 min / daily |\n| WP Health | WP/PHP versions, pending updates, disk/DB usage | Every sync / 12h |\n| Security | Vulnerability scanning, malware, firewall status | Every sync / daily |\n| Performance | Lighthouse audits (target: 90+ all categories) | Weekly |\n\n## Alert Priority\n\n| Condition | Severity | Response Time |\n|-----------|----------|---------------|\n| Site down | Critical | 15 min |\n| SSL expiring < 7 days | Critical | Same day |\n| Critical vulnerability | Critical | Same day |\n| Response > 5s | High | 24 hours |\n| Plugin update available | Medium | 1 week |\n| Domain expiring < 30 days | Medium | 1 week |\n\n## Staged Update Pipeline\n\nRun weekly. Monday is update day.\n\n| Stage | Sites | Wait Before Next |\n|-------|-------|-----------------|\n| Detect | Sync all, categorize updates | — |\n| Canary | 1-3 low-risk sites | 24 hours |\n| Non-Critical | Remaining standard sites | 4-8 hours |\n| Critical | High-value client sites (backup first) | 24 hours |\n\nAfter each stage: verify sites load, no PHP errors, uptime stable.\n\n## Connection Troubleshooting\n\n**Check first:**\n1. MainWP Child plugin active on child site\n2. No firewall blocking Dashboard → Child requests\n3. SSL valid on both dashboard and child\n4. Correct URL format (include www or not, must be consistent)\n\n**Common fixes:**\n\n| Problem | Fix |\n|---------|-----|\n| Child not detected | Activate MainWP Child plugin |\n| Cloudflare 403 | WAF → IP Rules → Allow dashboard IP |\n| Wordfence blocking | Whitelist dashboard IP in Wordfence |\n| OPENSSL_ERROR | Reconnect (rotates keys) |\n| Timeouts | Set `max_execution_time = 300` on child |\n\n**Reconnection flow:** Sync → Reconnect → Remove and re-add → Full connection checklist.\n\n## API Access\n\nTwo APIs available:\n\n| API | Auth | Best For |\n|-----|------|---------|\n| REST v2 (`/wp-json/mainwp/v2/`) | Bearer token | Traditional CRUD |\n| Abilities API (`/wp-json/wp-abilities/v1/`) | Application Password | AI agents, automation |\n\nAbilities API has 62 actions covering sites, updates, clients, tags, and batch operations. Destructive operations require `confirm: true` after preview.\n","html":"<p>MainWP centralizes management of WordPress sites from a single dashboard. Hub at <code>mainwp.abreumovers.com</code> for WPX-hosted sites.</p>\n<h2>4-Layer Monitoring</h2>\n<p>| Layer | What | Frequency |\n|-------|------|-----------|\n| Uptime | HTTP status, SSL/domain expiration | 5 min / daily |\n| WP Health | WP/PHP versions, pending updates, disk/DB usage | Every sync / 12h |\n| Security | Vulnerability scanning, malware, firewall status | Every sync / daily |\n| Performance | Lighthouse audits (target: 90+ all categories) | Weekly |</p>\n<h2>Alert Priority</h2>\n<p>| Condition | Severity | Response Time |\n|-----------|----------|---------------|\n| Site down | Critical | 15 min |\n| SSL expiring &#x3C; 7 days | Critical | Same day |\n| Critical vulnerability | Critical | Same day |\n| Response > 5s | High | 24 hours |\n| Plugin update available | Medium | 1 week |\n| Domain expiring &#x3C; 30 days | Medium | 1 week |</p>\n<h2>Staged Update Pipeline</h2>\n<p>Run weekly. Monday is update day.</p>\n<p>| Stage | Sites | Wait Before Next |\n|-------|-------|-----------------|\n| Detect | Sync all, categorize updates | — |\n| Canary | 1-3 low-risk sites | 24 hours |\n| Non-Critical | Remaining standard sites | 4-8 hours |\n| Critical | High-value client sites (backup first) | 24 hours |</p>\n<p>After each stage: verify sites load, no PHP errors, uptime stable.</p>\n<h2>Connection Troubleshooting</h2>\n<p><strong>Check first:</strong></p>\n<ol>\n<li>MainWP Child plugin active on child site</li>\n<li>No firewall blocking Dashboard → Child requests</li>\n<li>SSL valid on both dashboard and child</li>\n<li>Correct URL format (include www or not, must be consistent)</li>\n</ol>\n<p><strong>Common fixes:</strong></p>\n<p>| Problem | Fix |\n|---------|-----|\n| Child not detected | Activate MainWP Child plugin |\n| Cloudflare 403 | WAF → IP Rules → Allow dashboard IP |\n| Wordfence blocking | Whitelist dashboard IP in Wordfence |\n| OPENSSL_ERROR | Reconnect (rotates keys) |\n| Timeouts | Set <code>max_execution_time = 300</code> on child |</p>\n<p><strong>Reconnection flow:</strong> Sync → Reconnect → Remove and re-add → Full connection checklist.</p>\n<h2>API Access</h2>\n<p>Two APIs available:</p>\n<p>| API | Auth | Best For |\n|-----|------|---------|\n| REST v2 (<code>/wp-json/mainwp/v2/</code>) | Bearer token | Traditional CRUD |\n| Abilities API (<code>/wp-json/wp-abilities/v1/</code>) | Application Password | AI agents, automation |</p>\n<p>Abilities API has 62 actions covering sites, updates, clients, tags, and batch operations. Destructive operations require <code>confirm: true</code> after preview.</p>\n"}