Install the WisWes AI chat assistant on Shopware 6

The WisWes Shopware plugin (WiswesWidget) drops into Shopware 6 and exposes 13 PHP MCP endpoints (cart, catalog, guest checkout, order lookup) the Wes shopping assistant calls. One-click connect from Shopware admin — no Twig editing, no token copying.

Requirements

  • Shopware 6.5 or 6.6
  • PHP 8.1, 8.2, or 8.3 (matching your Shopware install)
  • Shell access to your Shopware project root (or your CI / deploy runner)
  • Composer 2.x if you choose Option A
  • Outbound HTTPS access from your Shopware server to https://app.wiswes.com
  • Inbound HTTPS access from app.wiswes.com to your storefront — chat_agent calls back into /wiswes/_mcp/* to operate the cart / catalog / checkout

Option A — Install via Composer (recommended)

The package is published on Packagist as wiswes/shopware-mcp. Versioned, upgradable with composer update, clean rollbacks.

composer require wiswes/shopware-mcp
bin/console plugin:refresh
bin/console plugin:install --activate WiswesWidget
bin/console cache:clear
bin/build-administration.sh   # rebuilds the Vue admin so the WisWes module shows up
Pin a version: use composer require wiswes/shopware-mcp:^0.3 to track the current minor line. We follow semver — patch releases are safe to take, minor releases may add tools, major releases may remove them.

Option B — Clone from GitHub

Use this when you want to read or fork the source, or pin to an exact commit. The repo lives at:

https://github.com/wiswes/shopware

mkdir -p custom/plugins
git clone https://github.com/wiswes/shopware.git custom/plugins/WiswesWidget

# (optional) pin to a release tag
cd custom/plugins/WiswesWidget && git checkout v0.3.0 && cd -

bin/console plugin:refresh
bin/console plugin:install --activate WiswesWidget
bin/console cache:clear
bin/build-administration.sh
Tracking main gives you the bleeding edge — fine for staging, risky for production. Pin a tag for prod.

Option C — ZIP archive

Fastest way to try the plugin without involving Composer or git. Download the latest release ZIP from https://github.com/wiswes/shopware/releases, unzip into custom/plugins/WiswesWidget/, then refresh + activate.

# from your Shopware project root
mkdir -p custom/plugins/WiswesWidget
cd custom/plugins/WiswesWidget
curl -L https://github.com/wiswes/shopware/archive/refs/heads/main.zip -o wiswes.zip
unzip wiswes.zip --strip 1
rm wiswes.zip
cd -

bin/console plugin:refresh
bin/console plugin:install --activate WiswesWidget
bin/console cache:clear
bin/build-administration.sh

Activate the plugin

After any of the three install paths above, confirm the plugin is registered and active:

bin/console plugin:list | grep WiswesWidget

You should see Active: yes. If you see Installed: no, run bin/console plugin:install --activate WiswesWidget.

Connect to WisWes (one click)

  1. Open your Shopware admin → Settings → Plugins → WisWes.
  2. Confirm your shop's URL (auto-filled from the current admin host).
  3. Enter your email — used as the contact for the auto-provisioned WisWes tenant.
  4. Click Install with WisWes.

What happens behind the scenes:

  1. The plugin POSTs to app.wiswes.com/api/integrations/shopware/install with your shop URL + email.
  2. chat_agent finds-or-creates a tenant for your shop, mints a per-install bearer secret, and returns { widget_token, tenant_slug, tenant_secret }.
  3. The plugin persists all three into Shopware's system_config under the WiswesWidget.config.* namespace.
  4. The WidgetInjectionSubscriber picks them up on the next storefront render and injects the <script src="…/embed.js?user_token=…"> tag.

Verify the widget

Open any storefront page in a fresh browser tab. The chat icon should appear in the bottom-right corner within a few seconds. Click it — the widget loads, says hi as Wes, and is ready to take questions about the catalog.

If nothing shows up, check:

  • bin/console cache:clear after the install handshake (storefront caches the rendered HTML aggressively).
  • Browser network tab — is embed.js loading? If 404, the handshake didn't write widgetToken to system_config; re-run the Install button.
  • Outbound HTTPS — does your Shopware server reach https://app.wiswes.com? Some hardened deploys block egress.

Tool surface

The plugin exposes 13 endpoints under /wiswes/_mcp/*, all bearer-token authenticated using the per-tenant tenantSecret. chat_agent's HTTP client routes Shopware tenants through these instead of calling Shopware's Store API directly — so the runtime tools live in PHP code your team can audit and extend.

  • Cart: cart_info · cart_add · cart_update · cart_remove
  • Catalog: product_filter · product_get · category_list · product_filter_options
  • Checkout (guest flow): payment_methods · shipping_methods · set_address · place_order
  • Sales: order_info (guest order lookup by order_number + email pair)
Currently guest-only. No customer login flow yet; logged-in shoppers fall back to the storefront's native checkout. Customer-aware tools (customer_info, order_history) land when the widget's customer auth flow ships.

Disconnect / reconnect

Same admin page → Disconnect button. Stops the storefront from loading the widget. Your WisWes tenant on app.wiswes.com is preserved (so re-installing later restores conversation history); only the local Shopware credentials are cleared.

To reconnect, hit Install with WisWes again. The handshake matches your shop URL to the existing tenant and re-issues a fresh secret.

Upgrade

composer update wiswes/shopware-mcp
bin/console plugin:update WiswesWidget
bin/console cache:clear
bin/build-administration.sh

Tag releases follow semver. Patch is always safe; minor adds tools (LLM picks them up after the next chat_agent tool_configs sync — no action on your side); major may remove tools — check the changelog.

Uninstall

bin/console plugin:uninstall WiswesWidget
composer remove wiswes/shopware-mcp

plugin:uninstall removes the plugin's system_config entries and clears the storefront script tag. Your WisWes tenant on app.wiswes.com is preserved unless you also delete it from the dashboard.

Troubleshoot

Composer can't find wiswes/shopware-mcp

Run composer clear-cache and retry composer require wiswes/shopware-mcp:^0.3. Packagist refreshes within seconds of a tagged push, so this is usually a stale local cache. If still missing, verify packagist.org/packages/wiswes/shopware-mcp resolves.

Admin module doesn't appear under Settings → Plugins → WisWes

Re-run bin/build-administration.sh, hard-refresh your browser (the admin caches bundle JS), then bin/console cache:clear.

Widget script returns 200 with HTML instead of JavaScript

Means the storefront SPA fallback is serving where embed.js should be. Confirm WiswesWidget.config.widgetToken is populated in system_config (it's set by the Install button) and that chatAgentBaseUrl points at https://app.wiswes.com.

The chat answers "I can't help with that" for cart questions

chat_agent uses your tenant's configured tool model (set in the WisWes dashboard → Settings → Models) to decide which tool to call. If you're on a small open-source tool model, switch to Claude Haiku — Shopware's tool surface is sensitive to the LLM's tool-call format and Claude follows it most reliably.

Cart operations work in isolation but the cart resets each turn

chat_agent persists Shopware's sw-context-token in Redis per chat session — make sure your chat_agent has Redis available and the session id is being threaded through. The plugin returns the token in every cart_* response; the HTTP client picks it up and replays it on the next call.

Back to Docs · See also Install for Magento · Install for Shopify