Yasiba← Back to all cases

CASE STUDY / 02

Shopware as the engine. Everything else, built.

Lizaria is a headless commerce platform: Shopware 6.7 handles commerce and administration, and a custom Nuxt 4 SSR storefront handles everything a customer ever sees. The compliance layer, analytics governance, AI assistance, support tooling and performance architecture were all engineered around it.

ClientLizaria
IndustryE-commerce
What we didHeadless architectureNuxt 4 SSR storefrontShopware plugin developmentCompliance, analytics & AI
Year2025

01 / The brief

Sell in five countries without inheriting a theme's limits.

Thirteen country and language combinations, under EU consumer and privacy law, with a storefront that is not constrained by Shopware's templating — and a compliance layer solid enough that the business can actually rely on it.

AT A GLANCE

13country × language locales
72typed tracking events
4custom Shopware plugins
16legal documents, 4 languages

THE STACK

Commerce
Shopware 6.7.2.2 · PHP · Symfony
Storefront
Nuxt 4 · Vue · TypeScript · Nitro SSR
Data
MySQL 8.0 · Redis 7.4
Delivery
nginx · Docker

02 / HEADLESS ARCHITECTURE

No Twig, no theme, no template ceiling.

Every page is a custom Nuxt application consuming Shopware's Store API — routing, navigation, category rendering, listings, account flows and Nitro server endpoints included. Shopware keeps doing what it is genuinely good at: products, orders, pricing and administration.

Homepage product grid
Homepage hero and categories
Homepage lower page footer
All categories page
Category dropdown
Category page
Promotions page logged out
Promotions page logged in

03 / THIRTEEN LOCALES

Country and language are different questions.

Country sets Shopware's context — VAT, shipping, payment methods. Language sets translations and the SEO path. Because product URLs come from Shopware's translated SEO records, switching language resolves the same product's slug in the target language rather than pasting a prefix onto the wrong one.

Region language selector

04 / SEO

Crawlable by construction.

One central layer owns titles, descriptions, canonicals, Open Graph, JSON-LD and robots directives. The sitemap is generated from Shopware across all thirteen locales with cross-language alternates and x-default, category navigation uses real anchors, and the rendered output is asserted in tests rather than assumed.

05 / PRODUCT & REVIEWS

Reviews allowed to be unflattering.

Only verified buyers can leave one, and reviews are never refused, edited or hidden for being negative — the storefront states it plainly and the Shopware moderation module is built around that rule instead of against it.

Product detail
Product reviews
Reviews backend

06 / CART & CHECKOUT

A checkout that survives a change of mind.

Guest and account checkout, address management inside the flow, delivery address switching and Mollie payments. Changing an address at step two costs you neither the basket nor your place in the flow.

Cart
Checkout logged out
Change delivery address
Add new address

07 / CONSENT & GDPR

Consent is a record, not a cookie.

The authoritative decision lives in Shopware with an append-only audit trail, because Article 7(1) asks the controller to demonstrate consent — and a record the visitor can clear from their own browser demonstrates nothing. Consent Mode v2, expiry, a provider catalogue and a visible consent history come with it, and IP addresses are pseudonymised with a per-environment salted hash rather than stored.

Cookie consent banner
Cookie preferences
Consent privacy backend

08 / GDPR REQUESTS

Articles 15 to 21, as a workflow.

Access, rectification, erasure, restriction and portability each have identity verification, a deadline, an export or pseudonymisation path, admin tooling, ACLs and rate-limited Store API endpoints. A data-subject request is a queue item with a clock on it, not an email someone has to remember.

Privacy request settings
Privacy request backend

09 / ANALYTICS

Seventy-two events that cannot quietly misfire.

Nothing calls GA4, Meta or GTM directly. Each event is declared once — consent requirement, payload rules, forbidden fields, deduplication — then passes consent checks, validation and PII redaction before dispatch. The admin module exists to catch the classics: duplicate GA4 tracking, misconfigured enhanced conversions, production traffic landing in Meta's test environment.

Tracking backend

10 / AI ASSISTANT

Liza cannot quote a policy the shop no longer has.

Her facts about returns, delivery, payment and complaints are generated from the same company source as the sixteen legal documents, so the assistant and the terms cannot drift apart. The core assistant keeps working when optional consent is refused; conversation analysis is gated separately, and the AI disclosure is unconditional.

Assistant launcher
Assistant open

11 / SUPPORT

Tickets, replies and notifications in one loop.

A customer opens a ticket from their account — or Liza opens it for them mid-conversation — agents answer inside Shopware, and notifications close the loop on both sides. One thread, rather than an email chain nobody can find three weeks later.

Customer support page
Ticketing backend
Ticketing backend chat
Ticket chat admin reply
Notification system
Send notification

12 / ACCOUNT

The unglamorous screens, done properly.

Login, registration, profile, saved addresses, orders, order detail and the wishlist. These are the pages customers actually return to, so they were built to the same standard as the ones that photograph well.

Profile
Address manager
Orders
Order details
Wishlist

13 / ACCESSIBILITY

Measured, not claimed.

Automated WCAG 2.2 AA checks run at desktop and at 320px and 400% zoom, and a separate harness verifies that each of the seventeen accessibility preferences genuinely changes the rendered page. The current baseline carries no serious or critical violations; manual screen-reader and keyboard passes stay part of the process.

Accessibility system