Seekmodo developer docs
Reference for the REST shim, MCP JSON-RPC surface, and storefront connectors. Authenticate with HMAC; replay window is 5 minutes.
Troubleshooting · WordPress & WooCommerce connector
Both verticals ship in the same plugin (seekmodo-wordpress), so the same troubleshooting playbook applies whether you're running the content vertical, the commerce vertical, or both on the same site.
"Connect to Seekmodo" fails
Symptoms: the admin button bounces back with Pairing failed or the seekmodo.com browser tab hangs.
- Is
wp_remote_post()allowed outbound? Some hosts firewall outbound HTTPS to non-allowlisted hosts. Allowlistmcp.seekmodo.comandseekmodo.com. - Is the WP site's clock skewed more than 5 minutes from real time? HMAC signing uses
time(); greater than 5 minutes drift produces Invalid timestamp errors. Runwp cli infoand check the system time. - Try the CLI flow:
wp seekmodo connect --tenant=… --secret=…— bypasses the browser round-trip and surfaces verbose errors.
Wordfence-running sites
A few merchants hit a "Connect lands on wp-admin" symptom because Wordfence's WAF intercepts the return GET. If pairing still fails after upgrading to v0.3.1+:
- Wordfence → Firewall → Allowlisted URLs → add
wp-admin/admin-post.php?action=seekmodo_wp_connect_callback - Wordfence → Firewall → Brute Force Protection → confirm "Lock out users after how many forgotten password attempts" isn't catching the connect bounce.
Search returns nothing
In MODE=active or enforce with the gateway down, the connector falls through to native WP search. If you're seeing literally zero results:
wp seekmodo health— shows current mode, breaker state, gateway last-reach timestamp.- Check
wp-content/uploads/seekmodo-shadow.logfor circuit-breaker open events. - Force native by setting
wp option update seekmodo_wp_mode offand try again — confirms WP's native search still works.
Index never updates
wp seekmodo index --status # cursor + last-tick timestamps
wp cli event list | grep seekmodo
wp seekmodo index --delta -v # verbose, prints per-doc actions
wp seekmodo index --full # force a full reindexIf wp cli event list shows seekmodo_wp_index_tick in the past with no recent runs, your wp-cron is stalled — set up a system cron driver instead of relying on request-driven wp-cron.
Storefront host is wrong (e.g. staging clone returns null)
This is the expected behavior of the domain lock — see the connector's Multi-environment installs section. To resolve:
# Confirm the canonical host on admin.seekmodo.com:
wp option get seekmodo_wp_storefront_host
# If wrong, fix on admin.seekmodo.com (Tenant -> Storefront domain) and
# force a snapshot pull instead of waiting 5min:
wp seekmodo refresh-configIf you're moving from a dev / staging mirror to a fresh production hostname, use the connector's self-service promote flow instead of editing the option by hand: Settings → Seekmodo Search → Promote dev to production.
Breaker stuck open
The breaker opens for 60s after 5 consecutive 5xx within 30s. If you've fixed a gateway-side issue and want to clear it immediately:
wp option delete seekmodo_wp_breaker_stateThe next request reinitializes a closed breaker.
Typeahead first row is invisible / white-on-white
Symptom: the dropdown renders rows correctly except the very first one, which only becomes visible when the user hovers or arrow-keys onto it.
Cause: the theme's style.css (or a similar global sheet) has a bare a:visited { color: #fff } rule — a holdover from styling nav links on a dark hero. That selector is (0,1,1) specificity. Your typeahead row anchor selector is also (0,1,1), so source order decides — and the theme's main style.css almost always loads later, so it wins. The bug only hits the first row because that's the most-clicked / most-likely-:visited URL.
Fix: bump the row anchor selector to (0,2,1) by chaining the link pseudo-classes:
.my-typeahead__result a,
.my-typeahead__result a:link,
.my-typeahead__result a:visited {
color: var(--your-row-text-color);
}"Class not found" after upgrade
The opcache has a stale path. Clear opcache:
wp eval 'opcache_reset();'
# or restart PHP-FPM
sudo systemctl reload php-fpmUseful one-liners
# Last 10 shadow-mode divergences:
wp seekmodo shadow-report --tail=10
# Aggregated shadow-mode signal over the last 24h (jaccard, top-N match):
wp seekmodo shadow-report --window=24h
# Pretty-print current options:
wp option list --search='seekmodo_wp_*' --format=table
# Force a fresh tenant.snapshot pull:
wp seekmodo refresh-config
# Gate before flipping to active:
wp seekmodo cutover-readiness --window=7dWooCommerce-specific gotchas
- Products don't show up in the typeahead, only blog posts do. Run
wp seekmodo index --fullto seed products, variations, brands, and stock state into the gateway. The commerce vertical's indexer is delta- driven onwoocommerce_update_productand friends, so a freshly-paired site needs the initial full reindex before the dropdown can render product cards. - Variation prices are wrong / missing. v0.3.0 realigned the commerce schema to gateway-canonical field names (
name,url,in_stock,sale_price,currency). On existing tenants, run theadd-woocommerce-commerce-fields.phpmigration on the gateway side before the v0.3.0 connector points at them, then bump the schema version withwp seekmodo index --fullto repopulate. - On-sale / out-of-stock badges aren't rendering. The connector's typeahead config exposes
i18n.on_saleandi18n.out_of_stockstrings; some heavily- customised themes filterseekmodo_typeahead_configand accidentally drop thei18nkeys. Re-attach them via the same filter or remove the customisation.
When to escalate
Email [email protected] with:
wp seekmodo diagnoseoutput — one-shot bundle of options, cron state, breaker state, last 50 shadow-log lines.- Your tenant ID.
- The exact
MODE=value and the timestamp of when the issue started.
Security issues: [email protected] — see also our security disclosure policy.
Want a hands-on walkthrough? Contact support — we'll diagnose the diagnose output with you over chat.