Magento merchants selling in the EU keep getting the same demo: a chat bubble that “knows your products” and a slide that says GDPR. The useful questions are narrower. Where does the catalog live? Who is the controller for shopper messages? What still leaves the Union when a model generates an answer? Claspwell is a catalog-aware Magento 2 / Hyvä sales assistant with an EU hosting target. This article is the buying version of /security — not a certificate wall.
If you only need a paragraph, start here. Production chat and catalog for merchant stores target Hetzner in the EU (Frankfurt). Magento credentials are encrypted at rest. Visitor IPs are stored as SHA-256 hashes. Conversations have a retention window (default target: 90 days). Question text may go to an inference provider for Tier-3 answers. We do not claim SOC 2 or ISO. The commercial page is /magento-2-ai-chatbot.
Controller, processor, and the Magento storefront
Under GDPR, the merchant is typically the controller for shopper conversations on their store. The chatbot vendor acts as a processor under the merchant’s instructions where that relationship applies. That split matters more than a homepage badge. If a vendor will not say who is controller for chat logs, stop the demo. Claspwell’s public claim matches /legal/privacy and the Magento landing: merchants remain controllers; we process on their behalf for the product.
The storefront widget is not a second CRM. It starts a session with a public store key after origin checks and captcha (hCaptcha). OpenAI keys and Magento OAuth credentials never ship to the browser. Session JWTs carry a verified store_id. That is both a security control and a data-minimisation control: the widget does not get to pick another tenant’s catalog or history. See /blog/hyva-alpine-storefront-chat-widget for the Hyvä loading model.
What EU hosting should actually mean
“EU hosting” is not “a CDN POP in Amsterdam.” For a Magento chatbot it should mean catalog rows, retrieval indexes, conversation logs, Magento credentials, and backups live on EU-hosted infrastructure you can name. Claspwell’s backend target is Hetzner in Frankfurt. We do not send the Magento catalog to a US-only search SaaS as the system of record.
Ask vendors to name the region, what is encrypted at rest, and what is hashed versus stored in the clear. If the only proof is “we use a global cloud” without a region, you are buying a slogan. Magento merchants who already argue about Adobe Commerce hosting regions should apply the same scepticism to the chat backend.
Tenant isolation is a GDPR control
German, Swedish, and Slovak storefronts are separate tenants on purpose. Catalog, knowledge, and conversation history never mix across store_id. Origins are allow-listed per store. That is how you avoid a shopper in one country seeing another store’s SKUs — and how you keep a deletion request from turning into a scavenger hunt across a shared blob.
Essential and Growth are one store each. Scale covers up to three store tenants on one contract. Agency is quoted for larger estates. Pricing is per store on /pricing because isolation is not free. More on /blog/magento-ai-chatbot-multi-store.
Inference providers and the honest caveat
Most Magento AI chatbots eventually call a model. Claspwell routes most turns on scripted and light-intent paths so a full GPT call is not the default. When Tier-3 contextual generation runs, question text may be sent to an inference provider (for example OpenAI). That is not a catalog dump. It is still personal data if the shopper typed an email or order number into the box. Merchants should treat prompts as in-scope for their DPA, not as “the model is magic so GDPR paused.”
We do not claim that every token stays inside Frankfurt. We claim the catalog, credentials, and conversation store we operate target EU hosting, with hashed IPs and a deletion path. That is a stricter sentence than “GDPR-compliant AI.” Buyers who need a private model inside their VPC should say so on the discovery call rather than assume Essential includes it.
Retention, deletion, and what we store
Visitor IPs for chat sessions are stored as SHA-256 hashes, not as a marketing profile. Conversations use a limited retention window (default target: 90 days) and can be deleted via product APIs. Model calls receive question text — not a stitched personal profile we never collected. Magento credentials stay encrypted at rest. Secrets are not logged.
If you need a custom retention for a larger estate, that is an Agency conversation, not a hidden Essential toggle. Abuse controls (rate limits by IP, session, and store) exist so one storefront cannot become an open proxy for the rest of the fleet.
What we will not print on a badge
We do not claim SOC 2. We do not claim ISO 27001. We do not claim a live Magento inventory API on every chat turn. We do not claim Stripe checkout. We do not claim Magento auto-install. EU Magento buyers who have been burned by invented certifications should treat missing badges as a filter for honesty, not as a missing column on a comparison grid.
Catalog freshness is a plan feature (daily, hourly, or 15 minutes), documented on /blog/magento-chatbot-price-stock-validation — not a GDPR substitute. Stale stock is a commercial risk; invented warehouse counts are a trust risk.
A short vendor checklist
Ask every Magento chatbot vendor: Where is the catalog stored, by region? Are Magento OAuth secrets in the browser? Is store_id verified on the server? What is hashed versus stored in the clear? What is the conversation retention and deletion path? Which inference providers see prompt text? Is there a DPA, and who is controller?
Then compare the answers to /magento-2-ai-chatbot and /product. Request a guided install at /request-integration when the answers are specific. Magento install is included; typical calendar time is 1–2 weeks after access is ready. There is no self-serve checkout in v1.