WooCommerce integration
The WooCommerce integration ships as a WordPress plugin that authenticates to the Zubby SaaS using a Bearer token + an X-Store-ID header. Once paired, the plugin syncs your catalog over WooCommerce’s REST API, exposes an endpoint the SaaS uses to pull live cart and customer data, and auto-injects the widget on every storefront page.
WordPress requirements
Get the plugin
From your Zubby dashboard click Connect store → WooCommerce. We generate a one-time setup code and a download link for the latest plugin build, both scoped to the workspace you’re logged into.
Install in WordPress
Open the WordPress admin
Go toPlugins → Add new → Upload plugin.Upload the zip
Choosesalespilot-ai.zip, click Install now, then Activate.Open the settings page
FindZubby AIin the WordPress sidebar, or visitSettings → Zubby AI.
Pair with setup code
Paste the six-character code from the Zubby dashboard and click Pair. Behind the scenes the plugin:
- Calls
/api/v1/stores/woo/pairon the SaaS with the code and your site URL. - Receives a long-lived store token, encrypts it with the WordPress salts, and stores it in the
wp_optionstable. - Registers itself as a webhook endpoint for product, order, and customer events.
API base URL
The plugin defaults to https://api.zubbyai.com. If you’ve been routed to a private region (EU, AU) by support, change it under Advanced → API base URL before pairing.
| Region | Base URL |
|---|---|
| Default (US-East) | https://api.zubbyai.com |
| EU (Frankfurt) | https://eu.api.zubbyai.com |
| AU (Sydney) | https://au.api.zubbyai.com |
First catalog sync
Click Sync now. The plugin paginates through products in batches of 100, posts them to the SaaS, then waits for the embedding worker to finish before flipping your store status to green. Big stores stream for a few minutes; you can leave the page and check back.
Verify the wiring
Two health checks confirm the plugin is talking to Zubby:
- The settings page header shows Paired in green with your store ID and the time of the last successful ping.
Dashboard → Catalogin Zubby lists the product count you’d expect.
How the widget gets onto your storefront
By default the plugin injects the widget loader via WordPress’s wp_footer hook on every storefront page. If you’ve built a custom theme that doesn’t call wp_footer, see the widget bridge guide for manual injection.
Troubleshooting
Four issues account for almost every WooCommerce install problem:
| Symptom | Fix |
|---|---|
| Plugin activates then crashes with a fatal error. | You’re on PHP < 7.4. Upgrade PHP from your host’s control panel; the plugin won’t boot below 7.4. |
| “Could not reach Zubby API” on pair. | Your host blocks outbound HTTPS to api.zubbyai.com. Whitelist the domain, or disable any “lock-down” mode in WordFence/Sucuri. |
| Catalog sync stuck at 0%. | WooCommerce REST API permissions blocked. Re-pair, or check WooCommerce → Settings → Advanced → REST API for revoked keys. |
| 401 on cart events. | Token rotation drift. Click Rotate token on the plugin settings page; it re-issues a fresh secret. |
Self-hosted plugin notes
The WooCommerce plugin ships as a standard WordPress plugin archive. If you’re forking it for a private region or air-gapped host, point your build step at your fork’s release archive — and keep the plugin’s text domain and option keys unchanged so upgrades and stored credentials keep resolving.
Sample API call (advanced)
If you want to verify the auth from the WP-CLI:
# From WP-CLI on the WooCommerce host
wp option get salespilot_ai_store_id
wp option get salespilot_ai_token | head -c 8
# → sk_live_
curl https://api.zubbyai.com/api/v1/plugin/woocommerce/ping \
-H "Authorization: Bearer $(wp option get salespilot_ai_token)" \
-H "X-Store-ID: $(wp option get salespilot_ai_store_id)"
# Expected: { "ok": true, "lastPingAt": "2026-..." }Uninstalling
Deactivate the plugin from WordPress’s Plugins page. The Zubby SaaS receives a teardown event, revokes the store token, and clears the encrypted secret from wp_options. Workspace analytics persist for 90 days in case you reinstall.