Troubleshooting
Why data isn't showing up — causes ordered by how often they actually happen.
Work down this list in order. It is sorted by frequency, not by severity, so the first few entries cover most cases.
No data at all
Is the site connected?
Open ChangeTrace in WordPress. If you see the connect screen rather than a status table, it is not connected and nothing is being collected — every collector stops at that check.
Is WP-Cron running?
This is the most common cause, by a distance. ChangeTrace relies on two scheduled WordPress jobs, and WP-Cron only fires when someone visits your site.
Symptoms: connection succeeded, status table looks fine, no data ever appears. Or Last heartbeat says "No heartbeat sent yet" more than an hour after connecting.
Check wp-config.php for:
define( 'DISABLE_WP_CRON', true );If that is set, a real cron job must replace it, running at least every five minutes:
*/5 * * * * curl -s https://yourstore.com/wp-cron.php?doing_wp_cron > /dev/nullA very low-traffic site has the same problem without the constant — no visitors, no cron.
Quick test: click Send test heartbeat. It bypasses WP-Cron entirely. If the test succeeds but nothing arrives on its own, WP-Cron is your answer.
Is the site in safe mode?
If you moved, cloned or restored the site to a different domain, sending stops on purpose. The ChangeTrace screen says "Sending paused (safe mode)".
Can your server reach the API?
Outbound HTTPS to api.change-trace.com must be allowed. Blocked by a firewall or by
WP_HTTP_BLOCK_EXTERNAL, connecting fails with "could not reach the ChangeTrace API".
define( 'WP_ACCESSIBLE_HOSTS', 'api.change-trace.com,app.change-trace.com' );Is the queue backing up?
The status table shows queued events. Zero or a small number is fine. A number that only grows means sends are failing.
After repeated failures the plugin backs off — doubling from one minute up to an hour — so recovery looks slow even once the cause is fixed. The queue holds 500 events; beyond that the oldest are dropped.
Has it aged out?
Free keeps 7 days. Data older than your plan's window is deleted nightly.
Specific symptoms
"Heartbeat Missing" but my site is fine
It probably is fine. That state means only the plugin has not checked in, and says nothing about whether your site is reachable. Causes, in order: WP-Cron not running, the plugin was deactivated, safe mode, blocked outbound requests.
Only Down means your site is genuinely unreachable, and ChangeTrace proves that from outside before saying it.
Sales dropped but I got no incident
Check sales-drop detection. The usual reasons:
- Fewer than 7 days of history — a new site is quiet for about a week
- The drop was under 40%
- The drop was within your normal swing — the 3σ test
- It opened as a warning and warnings do not email by default
I got an incident but no email
Warning-severity incidents do not email. Only critical does, and only to organization owners. Full checklist →
The incident has no ranked causes
Three possibilities:
- It is less than 30 minutes old. Correlation runs on a schedule.
- It is an infrastructure outage. DNS, TLS, a dead host — ChangeTrace refuses to blame a plugin for those. Why →
- Nothing changed. A real and useful answer: look outside your site.
My first plugin update did not appear
Expected. The first pass records your plugins and theme as a baseline and emits nothing. Changes after that are compared against it.
A change made over SFTP or WP-CLI took ages
Those fire no WordPress hook. ChangeTrace catches them with a periodic reconcile that runs when someone next loads wp-admin, at most once every five minutes.
JavaScript errors are missing
Sampled at ~25% of page loads, capped at 5 per load, duplicates collapsed. Rare errors may never be sent. Why →
PHP warnings are missing
Only fatals and explicitly-raised user errors are collected. Notices and warnings are too noisy.
Revenue is zero but I have orders
- Wait ten minutes — aggregation is not instant.
- Confirm WooCommerce or EDD was active when the orders were placed. The collectors only register if the commerce plugin is loaded.
- Check the Timeline for
order_createdevents. Present but no revenue means aggregation; absent means collection.
The currency is wrong
Taken from your store's setting on the most recent order. Change it in WooCommerce or EDD and it updates after the next order and aggregation pass.
"Site limit reached"
Free covers one site. Delete an unused one to free the slot, or ask about a plan.
"That token belongs to a different site"
Tokens are bound to a domain. Each site needs its own connection — reuse across staging and production is not possible.
Still stuck
Use the Need help? widget, bottom-right of every dashboard page. It attaches the page you were on, and the incident if you were looking at one. Replies come by email.
Useful to include: your domain, what you expected, what you saw, and what the WordPress status table shows.

