You have a Shopware 6 store and want to build your own frontend with Vue, React, Next, or Nuxt. Welcome to the headless world. Here, you separate the shop logic from the storefront, retrieve all data via the API, and design the frontend exactly as you need it. Sounds like a lot of freedom. And it is. But without a plan, things can quickly get chaotic.
In this article, I'll show you how to approach headless commerce with Shopware 6 in a structured way. You'll learn how the APIs are structured, how to cleanly connect your frontend framework to the shop, and which pitfalls to avoid. All this from the perspective of a developer who likes to laugh but doesn't compromise when it comes to architecture.
If you want to delve even deeper into the topic of headless commerce with Shopware 6, it's worth taking a look at the Official overview of Headless Commerce at ShopwareThere you'll get a good overall view of the platform's headless capabilities.
What exactly does Headless Commerce with Shopware 6 mean?
Headless Commerce means a strict separation between backend and frontend. Shopware 6 handles products, prices, customer data, shopping cart, and checkout. Your frontend framework retrieves this data via the API and presents it on your website, app, or in the store kiosk. Communication takes place via clearly defined endpoints and JSON. No templates from the core. No Twig loops in the Shopware theme.
The major advantage lies in the freedom on the frontend. You can build a landing page in Next.js, a mobile app in React Native, and an in-house ordering system with Vue. All of them communicate with the same Shopware 6 system. The backend remains your single source of truth for commerce data.
If you'd like to review the basics of headless e-commerce at your leisure, a neutral overview like this one will be helpful. Basic article on headless e-commerceThis will help you clearly understand what headless means in architecture and channels.
The architecture of Shopware 6 in a headless setup
Shopware 6 follows an API-first approach. Almost everything you do in the admin panel can also be done via an API. Two main areas are relevant for headless environments: the Store API and the Admin API. Both support HTTP and JSON, but they have different tasks and target audiences.
Store API – your source for all shop data in the frontend
The Store API provides everything your customer experience needs: category structures, product lists, product details, search results, shopping cart, customer account, and checkout. You use this API directly from your frontend framework. With it, you can build classic pages like categories, products, and search, as well as personalized homepages and dynamic widgets.
The key here is to structure your calls clearly. You need a central layer in the frontend that encapsulates all Store API calls. No random fetch calls in every component. Instead, have a separate module for product data, one for customers, and one for the cart and checkout. This way, you maintain an overview, can implement logging, and add caching later.
Admin API – the control center for master data and integrations
You primarily use the Admin API in a backend context. It manages products, prices, inventory, customer data, and orders from external systems. Typical examples include: ERP Integrations, PIM connections, or a custom backend tool for Content Management. The Admin API usually requires separate authentication with a client credential flow.
The Admin API is indirectly important for your headless frontend. It ensures that your Shopware 6 system always has up-to-date data. You should be familiar with it to understand how products and content are imported into the system and why certain fields appear the way they do.

Headless Shopware – E-News for ambitious developers – read up to speed – 🛒Headless Commerce with Shopware 6 – how to cleanly connect the frontend framework and API shop⚙️
Selecting the right frontend framework
For headless commerce with Shopware 6, many teams end up with Vue or React. There are Shopware PWA approaches, starter templates, and example projects. However, you shouldn't be guided solely by hype or your favorite framework. First, think about your team, your maintenance, and the surrounding systems.
Typical options are a classic SPA or an SSR variant with Next.js or Nuxt. For e-commerce, I prefer SSR plus hydration because you have better control over performance and SEO You get this. Your pages can be rendered server-side and are still interactive like a single-page app.
A responsive, mobile-first design is absolutely crucial. Users shop on the go. Most reach for their phone first, not their desktop. Your headless frontend should be designed for small screens from the very beginning. Navigation, filters, search, and checkout must run smoothly on smartphones. Desktop access is almost a bonus after that.
Preparation in Shopware 6: Integrations and API access
Before connecting your frontend framework to Shopware, you need to properly configure the API access in your shop. In Shopware 6, you'll find the "Integrations" section under "Settings and System" in the admin area. There, you create your own API clients, assign keys, and define permissions. This clearly separates which application is allowed to access which resources.
For a customer-facing frontend, you typically need access to sales channels, products, categories, prices, and media. An internal tool might require different permissions. It's better to create multiple integrations and grant each only what it actually needs. This keeps your system lean and reduces risks.
A good introduction to API concepts and integrations is provided by the official Shopware documentationThere you will also find instructions on setting up integrations and working with the API in everyday practice.
Your first request: from access token to product list
Getting started with a headless frontend usually involves three steps. You set up API access, test initial requests with a tool like Insomnia or Postman, and then transfer these calls to the frontend framework. Take your time with this part. If you work carefully here, you'll save yourself many hours of troubleshooting later.
In the simplest case, you first obtain an access token for your sales channel's Store API. Then you retrieve a product list for a category. In the frontend, you build an initial product overview based on this. Once that's up and running, you can add pagination, filters, and sorting options. Step by step, not all at once.
// stark vereinfachtes Beispiel für einen Fetch Call im Frontend
const response = await fetch('https://dein-shop.de/store-api/product', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'sw-access-key': 'DEIN_SALES_CHANNEL_KEY'
},
body: JSON.stringify({
filter: [
{ type: 'equals', field: 'product.active', value: true }
],
includes: {
product: ['id', 'name', 'cover', 'calculatedPrice']
}
})
});
const data = await response.json();
You can see that you can specify filters, includes, and other parameters. This allows you to control which data you receive and how large your payload will be. This is very important for performance and clarity. You should only retrieve data that the frontend actually uses.
Cleanly structure the API layer in the frontend
If you're working with headless commerce, you should consistently encapsulate your API calls in the frontend. Create a dedicated service layer for Shopware. This layer should only contain functions like getProducts, getProductById, search, addToCart, updateCart, and placeOrder. Components should not access Fetch or Axios directly, but always through these service functions.
This allows you to centrally control authentication, error handling, logging, and caching. If endpoints change or new parameters are added, you only need to make adjustments in one place. Your components remain lean and focused on rendering and user interactions. This makes the project more robust and easier to maintain.
Optimize performance in headless setup
Headless commerce gives you a lot of design freedom. At the same time, you have greater responsibility for performance. Shopware 6 provides a well-structured API. However, how fast the pages feel depends largely on your frontend. You should pay attention to loading time, rendering path, and data volume from the very beginning.
Use caching on multiple levels: browser cache, framework cache, and an API cache. For products and categories, you can store frequently used data in the frontend and only update it when needed. Use lazy loading for images and parts of the page that won't be relevant until later. Implement skeleton states so users can see that something is happening.
A monitoring tool can also help you. Measure Time to First Byte, Largest Contentful Paint, and the most important Core Web Vitals. If you check these regularly, you'll recognize early on when a new feature is slowing down your site. Then you can make adjustments before your conversion rate suffers.
Clean error handling and debugging of your API calls
A headless architecture without good error handling quickly feels broken to users. You should give every API call a clear strategy for error messages. From a frontend perspective, there are roughly three categories: technical errors, such as network problems or timeouts; business errors, such as invalid voucher codes; and unexpected system errors in the shop.
You need separate responses in the UI for each category. A technical error can be explained with a short message and a retry button. Functional errors require a clear explanation of what went wrong and how the user can correct it. System errors should be logged and, if possible, reported centrally. This allows the team to react quickly.
Log both the request and response in an environment you have access to. Avoid using sensitive data such as plaintext passwords or complete credit card information. Focus on endpoints, status codes, and relevant IDs. This will allow you to specifically reproduce and resolve problems.
Typical pitfalls in headless commerce with Shopware 6
Many problems in headless projects revolve less around code and more around coordination. Some are building the frontend, others the ERP or PIM. Shopware 6 sits in the middle. Without clear API responsibilities and clean interface descriptions, things will become confusing. Therefore, ensure a shared API document and clearly defined responsibilities.
Another classic mistake is an excessive number of requests. Each product card loads details, images, and prices individually. The same applies to navigation and filters. You should always check which information you can bundle into a single request. Use includes and search points. Think about aggregations, facets, and the design of your lists early on.
One final pitfall is neglecting SEO. Just because your frontend is headless doesn't mean it should be blind to search engines. Use server-side rendering or static site generation, build well-structured headings, meta tags, and easily readable URLs. Keep content and commerce separate but coordinated. Blog, Advice and product world should be considered together.
Practical ideas: What you can implement with Headless and Shopware 6
With a headless setup based on Shopware 6, you can build far more than a classic shop front. You can develop a product consultation tool for tablets within the store, a configurator for complex products, or a community platform with direct integration to the shopping cart and checkout. Everything accesses the same Shopware data.
Things get really interesting when you combine personalized homepages, dynamic campaign sections, and cross-channel content. Users then see products on the homepage that match their behavior. At the same time, you can run tests and try out different variations in the background. This creates a continuously improving customer experience, all while being centrally managed by one system.
If you like, you can also get inspiration from a developer guide, for example through a German Shopware API Guide for DevelopersThis shows you how other teams model the interfaces and integrate them into their architecture.








As a Shopware developer from the very beginning, I have to say: The development from version 5 to version 6 was enormous, and Headless was a bold but correct step. ShopwareThe Store API is really well done, and the documentation has improved significantly in the last two years.
What I've noticed in my daily work is that more and more customers are specifically asking for headless solutions. Three years ago, this was still a niche topic; now it's almost mainstream. Demand is definitely rising, and not just among large enterprise customers.
What pleases me is that even smaller agencies are now venturing into headless projects. The know-how is spreading throughout the entire ecosystem. Good for everyone! 👍
@Momme Carstensen: Yes, exactly, the editorial team continues to work in the Shopware backend. Products, categories, CMS pages, etc. are maintained there – as usual. The API then retrieves the data automatically. For the editors, nothing actually changes in their daily work.
The only difference is that some special layouts might require some manual intervention from a developer, as the custom blocks aren't automatically transferred. But for standard content, everything works out of the box. Your editorial team has nothing to worry about! 📝
A question for the practitioners here: How do you handle content updates? With us, the editors create the product descriptions directly in ShopwareEven with a separate frontend, they still have to work in the backend, right? And the API then applies the changes live?
We're currently considering whether to take the plunge, but the editorial team is concerned that it will complicate things…
Finally, an article that doesn't just list the advantages, but also honestly addresses the challenges! That's refreshing. At our agency, we've already implemented several headless projects, and yes, it's not always a walk in the park.
The biggest stumbling blocks from our experience:
1. Underestimated time required for API integration
2. Lack of know-how within the team regarding modern frontend frameworks
3. Hosting complexity (Node.js server, CDN, etc.)
4. Debugging is more difficult when problems occur at the interface.
But once you've overcome these hurdles, the result is simply better. The shops perform faster, are more flexible, and are easier to develop further. You just have to be realistic in your planning!
@Inken Boysen: Great question! A/B testing is indeed easier with headless systems because you can control it entirely in the frontend. We use Optimizely in combination with our React frontend for this. The tests run client-side, and you don't have to change anything on the backend.
The big advantage: You can also test structural changes, not just text and colors. For example, we once tested completely different checkout flows against each other – that would have been very time-consuming with standard Shopware.
The only downside is that setup takes a little longer because you have to implement the testing logic yourself. But once it's set up, it's fantastic!
This article really helped me understand the concept better! As a marketing manager, headless development always seemed too technical to me. But now I understand why our developers are so enthusiastic about it. The ability to launch new landing pages faster, without having to wait for backend changes, is fantastic for us marketers!
One more thing I'd like to know: What about A/B testing? Is it easier or more complicated with a headless setup than with a traditional one? Shopware?
@Tjark Nissen: I totally understand! Headless isn't for everyone. For a bookstore with a manageable selection, it would be absolute overkill. A well-maintained, standard shop with good descriptions is much more important than technical gimmicks. Sometimes less is more! 📚
I have to ask a critical question: What about accessibility? Classic Shopware themes at least offer basic accessibility features. If you build everything yourself, you have to implement WCAG compliance completely from scratch. That's often underestimated.
We currently have a client in the healthcare sector who absolutely must be accessible. Headless computing presents a real challenge there because you really have to build everything from the ground up with accessibility in mind. Keyboard navigation, screen reader support, contrast… it all adds up quickly.
Fantastic product! As a B2B supplier of industrial equipment, we have very specific requirements: tiered pricing, customized catalogs, and complex ordering processes. With the classic Shopware Frontend was always a pain. Since we switched to headless, we can solve everything much more elegantly.
What's particularly brilliant is that we now have a separate portal for major clients with its own interface, yet it still runs on the same Shopware backend. All orders end up in the same system, but the user experience is completely different. I highly recommend headless for B2B!
The initial effort was significant (6 months of development), but it was absolutely worth it. Our major clients are thrilled with the new platform.
As a project manager at a digital agency, I can confirm: Headless Commerce is definitely on the rise. However, it's important to have a realistic estimate of project timelines. We calculate at least 3-4 months of development time for a complete headless setup. That's longer than for a traditional theme project, but the result is also significantly more flexible.
One aspect I found somewhat lacking in the article is maintenance and updates. With a headless setup, the frontend and backend need to be updated and tested separately. This means more effort during operation. For customers without their own IT department, this can quickly become expensive.
@Imke Thomsen: Honestly, with 500 products and self-management, I would prefer the classic approach. Shopware stay. Headless mode makes particular sense if you:
– Wants to serve multiple frontends (web, app, kiosk)
– Highly individual designs are needed
– A development team has
– High traffic expected
For a solid wine business, standard shopware is perfectly adequate and much easier to maintain. Better to invest your energy in good product photos and descriptions! 🍷
Hmm, I'm still skeptical. We're a small family business with a wine shop and we've only just started... Shopware 6 migrated. Headless sounds great, but isn't that overkill for us? We maybe have 500 products and do everything ourselves. Is the effort really worth it for smaller shops?
I would appreciate an honest assessment!
@Thore Jansen: Good question! We tested exactly that in a client project. With server-side rendering (SSR) in Nuxt.js, the SEO results are even better than with the classic setup. Google can easily crawl the pages and the Core Web Vitals They're great. The trick is to do the rendering on the server and not leave everything to the client. Then you won't have any problems with indexing.
However, this requires a Node.js server, which slightly increases hosting costs. But if you prioritize performance and SEO If you value this, it's definitely worth it!
Wow, that hits the nail on the head! As a frontend developer, I've been working with Vue.js for two years and Shopware Six in total. The Store API is really well documented, and the flexibility you get with a headless setup is unbeatable. It's the perfect approach, especially for customers who want custom designs. You're no longer bound to standard templates and can really get creative.
One more thing I'd like to add: the learning curve shouldn't be underestimated! Anyone who has only worked with classic Shopware templating before will first have to familiarize themselves with the API logic. It takes a few weeks before you're truly productive.
Nevertheless, Headless is definitely the future for demanding e-commerce projects!
Finally, a well-researched article on headless commerce! We deliberated for a long time about whether to take the plunge with our online bike shop. The clear separation of frontend and backend sounds great in theory, but in practice, there are quite a few pitfalls. The API integration, in particular, gave us a headache at first. But after three months of development, everything is running smoothly, and performance is significantly better than before. Loading times have improved by almost 60%!