WordPress Plugins
Free Tools
Claude Skills
Pricing Blog Switch to Royal Plugin Graveyard Support My Account Cart
Support/SEObolt/Analytics Not Populating

Analytics Not Populating

Your SEObolt Analytics tabs are empty when they shouldn't be. This guide walks the three-rung escalation ladder in order of frequency (fixes ~90% of cases), then covers eight specific edge cases with narrower failure modes. Start at the top, stop as soon as data appears.

Quick Fix: 3-Rung Escalation Ladder

Work through these in order. Most empty-tab reports resolve at Rung 1 or Rung 3 (the ~2-day GSC data lag catches a lot of brand-new sites).

Rung 1: Click Refresh on the Analytics page

The Analytics page (SEObolt → Analytics) has one shared Refresh button in the header row, next to the date-range selector. It's not per-tab, there's just the one. Clicking it forces a fresh pull from Google for the currently-visible tab. The first fetch takes 20-60 seconds because Google needs to build the initial query result; subsequent refreshes are near-instant thanks to the cache.

Takes 30 seconds. This is the fix roughly 60% of the time.

Rung 2: Verify GSC + GA4 connections are still healthy

OAuth tokens occasionally expire, and a Google-account permission change on Google's end can silently break the property link. Head to SEObolt → Settings → Connections and check the cards:

  • Green Connected badge with your Google email + property name = healthy.
  • Yellow Not connected badge, or the property picker showing up again unexpectedly = reconnect. Click Connect with Google and re-run the OAuth flow (see the GSC and GA4 setup guides).
  • Red error text on the card = the last API call failed with a specific error. Read the error, then follow the matching edge case below (property mismatch, rate limit, etc.).

Rung 3: Give it time (GSC has a ~2-day data lag)

Google Search Console publishes each day's data ~2 days after the fact. This is a Google-side delay, not a SEObolt bug. If you connected GSC yesterday and there's no traffic in the last 3 days, the tabs will genuinely be empty until GSC ships that batch. GA4 is near-realtime for engagement metrics, but its acquisition and attribution reports also lag ~24 hours.

Wait 48 hours after connecting on a low-traffic or brand-new site before assuming something is wrong.

Still empty after all three rungs?

Move on to the specific edge cases below. Each one covers a narrower failure mode with a concrete fix.

Specific Edge Cases

Eight narrower failure modes, grouped by where the data flow is breaking. If Rungs 1-3 didn't fix it, one of these almost certainly applies.

1. GSC returns zero rows for a domain you know is getting search traffic

Symptom: Property is connected, GSC on google.com shows real traffic for the site, but SEObolt's Dashboard / SEO Performance / Keywords tabs are all empty.

Cause: Property URL mismatch. GSC distinguishes between Domain properties (all subdomains + all protocols) and URL-prefix properties (one specific protocol + subdomain). A URL-prefix property for https://example.com/ will NOT return data if your traffic is landing on https://www.example.com/, and a Domain property covers both but only exists if you added it that way in GSC.

Fix: Open search.google.com/search-console, look at your property list, and identify which property is actually accumulating data. If SEObolt selected a different one, go to SEObolt → Settings → Connections, click Disconnect on the GSC card, then reconnect and pick the correct property from the picker. If GSC only has one property but it's the wrong shape (URL-prefix when you needed Domain, or vice versa), add the correct property inside GSC first, verify ownership, wait for Google to backfill (usually ~24 hours), then reconnect from SEObolt.

2. Refresh spinner never resolves (caching plugin interference)

Symptom: Refresh button spins indefinitely; browser network tab shows the admin-ajax request completing (200 OK) but no data lands on the tab.

Cause: A handful of caching plugins (LiteSpeed Cache, WP Rocket in some configs, W3 Total Cache with object cache enabled) can intercept the admin-ajax response and serve stale or empty content.

Fix: Temporarily deactivate your caching plugin, click Refresh once on each Analytics tab, then re-enable the plugin. If that resolves the issue, add /wp-admin/admin-ajax.php to your cache-exclusion list so cached responses never intercept the real fetch. Every major caching plugin has an admin-ajax exclusion setting; check its documentation for the exact toggle name.

3. Data was there yesterday, now the Keywords tab is suddenly empty

Symptom: Refreshes that used to work now return empty responses. Other tabs might still work.

Cause: Google's Search Console API has quotas: documented at 50,000 queries per day per user and 1,200 queries per minute per site. Heavy manual refreshing across many keywords, other tools pulling from the same GSC property (Ahrefs, SEMrush, direct API scripts), or multiple sites sharing one Google account can chew through the daily allocation.

Fix: Quotas reset daily on Google's clock (Pacific Time). Usually all you need to do is wait a few hours and retry. If you consistently hit rate limits, either reduce refresh frequency (SEObolt caches for a while by default; don't hammer Refresh) or split heavy properties across separate Google accounts.

4. Fresh install, just connected, tabs still empty after Refresh

Symptom: Clicked Refresh, waited briefly, no data. First-ever fetch on a brand-new install.

Cause: The first data fetch on a fresh connection can take 20-60 seconds because Google needs to build the initial query result for a property that hasn't been queried before. If you clicked Refresh and navigated away or clicked another tab before that finished, the response was discarded. The button will still look idle on your next visit, but the underlying cache is empty.

Fix: Click Refresh again and let the tab sit undisturbed for a full minute. Don't click other tabs, don't refresh the browser page, don't navigate away. Once the first fetch completes, subsequent refreshes are fast because the cache is warm.

5. OAuth completed but the connection card still says "Not connected"

Symptom: You went through the full Google OAuth flow, approved the scope, got redirected back to WordPress, but the connection card in SEObolt → Settings → Connections still shows the Connect button and no green badge.

Cause: Your browser blocked the callback redirect from Google back to your WordPress admin. Common culprits: strict tracking-protection settings (Brave, Safari's Intelligent Tracking Prevention, Firefox's Total Cookie Protection), an ad-blocker rewriting the callback URL to strip the OAuth code / state parameters, or a corporate / VPN proxy stripping the OAuth state.

Fix: Retry from a different browser (Chrome or Edge with all extensions disabled is the reliable test), or an incognito / private window in your current browser with all extensions off. If that works, whitelist your WordPress admin URL in your normal browser's tracking-protection settings, or add an ad-blocker exception for /wp-admin/. Corporate proxies may need an IT ticket to allow the OAuth state parameter through.

6. Stuck on the "Google hasn't verified this app" screen

Symptom: The OAuth flow shows a red warning triangle and the message "Google hasn't verified this app," with a blue "Back to safety" button. You're not sure whether to proceed.

Cause: This is expected. The Royal Plugins OAuth app is registered under our organization and is pending Google's formal app-review process. Google shows this warning for every unverified app regardless of who published it, until the review completes on Google's timeline.

Fix: On the warning screen, click Advanced at the bottom-left (Google's default is the blue "Back to safety" button on the right). Below Advanced, a small link appears: Go to Royal Plugins- (unsafe). Click that link to continue. Your Google credentials never leave Google during OAuth; SEObolt only receives a read-only access token limited to the scopes you approve on the next screen. The word "unsafe" is Google's standard boilerplate, not a warning specific to Royal Plugins.

7. WordPress Dashboard widget shows "Connect GA4" even though GA4 is connected

Symptom: The SEObolt widget on the WordPress main Dashboard (/wp-admin) displays the Avg Time on Page card as -- with a "Connect GA4" link, but you already connected GA4 successfully from Settings → Connections.

Cause: Two possibilities. Either (a) the GA4 property you selected genuinely has no session data yet (fresh install with no traffic, or gtag.js isn't running on the site so nothing is being tracked), or (b) the widget's cached connection-state is stale from before you completed the OAuth flow.

Fix: First confirm on analytics.google.com that the property has traffic in the last 30 days (check Realtime; if that's empty, your tracker isn't running, see the GA4 Tracking Code install section). If GA4 has data but the widget still shows Connect GA4, reload the WordPress main Dashboard page with a hard-refresh (Ctrl+Shift+R / Cmd+Shift+R) to force the widget to re-query the connection state.

8. Duplicate GA4 tracker warning

Symptom: The GA4 Tracking Code card on SEObolt → Settings → Connections shows a yellow Duplicate GA4 detected! warning banner.

Cause: SEObolt detected another gtag.js script already loaded on your site, typically from a separate Google Analytics plugin, a theme option that injects it, or a Google Tag Manager container that fires GA4. Running two sources of the same tracker causes double-counting on every event, which corrupts your GA4 stats.

Fix: Pick one source and turn the other off. If SEObolt is your simplest install, disable the other plugin or theme option and let SEObolt handle it. If you're already using Google Tag Manager (which is Google's recommended pattern for multi-tool setups), leave GTM in charge and toggle SEObolt's Enable Tracking checkbox off. Never leave both running.

Still Stuck?

If none of the above resolved your empty-tab situation: