Connecting your store
The five-minute handshake that puts your catalog inside ChatGPT, Claude, Gemini and Perplexity.
Prerequisites
- ✅ Plugin installed and activated
- ✅ A WooCommerce REST API key with Read scope (how to generate)
The handshake
Open Settings → xpay
In WordPress admin, Settings → xpay.
If you just activated the plugin, you’re already there (post-activation redirect).
Click “Connect store”
The blue “Connect store →” button opens app.xpay.sh/onboard/woocommerce in a new tab, passing your site URL and a one-time nonce in the URL.
Sign in or sign up on xpay
If you have an xpay account, sign in. If not, you can create one with the same email; verification is instant.
Paste your WooCommerce REST API key
The onboarding page shows a form with two fields:
- Consumer key — paste your
ck_… - Consumer secret — paste your
cs_…
Click Approve & Connect.
Backend handshake (under the hood — automatic)
Behind the scenes:
- xpay validates your nonce against the one the plugin pre-registered.
- xpay mints a
merchant_slug(derived from your site domain) and an API key for the plugin. - xpay writes the encrypted credentials to its database and bootstraps an empty catalog feed at
https://agent-feed.xpay.sh/catalog/{slug}.json. - xpay POSTs back to your site at
/wp-json/xpay/v1/finalizewith the merchant slug + API key. - The plugin stores these locally and kicks off an immediate catalog sync.
- Within ~30 seconds, your catalog feed shows your real products.
Verify
Switch back to your WordPress admin → Settings → xpay.
The “Connect your store” card should now be a “Connected” card showing:
- Merchant slug (e.g.
yourstore-com) - A clickable Catalog feed URL
- “Last sync: ~30 seconds ago”
Scroll down — the Audit readiness table should now show all 8 rows as ✓ Ready in green.
Where everything lives after connecting
From 0.7.0 the plugin adds an xpay✦ Commerce menu in the WordPress sidebar, separate from the settings page you just used:
| Screen | What it answers |
|---|---|
| Dashboard | Which AI assistants are reading your store, and how ready it is for them |
| AI Revenue | Which orders came from an AI assistant — with the match rate, so you know what share of your store the number covers |
| ChatGPT Ads | Whether your store can advertise, and campaign performance once it can |
| Product Feed | Which products are missing a description, image, price or identifier |
| Tracking | Whether a ChatGPT Ads pixel is present — including one installed by another plugin |
| Storefront | Exactly which AI-facing surfaces shoppers can see, each with a switch |
Settings has not moved. Connecting, disconnecting and every option stay at Settings → xpay, exactly as before — the new menu links to it. Existing bookmarks keep working.
The Dashboard, AI Revenue and Product Feed screens read your own WordPress database and work without connecting, so you can see AI crawler traffic before deciding to connect anything.
What’s now public
Once connected, three things are live for AI shoppers:
| URL | What it is |
|---|---|
https://yourstore.com/llms.txt | Plain-text guide for AI assistants. Points at your shop, sitemap, and the discovery file below. |
https://yourstore.com/.well-known/agentic-commerce.json | Structured handoff descriptor. Tells AI shoppers where your catalog feed lives and where to send a buyer. |
https://agent-feed.xpay.sh/catalog/<your-slug>.json | The ACP-shaped JSON feed of your products. AI shoppers read this directly. |
These three files together are what makes you discoverable in AI chat.
Behind the curtain — the cart deeplink
When an AI agent (ChatGPT, Claude, etc.) wants to send a buyer to you with a pre-filled cart, it calls our backend at agent-commerce.xpay.sh/v1/<slug>/cart with the items it wants in the cart. We:
- Validate the SKUs against your cached catalog (must be in stock, must match a real product on your site).
- Sign a short-lived (15-min TTL) JWT containing the cart contents + your merchant slug.
- Return a URL of the form
https://yourstore.com/?xpay_cart=<token>. - The agent renders that URL as a “Buy” button.
- The buyer clicks → lands on your store → the plugin verifies the JWT → populates
WC()->cart→ redirects to your existingwc_get_checkout_url(). - From here on, your existing checkout is in charge. xpay sees nothing.
- After the buyer completes checkout, the WC order is tagged with
_xpay_agent_attributionso you can report on AI-driven revenue using your existing WooCommerce reporting.
Reconnecting / rotating keys
If you regenerated your WC REST API key, click Disconnect under Settings → xpay, then Connect store again with the new credentials. The connect flow is idempotent — your merchant slug is preserved, the api key rotates in place, and your catalog feed URL doesn’t change.
What’s next
- → Privacy & telemetry — opt in / opt out of anonymous lifecycle events
- → Audit readiness checklist — what each of the 8 ✓ rows means
- → Troubleshooting — if something stayed yellow