When WordPress is slow,
get the plugin's name.
"The site is slow" is not a diagnosis. Wakora traces every request through WordPress and answers with a name: which plugin ate 40% of the page time, which query ran 30 times in a loop, which hook burned the CPU. Without touching your theme, and without ever restarting php-fpm behind your back.
Attribution, not averages
Traces are WordPress-aware: time is attributed to plugins and themes by reading where each hook callback actually lives. The result reads like a verdict — "this plugin holds 21% of sampled page time on this site" — instead of a latency graph you still have to interpret. N+1 query patterns are detected automatically: the endpoint, the repeated query and the count, folded into one insight instead of four thousand events.
Three layers, each earning its keep
Layer one is zero-touch: request rates, error rates and response times per site, visible minutes after install, no code changes. Layer two adds method-level traces — the full waterfall from the request through hooks to every SQL query — staged by the agent and activated by your reload click. Layer three samples CPU flame graphs from outside the process, so even the 3 a.m. mystery load has a stack trace with file names. Old fleets are welcome: flame graphs work from PHP 7.2, traces from 8.1.
The parts of WordPress that break quietly
Every vhost is discovered from the real web-server config and watched as a site:
certificate expiry (including origins hiding behind a CDN), DNS health, domain
registration lapses and drop-catches, and a signal most stacks miss — a site whose PHP
backend is gone, answering 502 to every dynamic request while its static cache still
smiles at your uptime check. Bot storms hammering wp-login and probing for
wp-config are counted and separated from real breakage by response status,
so scanners do not page you at night.
What your visitors actually feel
Real User Monitoring captures Core Web Vitals — LCP, CLS, INP — plus JavaScript errors and rage clicks, injected automatically, with no theme edits. Visitor IP addresses are not stored: geography is resolved at ingest and the address is dropped, which keeps your privacy policy short. A slow field report connects to its backend trace, so "checkout feels sluggish in Italy" lands on the exact SQL query that caused it.
Dense hosting native
Aliases and www fold into one site, probes pace themselves on a rotating budget, and the console shows the exact folded list you are billed on.
Mixed PHP fleets
Multiple php-fpm versions on one box are handled per pool, per version. Each site gets the deepest layer its PHP carries, stated honestly.
Guardrails first
Instrumentation is built to fail open: if anything about a site's setup would break it, that site is skipped with a reason — never a white page.
Frequently asked
Will enabling APM restart my php-fpm?
Does it work on shared hosting with hundreds of sites?
Which PHP versions are supported?
Find the plugin before the client finds you.
Three hosts free, response times in minutes, traces when you say so.