WordPress monitoring checks in Shadow
Whether you would find out when something breaks: 404 monitoring, error logging, the fatal error handler, automated backups, analytics, and whether WordPress's scheduled tasks are running.
There are 10 checks in this family. Shadow reports what it finds, and nothing is changed until you approve a fix.
In this family
- 404 Monitoring
- Analytics Installed
- Application Health Checks Registered
- Backups Automated
- Error Logging
- Fatal Error Handler Enabled
- Required PHP Extensions Loaded
- Scheduled Posts Not Stuck
- System Cron In Production
- WP Cron Reliable
What each check looks at
404 Monitoring
Checks that a 404 error monitoring or redirect management solution is active so broken URLs are captured and can be fixed or redirected.
Why it matters. Undetected 404 errors mean broken links and lost visitors are invisible. A 404 monitoring plugin captures these events and enables orderly redirects, recovering SEO equity and improving user experience. Without it, site owners cannot know which URLs are broken or where traffic is being lost.
Analytics Installed
Checks that an analytics solution (Google Analytics, Plausible, Matomo, etc.) is active so the site owner has visibility into traffic and user behaviour.
Application Health Checks Registered
Checks whether custom Site Health tests are registered or a monitoring plugin is active, ensuring application-specific issues surface in the WordPress Site Health screen.
Backups Automated
Checks that an automated backup plugin is active and, where detectable, that a schedule has been configured to protect site data from loss.
Why it matters. Automated backups are the last line of defence against data loss from plugin conflicts, hacks, botched updates, or accidental deletion. Many site owners rely on hosting-level backups, but without an independent on-site backup scheduled there is no guaranteed recovery path.
Error Logging
Checks that WordPress error logging is configured for silent capture (WP_DEBUG_LOG on, WP_DEBUG_DISPLAY off) so errors are recorded without being shown to visitors.
Why it matters. Proper error logging captures PHP and WordPress errors silently to a log file without exposing them to site visitors. Two failure modes are common: errors displayed publicly (security/UX risk) and logging completely disabled (operators cannot see faults occurring on the site).
Fatal Error Handler Enabled
Checks that WP_DISABLE_FATAL_ERROR_HANDLER is not set to true. When disabled, fatal PHP errors produce a blank white screen with no admin email alert and no recovery mode, making the site unrecoverable without server access.
Required PHP Extensions Loaded
Checks that PHP extensions required by WordPress and common plugins are loaded, including an image library (GD or Imagick), mbstring, curl, openssl, and json.
Why it matters. WordPress and its plugin ecosystem depend on several PHP extensions that are not guaranteed on all hosting environments. Missing extensions produce silent, difficult-to-diagnose failures: image uploads silently fail when both GD and Imagick are absent, international content is corrupted when mbstring is missing, and dozens of plugins fail to make outbound API calls without curl. Surfacing missing extensions early prevents hours of debugging after a site goes live.
Scheduled Posts Not Stuck
Checks for posts scheduled to publish automatically that were never published, which indicates a broken WP-Cron setup.
System Cron In Production
Checks whether WordPress WP-Cron is configured for reliable execution. The recommended production setup disables the built-in visitor-triggered cron in favour of a real server cron job.
Why it matters. WordPress WP-Cron runs on page load by default. On low-traffic sites this means scheduled tasks may be skipped for hours. On high-traffic sites it adds latency to every request. The optimal configuration for production is to disable WP-Cron and instead use a real server cron job that calls wp-cron.php on a fixed schedule.
WP Cron Reliable
Checks for a high volume of significantly overdue WP-Cron events, which indicates the cron runner is blocked or not executing reliably.
The other check families
- Accessibility (12)
- Code quality (7)
- Database (12)
- Design (17)
- Performance (63)
- Security (46)
- SEO (28)
- Settings (29)
- Health and workflows (7)
Shadow is free and runs on your own server, with no account. The source is on GitHub, and these descriptions come from it.