Chat for Shopware: Your DACH Customers Expect Precision

March 5, 2026 Platform Guide
Chat for Shopware: Your DACH Customers Expect Precision

Shopware is the go-to platform in the DACH market. German buyers expect precision. Here's what a webhook-based chat assistant looks like for Shopware 6, including message queues, sales channel mapping, and service decoration.

Shopware is the default choice for serious e-commerce in Germany, Austria, and Switzerland. The platform is technically strong: sales channels, multi-currency, Symfony-based architecture, proper message queues. But few chat tools integrate at the product catalog level for Shopware. Most offer a generic widget that doesn't know what you sell.

I built an Emporiqa plugin for Shopware 6 because DACH stores have specific needs: multi-currency support, sales channel isolation, and clean extensibility through service decoration. A chat assistant for these stores needs to respect all of that.

What Your Customers Get

The chat assistant handles three types of conversations:

  • Product discovery: Customers search in natural language. "Warme Jacke zum Wandern" or "gift for dad under 50 euros" returns relevant products using hybrid search (vector + keyword). Works across 65+ languages, so a German customer can find products described in English.
  • Customer support: Questions about shipping, returns, and store policies get answered from your CMS landing pages. The assistant references your actual content, not generic answers.
  • Order tracking: Optional. If enabled, customers can check their order status directly in the chat.

When the assistant isn't confident, it escalates to your team with the full conversation context.

Why Webhook Architecture for Shopware

The plugin uses Shopware's event subscriber system. ProductSubscriber listens for product write and delete events. OrderSubscriber listens for configurable order state transitions. When an event fires, the plugin dispatches a WebhookMessage to Shopware's message queue.

This means webhook delivery is fully async. Saving a product in the admin is instant. The message queue worker picks up the event and delivers it to Emporiqa in the background. Failed messages get retried automatically by the queue.

For the initial sync, the plugin provides both CLI commands (bin/console emporiqa:sync:products) and an admin dashboard with a sync button and progress tracking.

Handling Shopware's Complexity

Sales channel isolation: Shopware's sales channel architecture means the same product can appear in multiple storefronts with different prices, currencies, and languages. The plugin auto-detects your storefront sales channels and generates channel keys from their names. Products and pages are filtered by channel so each storefront's chat assistant only knows about that storefront's catalog.

Multi-currency: Prices sync in all currencies configured for each sales channel. The widget passes the active currency to the assistant, so a customer browsing in CHF sees Swiss Franc prices, not Euro prices. Tax display modes (gross, net, or both) are configurable.

CMS pages: Shopware's content model uses CMS pages for landing pages and shop pages. The plugin syncs both: landing pages directly, and shop pages (static content categories like "About Us" or "Shipping Info") that have CMS content attached.

Multilingual: Products sync with translations from all channel languages, consolidated into one payload per product. Cross-language search works here: a query in French finds German-described products if the meaning matches.

Categories: Product categories sync with translated hierarchical paths. A product in "Electronics > TVs" in English appears as "Elektronik > Fernseher" in German.

Customization

All core services use interfaces and follow Shopware's standard decoration pattern:

  • ProductFormatterInterface: modify product data before it's sent
  • CmsPageFormatterInterface: modify page data
  • WebhookClientInterface: replace the HTTP client
  • ConfigServiceInterface: override configuration resolution
  • SyncServiceInterface: override sync orchestration
  • ChannelResolverInterface: customize how sales channels map to Emporiqa channel keys

If you need to add custom product fields, change how prices are formatted, or modify the sync logic for your specific setup, you decorate the relevant service in your own plugin. No core modifications needed.

The plugin also dispatches events at key points: PreSyncEvent and PostSyncEvent around full syncs, PostProductFormatEvent and PostPageFormatEvent after formatting, and PostOrderFormatEvent after building order payloads. You can listen to these to filter, enrich, or log data without decorating a full service.

Cart and Checkout

With cart operations enabled, customers can add products, update quantities, remove items, and proceed to checkout directly from the chat. The plugin exposes storefront API endpoints at /emporiqa/api/cart/* that the widget calls through a global EmporiqaCartHandler. Shopware's native cart widget refreshes automatically after each operation, so the mini-cart stays in sync.

For logged-in customers, the widget fetches a signed user token so the assistant can personalize the conversation. The token is generated server-side using HMAC-SHA256 and cached in the browser session.

What This Doesn't Do

The plugin handles product sync, page sync, cart operations, order tracking, conversion tracking, and the chat widget. It does not:

  • Send abandoned cart emails or SMS
  • Replace your CRM or helpdesk
  • Provide voice search
  • Work below Shopware 6.6.0 or on Shopware 5

Order tracking is optional. Without it, customers asking about orders get handled by the support agent instead.

Is This the Right Fit?

If your Shopware store serves customers across multiple languages or currencies, or if your team answers the same product and policy questions repeatedly, a chat assistant that knows your catalog will save that time. The conversion tracking dashboard shows whether it's driving revenue: chat sessions to cart adds to purchases.

If your store has a small catalog and your customers always navigate directly to what they want, the value is lower.

Getting Started

Create a free Emporiqa account ($25 credit on signup) to test the integration before committing. The plugin is available via Composer today; the Shopware Store listing is currently in review. Install it, connect to your store, run a sync, and see how the assistant handles your catalog. The Shopware documentation covers the full setup.

See Emporiqa for Shopware 6 for the overview, or create a free Emporiqa account and follow the Shopware setup guide to get started.

Rosen Hristov, Founder & CEO of Emporiqa

Rosen Hristov

Founder & CEO at Emporiqa

Connect on LinkedIn

Share this article

Related Articles

Try It On Your Store

Connect your products and watch the salesperson handle real shopper questions on your catalog.

  • $25 of signup credit
  • $0.25 per conversation, capped
  • No card required