Skip to content
Home SteadyScore documentation Troubleshooting

Troubleshooting

The 10 issues SteadyScore users hit most often, with the fix for each.

1. AI recommendation column shows "None" with an error tooltip

A "None" cell with a hover tooltip means the AI analysis run produced an explicit error for that plugin. The tooltip text narrows the cause:

  1. Read the tooltip. Common messages: license issue, rate-limit message, or upstream provider error.
  2. Confirm Pro is active. Under Settings → License, the plan banner should read Pro Plan. If it has dropped to Free Plan (an expired or deactivated license), AI analysis stops.
  3. Check whether the plugin actually has data to analyze. Path 5 (custom plugins) requires the Source Code Analysis toggle to be on under Settings → Source Code Analysis — if it is off, custom plugins stay N/A.
  4. Re-trigger by deactivating and reactivating SteadyScore. The initial-population job re-queues every plugin for analysis on the next pass.
  5. Contact support at https://steadypress.ai/contact/?subject=SteadyScore with the plugin slug and version, the tooltip text, and your SteadyScore version.

2. License activation failed

The Activate button under Settings → License returns an error toast instead of switching the plan banner to Pro.

Common causes and fixes:

  • License-key typo. Copy the key directly from your SteadyPress account screen — keys are case-sensitive.
  • All slots in use. Your plan has a site activation limit. If every slot is taken, the API rejects the new activation with a "site limit reached" error. Sign in to https://steadypress.ai/account and deactivate a site you no longer use, then retry.
  • Site URL changed. SteadyScore registers your home_url() at activation. If you have migrated the site to a new domain or staging copy and are reactivating with the same key, the API may treat it as a different site. If you see a 409 "domain already registered" response, the plugin treats that as an idempotent success — but if you are running multiple environments under the same key, contact support for help on the cleanest way to manage your slots.
  • Outbound HTTPS blocked. Some firewalled hosts block outbound HTTPS by default. Confirm your site can reach https://api.steadypress.ai/v1/license/activate with curl or a similar tool and ask your host to allowlist the host if not.
  • Server-side downtime. If the SteadyPress API is briefly unavailable, retry in a few minutes.

3. Score is not refreshing

The dashboard shows old data and no recent refresh timestamp.

SteadyScore relies on Action Scheduler, which in turn relies on WordPress cron firing. If your site has no inbound traffic, WP cron never fires and Action Scheduler queues stay pending.

Fixes:

  • Visit the site once. That alone wakes WP cron and starts the queue. If you only see the issue on a low-traffic site, this is the cause.
  • Switch to system cron. Add a cron entry that runs wp cron event run --due-now (WP-CLI) or wp action-scheduler run --batch-size=50 every minute. This is the right answer for any production site.
  • Inspect the Action Scheduler queue. Under Tools → Scheduled Actions, filter by hook prefix steadyscore_. You should see queued or completed jobs. If they show "failed" with a recurring error, copy the message into a support ticket.
  • Force a full re-run by deactivating and reactivating SteadyScore. This re-queues the initial-population job, which walks every installed plugin from scratch.

4. "WordPress.DB.PreparedSQL" warnings in Plugin Check

If you run the official WordPress Plugin Check tool against the SteadyScore ZIP, you will see roughly 117 WordPress.DB.PreparedSQL warnings — and the rest of the report is clean (zero errors, zero trademark warnings).

These warnings are expected and benign. They come from the way Plugin Check's static analyzer reads custom-table $wpdb queries. SteadyScore stores scoring data in six custom tables — not in WordPress options — so it issues $wpdb queries against tables identified by $wpdb->prefix . 'steadyscore_…'. The Plugin Check ruleset flags any $wpdb query whose table name is interpolated from a variable (rather than hard-coded in the SQL string), even when the table-name source is a known prefix constant and the data values are properly prepared with $wpdb->prepare(). Every SteadyScore query is fully prepared; the warning is a false positive of the static rule against the legitimate custom-table pattern. This is the same pattern used by WooCommerce, BuddyPress, and most plugins that maintain their own tables.

If you need to suppress the warnings in your own scan, configure your PHPCS run to ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared and WordPress.DB.DirectDatabaseQuery.* for the SteadyScore directory.

5. Wordfence column shows nothing

Vulnerability data is opt-in. SteadyScore makes no requests to Wordfence until you add a Wordfence Intelligence API key under Settings → Vulnerability Data → Wordfence API Key.

If you have entered a key and the column is still empty:

  • Save the settings. The key only takes effect after the save bar reports success.
  • Wait for the next refresh. Vulnerability lookups happen during scoring runs, not on page load. Wait for the next background refresh, or force one by deactivating and reactivating the plugin.
  • Confirm the key is valid. Test the key with a manual request against https://www.wordfence.com/api/intelligence/v3/vulnerabilities?software_type=plugin&software_slug=akismet using curl -H "Authorization: Bearer YOURKEY". A 401 or 403 response means the key is rejected.

6. A plugin shows N/A

Free SteadyScore only scores plugins listed in the public WordPress.org directory (Path 1) or paid plugins with a free counterpart mapped in its proxy table (Path 2). Custom, internal, and most commercial plugins fall into Path 5 and read as N/A in free.

Pro extends coverage to commercial plugins (Paths 3 and 4) and to custom/internal plugins via source-code analysis (Path 5). If you need any of those, upgrade to Pro. The settings, dashboard, and your existing data all carry forward unchanged.

7. A deleted plugin still shows up in the dashboard

SteadyScore listens for the WordPress delete-plugin hook and cleans up the corresponding rows automatically. If a row lingers after deletion:

  • Reload the dashboard. Often the row clears on the next page load after the cleanup job runs.
  • Force a refresh by deactivating and reactivating SteadyScore. The initial-population job re-detects every installed plugin and reconciles the database.
  • If it persists, send the plugin slug and the deletion method (manual via Plugins → Delete, WP-CLI, FTP) to support so the case can be investigated.

8. The SteadyScore menu disappeared

If the menu item is gone, check Settings → Display Preferences → Menu Placement. If the value is plugins, the SteadyScore menu now lives as a submenu under Plugins, not as a top-level item. Switch back to top_level to restore the top-level position.

If the user does not have the manage_options capability — for example, after a role change — the menu hides itself. Sign in as an administrator.

9. Pro and free conflicts

You do not need to run free and Pro side by side. The Pro ZIP is a superset of free and includes every free feature. Running both simultaneously is unsupported and will produce errors on activation.

If you are upgrading from free to Pro:

  1. Deactivate the free plugin (do not delete — your data stays in the database).
  2. Upload and activate the Pro ZIP.
  3. Under Settings → License, paste your license key and click Activate.

If you are downgrading from Pro to free:

  1. Deactivate the Pro license under Settings → License → Deactivate.
  2. Deactivate the Pro plugin.
  3. Install and activate the free plugin from WordPress.org. Your scoring data carries over.

10. Activation fails with a database error

SteadyScore creates six tables on activation. If your database user lacks the privileges to do that, activation fails with a database error.

Grant the WordPress database user CREATE, ALTER, INDEX, and DROP privileges on the WordPress database, then reactivate. On shared hosting, the easiest path is to drop the database and recreate it through cPanel or your host's control panel with all privileges enabled, then re-import your existing site backup before reactivating.

If activation fails for any other reason, copy the full error from the WordPress admin notice or from wp-content/debug.log (with WP_DEBUG_LOG enabled) into a support ticket.

Anything else?

If your issue is not covered here, please reach out via https://steadypress.ai/contact/?subject=SteadyScore with the details from the Support page. The faster we can reproduce the issue locally, the faster we can fix it.


Need more help? Contact support.