Skip to content
Stone & Water

PIM for Shopware 6: the Shopware PIM plugin right in the admin.

With the Shopware PIM plugin you edit hundreds of articles and variants in seconds. CSV import in all languages. Variant matrix with patterns. Custom fields per language. Snapshots to undo changes. AI text generation with four providers (ChatGPT, Claude, Mistral, Gemini). All directly in the Shopware admin - no ETL tool, no third-party system.

01
Overview video

The Shopware PIM plugin in 1:42 minutes.

Dashboard, product list, filters, bulk edit, AI texts, variants, categories, CSV, feeds and approval workflow - once through the whole plugin, directly in the Shopware admin. What a PIM does in general is explained in the guide What is a PIM for Shopware?

PIM for Shopware

1 / 1
02
AI text generation

Generate Shopware product texts with AI - with ChatGPT, Claude, Mistral or Gemini.

Descriptions, meta titles, meta descriptions and keywords in every language of your shop - at the push of a button. Four providers (OpenAI, Anthropic, Mistral, Google), all usable in parallel with provider selection per generation. The overview: AI product descriptions for Shopware.

AI texts with Claude

1 / 1
Claude · Anthropic

Strong on longer, nuanced texts

Own API key, own model choice, own tone default - completely independent.

Models: Sonnet 5 · Sonnet 4.6 · Opus 4.8 · Fable 5 · Haiku 4.5

ChatGPT · OpenAI

Fast, cost-effective generation

Proven for large volumes. Own key/model/tone configuration here too. Connection test directly in the admin.

Models: GPT-5.6 Sol · GPT-5.6 Terra · GPT-5.6 Luna · GPT-5.5 · GPT-5.4 mini · GPT-5.4 nano

Mistral AI

Strong European models

Good value, own key/model/tone default, connection test in the admin.

Models: Mistral Large 3 · Medium 3.5 · Small 4

Gemini · Google

Very fast flash models

Large context windows, own key/model/tone default, connection test in the admin.

Models: Gemini 3.1 Pro · 3.5 Flash · 3.1 Flash-Lite

Provider switch

All configurable in parallel

When several providers are active, pick the right one per call in the generator modal - Claude for the demanding main description, a flash model for fast meta data, for example.

Per language

Individual texts per channel & language

Each channel-language combination gets unique texts. Or generate once and write the same text to all selected combinations - you decide per run.

Tone

Five style templates

Professional, casual-modern, premium/luxury, technical-factual or emotional-promotional. Set a default per provider, override per generation.

Context chips

You control what the AI sees

Which product data flows into the prompt? Name, manufacturer, properties, category, price - selectable via chip. Plus own keywords for SEO focus.

Bulk-edit

AI in bulk too

In bulk edit, ChatGPT and Claude generate texts for many products at once and DeepL translates - each with its own switch in the config matrix. The number of parallel requests is adjustable for ChatGPT and Claude. Mistral and Gemini are not available there.

Safety

Review first, then apply

In the detail view, generated texts appear in a preview first and are only saved with "Apply texts". In bulk edit the AI writes directly into the selected fields; a snapshot saves the previous state beforehand.

Central instruction

Master prompt for every provider

Set salutation, brand spelling, mandatory information or forbidden phrasings once - the instruction travels with every request, in the detail view as well as in bulk edit and regardless of the provider.

Lengths

Targets per field in words and characters

Product name 120 characters, SEO title 60, meta description 155, description 250 words - the lengths search engines display in full. The values also drive the token budget, so the response no longer breaks off mid-JSON.

Starting text

Copy from the default language

A channel with its own language but no own texts? Name, description, meta fields and keywords can be copied over from the default language - only then does the AI have something to rewrite in that language. By default only empty fields are filled.

New field

The product name as well

Besides description, meta title, meta description and keywords, the AI now also writes the product name - for ChatGPT as well as Claude. Not preselected, so existing names are not overwritten by accident.

Large runs

Saved in batches instead of product by product

Generated texts are collected and saved in blocks: for 2000 products the number of save operations drops from over 2000 to around 40. On request limits the run waits and retries automatically.

03
Bulk-edit

Bulk edit Shopware products: more than 40 actions in one run, with snapshot, live progress and undo.

Instead of touching every product individually: set filter, select all, choose actions. By default every bulk operation creates a snapshot of the state before. Something wrong? One click on restore - the previous state is back. See how to bulk edit Shopware products in practice.

Bulk edit

1 / 1
Including variants

The source decides which articles are affected.

Affected are the marked rows or all hits of a saved preset. Whether the variants of the selected products are changed as well is set by "Include variants by default" in the config matrix. Individual actions such as "Essential characteristics" deliberately write only to the selected articles, so variants keep inheriting from the parent.

40+ actions

What's bulk-editable

  • Status, top seller, closeout, free shipping, EAN, release date
  • Manufacturer, essential characteristics, warranty, categories, tags, properties
  • Visibility per sales channel, cross-selling, tier row from 1
  • Sales price: fixed price, raise or lower by % or €, purchase price + % or purchase price + €
  • Pseudo price (list price), link, unlink or prescribe tier prices
  • Stock, tax class, order quantities and purchase steps
  • Weight, dimensions, delivery time, restock time, packaging unit
  • Base price (content quantity + base unit), product unit
  • Meta title, meta description and SEO URL as a template, main category per channel, canonical variant
  • Custom fields (also per language)
  • AI & texts, generate variants, clear fields, delete
Data inheritance New

From parent to all variants

In bulk edit, "Transfer to variants" copies the price tiers and cross-selling of the main product to all variants, joined by "Visibility to variants" and "Properties to variants". In the detail view you pick price, pseudo price, purchase price, stock, delivery time, weight & dimensions, EAN and further fields individually.

Snapshots

Before-state + one-click revert

By default every bulk edit creates a snapshot of the state before. It is managed and restored in the config matrix, tab Snapshots.

  • Kept for 90 days by default, at most 50 snapshots, both adjustable
  • Diff per product and field: snapshot against the current state in the shop
  • Not restorable: generated or deleted variants and deleted products
Live progress

Progress in real time

Even with 500+ products, no black-box feeling: live counter, phase indicator (snapshot / apply), ETA calculation and cancel button mid-operation.

Scope

Source: selection or preset

The bulk operation is based on a manual selection or a saved preset. The article count with products and variants is shown right in the dialog.

  • From current selection: selected rows
  • From preset: all filter-matching products, up to 500 by default, adjustable to unlimited
  • Variants according to "Include variants by default"
Filter display New

Complete overview of all active filters

When you choose a preset as the source, its filters appear as readable chips: for example status, stock, with/without variants, manufacturer, categories, dynamic product group, sales channel, tag, tax, delivery time, price and weight. IDs are resolved to clear names. "No filters active" is marked red as a warning.

Confirmation

First the overview, then the run

With "Confirmation before applying" (default) the dialog lists all planned changes before the start. Delete and clear fields always ask for confirmation. With "Automatically revert on cancel" the snapshot takes back changes already written.

Validation New

Required-field errors as clickable modal

Save with empty required fields: instead of a wall of warning banners, a modal opens listing all errors. Clicking an error jumps directly to the relevant section - it expands, the field is briefly highlighted with an indigo outline.

Assignment

Add property translations on the spot

Options without a translation are marked and counted - the pencil icon lets you enter the translated name immediately, several languages at once, without leaving the Shopware property catalogue. The check runs against the languages of the assigned sales channels.

Master product

Also assign to the master product

A checkbox additionally writes the selected properties to the parent product of the affected variants, and removes them there in removal mode. That way master product and variants never drift apart.

Clear fields

Clear custom fields selectively

Besides master data, SEO and link fields, custom fields can be cleared as well - per language and with a snapshot, so it stays reversible. Deliberately selected individually rather than with a select-all switch.

Warranty

Maintain the GARAN label

Warranty period in months and retailer confirmation as their own section in the master data, inheritable per variant and settable in bulk edit. Shopware has the fields from 6.7.14; in older installations the section is visible but locked.

04
Variant generator

Generate Shopware variants: 100 variants in 10 seconds, with patterns and preview.

Variant maintenance in the Shopware admin is tedious. Our generator does it visually: pick properties, click options, define patterns for SKU and name, check preview, generate. More on how to generate Shopware variants.

Create variants

1 / 1
Unified search New

One search for properties and options

Instead of two separate search fields: a single search at the top filters properties and options simultaneously. Type "red" and all groups with the option "red" remain visible while matches on the right are highlighted.

Pattern accordions New

SKU + name as separate accordions

Instead of raw inputs side by side: two dedicated accordions. Collapsed they show the current pattern as a chip; expanded the input appears with clickable variable chips.

  • Variables: {parentNumber}, {firstVariantNumber}, {parentName}, {options}, {option1}-{option3}, {group1}, {group2}, {counter}
  • Live preview of the first 5 combinations
  • Config matrix as default, override per operation
Variant matrix New

Prices, stock and status in one table

Instead of opening variants one by one: all of them in a matrix. From two property groups on, the rows show the options of one property (e.g. colour), the columns those of the other (e.g. size). In each cell you edit the selected value directly.

  • Cell value selectable: price, stock or active
  • Default view and default value in the config matrix
  • Up to 500 variants (default, adjustable)
Safe deletion

Variant deletion with order check

You delete variants of many articles in bulk edit, tab "Generate variants". The plugin checks whether orders refer to the variants.

  • "Only without orders" (recommended): variants with orders are skipped
  • "Delete ALL variants": including variants with orders
  • Preview with the number of deleted and protected variants
Inheritance

Transfer properties and images to variants

As soon as a variant has an own value it inherits nothing in that field - which is why fewer properties or no image at all sometimes appear in the storefront. Two buttons add the missing properties, or create own image assignments including the cover image.

Visibility

Spot deviations immediately

Properties that only sit on variants are highlighted in orange, affected groups get a dot and the counter bar states the number. Groups without "display on product detail page" are marked "not in storefront".

Duplicating

Choose inheritance when duplicating

When duplicating a variant product, a dialog asks which fields the variants should inherit: images, name, price, weight, EAN. The new master product receives its own correct SEO URL instead of pointing at the original through its main variant.

05
Product listing & overview

All Shopware articles at a glance - parents and variants.

A single listing for the entire product catalogue. Parents are shown with their variant count, expandable inline, and totals are always visible - above and below the table.

Listing

Parents + variants in one listing

Display in the format Products: 153 (Variants: 543) - separated, above and below the pagination.

  • Expand variants inline directly in the table
  • Badge with variant count per product
  • Lazy-loading: variants load only when expanded
Inline edit

Edit directly in the row

Stock, price, EAN, manufacturer number and weight edit directly in the listing row - also for variants. Click the value, change, done.

  • Active switch per product
  • Saved when leaving the field, with a message on success or error
  • Inherited values of a variant highlighted
Quickview New

Master data in a modal - no detail switch

A click on a variant in the listing opens a compact modal with master data, prices, availability and SEO. Ideal for maintaining variants one after another.

  • Prices (gross/net), purchase price, pseudo price, omnibus price
  • Stock, closeout, free shipping, delivery time
  • Fields selectable in the config matrix (tab Variants)
Filters

Filters with AND / OR

Combine arbitrary filter conditions. Also across variant fields - search automatically traverses parent and child fields.

  • Text and number 8 operators each (e.g. contains, starts with, greater/less, is empty), yes/no 2
  • AND or OR per filter set
  • Variant-aware: also matches parents with matching variants
Presets

Save and load filter presets

Define frequent filter combinations once, restore with a click - perfect for recurring maintenance.

  • Stored in the shop database, available to all users
  • Optionally shown as a quick filter right above the list
  • Source for bulk edit, feeds and category assignment
Performance

Native list virtualisation

For large lists (1000+) the browser only renders visible rows - via content-visibility: auto. Smoother scrolling without UI change.

  • Row count: 10 / 25 / 50 / 100
  • Variants load only when expanded
  • Quick-scroll-to-top button
Translations

Find missing translations precisely

The "translation missing" filter is resolved server-side against exactly the selected language - with the variants name missing, description missing or both. The filter chip names the language checked, for example "Translation: name missing (Alpendampf DE)".

Language chain

Inheritance is taken into account

If a text only exists on the parent language it still applies in the storefront. Filter and completeness therefore check the whole language chain, and completeness follows the language of the selected sales channel instead of the system language.

Variants

Leaner queries for variants

When expanding, only the fields the list actually shows are loaded, and completeness arrives ready-made from the server - following the same rule as the filter. Description and meta texts of every variant no longer travel to the admin.

06
CSV import & export

Translate Shopware products - complete multilingual support, also for custom fields.

Instead of one file per language: all languages in ONE CSV. Column convention trans_<channel>_<language>_<field> (e.g. trans_mainshop_en_GB_name) for standard fields, cf_myField__en_GB for custom fields. Import with pre-fetch of existing values and clean JSON merge. Supplier data often arrives in an industry format - that is what the DATANORM import for Shopware is for.

Profiles

Built-in export profiles

Predefined column sets for typical use cases - usable immediately, adjustable, saveable as new profile.

  • Master data, prices & stock, SEO, images
  • Translations, variants, full export
  • Own profiles in the shop database, for all users
Custom fields

Each field as its own column

Custom fields get their own column in the export (cf_myField), language-specific cf_myField__en_GB. On import they are recognised directly - no more JSON blob.

Product unit

Unit as readable name instead of UUID

Column "Product unit (name)" exports "Litre" or "Kilogramm" instead of UUID. On import the name is automatically resolved to the correct Shopware unit ID - Excel-friendly.

Resolution

By SKU or EAN

For fields normally requiring a UUID (parentId, mainVariantId): UUID, SKU or EAN possible, for variants additionally the column parentProductNumber. Lookups are cached.

Import

Batch sync with progress

Everything via the Shopware sync API in batches, with batch size and parallel image uploads adjustable in the config matrix. With progress per phase and estimated remaining time.

  • Match by SKU / ID / EAN / manufacturer number
  • Create new products OR update existing
  • Custom field JSON is merged, not overwritten
Permissions

Import and export via feature switches

Super admins can always import, regular users as long as the feature switch "CSV import" is on (default). Export has its own switch "CSV export"; there are no separate Shopware permissions for either.

07
Feed generator

Shopware product feeds by URL - for Google Shopping, portals and the ERP.

A feed serves the product data under a unique, tokenised URL, updated automatically and without a manual export. Every setting is described in the feed generator documentation.

Recipients

Google Shopping, portals, ERP

Typical consumers are Google Shopping, idealo or Billiger.de, an ERP system or an analytics pipeline. The URL is tokenised - without the token nobody sees anything.

Creating

From a template or your own profile

Built-in templates for master data, prices & stock, SEO, images, translations, variants and full export create profile, feed and token in one click. Alternatively an existing export profile is activated as a feed directly.

Presets in feeds

Filter templates instead of checkboxes

Instead of simple checkboxes the feed uses a saved filter template - the same one you use in the listing and in bulk edit. The feed filters like the product overview; under "Applied in the feed" the editor shows which criteria take effect.

A deliberate limit

What does not apply in a feed

Only the approval status and "RRP invalid" cannot be mapped server-side. If a template contains these criteria, the feed returns more products than the filtered list.

Several feeds

One profile, many consumers

Any number of feeds can be created for the same profile - for example a "master data" profile as the basis for several feeds with different filter templates per portal.

Formats

CSV, XML and JSON

The feed URL follows the pattern /staw-pim/export/{token}; the format is set in the feed. For shop URLs that redirect there is the domain-independent route /api/staw-pim/export/{token}. Character set, BOM and decimal separator are adjustable.

Large catalogues

Streaming instead of a memory mountain

Output runs as DBAL streaming in batches of 2000 with keyset pagination instead of LIMIT/OFFSET, plus gzip over HTTP and a file mode for very large catalogues.

Control

Live hit count and token change

The product count is calculated live in the editor. One click creates a new token and invalidates the old URL - useful when a link has leaked or partner access should end.

08
Category management

Maintain the whole category tree - without switching to the Shopware admin.

A button next to the feed generator opens the complete tree per sales channel: texts, images, SEO URLs, product assignment and AI translations in one place. The details are in the category management documentation.

Tree per channel

Per sales channel and language

The tree is built per channel from the navigation root, loaded directly through the category repository - no separate endpoint, no separate page. For regular users it is controlled by the feature switch "Manage categories".

AI texts

Have descriptions and meta fields written

An "AI texts" button generates description, meta title, meta description and keywords - across all four providers, with tone selection and a free field for further instructions. Switches for "include subcategories" and "overwrite existing texts".

Translate

Individually or across the whole tree

"Translate" sits as its own action next to the AI texts and transfers the fields from source to target language, via DeepL or an AI provider. With "select all", AI texts and translations run as a bulk action across every marked category.

Starting text

Copy from default language

When a channel gets its own language, no own texts exist there at first. The bulk action copies name, description and meta fields from the default language - with a progress bar, and existing own texts stay untouched.

Product assignment

Dynamic group or preset

Which products sit in the category is controlled by two clearly separated options: a Shopware product stream, or a StawPim preset with a live hit count. In preset mode the resolved products are assigned permanently; zero hits deliberately do not empty the category.

SEO

Slug per channel and language

The SEO URL can be set per channel and language. The old URL stays as a 301, the new one becomes canonical; an empty field reverts to the Shopware default.

Images

Category image with alt text

Cover from the media library or by upload, with preview and language-specific alt text - so category pages also count in image search.

Bulk actions

Multi-select in the tree with history

Categories can be multi-selected by checkbox and set active or inactive together, and shown or hidden in the navigation. A named snapshot is created before every action; a "history" button lists them with an audit log and restores them.

Completeness

Score per language

The percentage per category counts only the own texts of the selected language - matching the form next to it. That shows immediately where nothing has been maintained in a channel language.

Import/export

CSV and JSON backup

The complete tree of the selected channel can be exported as CSV including custom field columns and read back in - the parent category through the parentPath column. A JSON backup additionally secures all languages, custom fields and IDs.

09
Dashboard

Check Shopware data quality: find gaps before customers see them.

The dashboard is the entry point to the PIM: stock status, critical stock levels and the most important data quality issues at a glance. One click leads straight to the affected products.

Stock

Critical stock levels at a glance

Stock status and low stock appear right on the PIM start page, without building a filter first.

Priority

Top issues by severity

The biggest gaps in the catalogue come first, such as products without a description. You fix what is most visible in the shop first.

One click

From issue to filtered list

One click on an issue opens the product list with exactly the affected items, including a jump into editing.

Fix it

Add missing texts with AI

A missing description is created directly with AI text generation and saved to the product.

Data quality

Completeness across the whole catalogue

Items without an image, without a description or with incomplete meta data become visible before customers notice.

Progress

Every fixed gap counts immediately

Once an issue is fixed, the number on the dashboard drops right away. Maintenance rounds become measurable and the team sees what is done.

10
Approval workflow

Approval workflow in Shopware: four-eyes principle for product data.

Whoever maintains the data does not necessarily decide what goes live. The approval workflow separates editing from publishing - with its own status, filters in the product list and statistics in the settings.

Status

Submit, approve, reject

A product is submitted for approval and then approved or rejected. Submitting and rejecting deactivate the product, approving activates it. The typical case: after a mass import nothing goes live before someone has looked at it.

In progress

A signal to the team

There is also the status "in progress", which editors set themselves - a hint that someone is currently working on the product. That keeps two people from doing the same round of work twice.

Visible everywhere

Badge, filter and indicator

The detail view shows a status badge with a button to set it, the product list a coloured status indicator and its own filter. That makes it easy to filter for everything still waiting for approval.

Overview

Approval statistics

The settings show statistics on the approval state, with "in progress" counted in. How much is still open is visible at a glance.

Large volumes

Approvals in batches

Multiple approvals run through a dedicated batch endpoint with one request per 200 products - so even a batch of several thousand articles stays quick.

Permissions

Who may approve is configurable

Approving and rejecting are allowed for the users entered under "Approval authorized users" in the config matrix, tab Approval, and for all PIM super admins. Maintaining and approving can therefore be split between different people.

Evidence

Every decision in the audit log

Submitting, approving and rejecting land in the audit log with user name and timestamp - so you can look up who approved what and when.

11
Config matrix

Adapt the PIM in Shopware to your workflow.

You open the config matrix via the menu item "PIM Konfigurationsmatrix" in the Stone & Water menu of the Shopware admin. In 13 tabs it decides which fields are visible and required in the detail and variant views, which columns the product list shows, which channel languages are offered, how the variant generator is preset, which AI providers are available and how import, export and bulk edit work. Saved settings apply to all users.

Fields

You decide what is visible

Per field you decide whether it is visible in the detail and variant views and whether it is required; the quickview fields are chosen in the tab Variants. Fields Shopware requires anyway are marked as required and cannot be switched off.

Layout

Set the section order freely

Master data, prices, media, SEO, properties, cross-selling: you set the order in the product detail view in the tab Products with "Move up" and "Move down", and separately for the variant view in the tab Variants.

Prices

Switch gross and net individually

All four price types can be shown or hidden independently for gross and net, separately for main products and variants: selling price, purchase price, list price/RRP and the 30-day best price under Omnibus. Pure gross, pure net or mixed.

SEO URL

Two generators or the Shopware standard

Either the canonical custom field system with token patterns, whose URLs survive every reindex, or the Shopware standard mode, in which the native SEO URL is editable right in the PIM - controllable separately for product detail, variant modal and quickview.

Permissions

Release functions selectively

In the tab PIM super admin you switch 14 functions on and off for regular users, among them creating and duplicating products, bulk edits, deleting, CSV import and export, feed generator, generating variants, managing categories and transferring to variants. Super admins always see everything.

Columns

Custom columns from any field

Besides the standard columns you create your own - the source is a master data field or any custom field, optionally sortable through the DAL path. Date and yes/no values are formatted automatically.

Config search

Ctrl+K across all tabs

Ctrl+K (Mac: ⌘+K) jumps into the quick search across every tab of the config page, with a match counter per tab. Enter and Shift+Enter or the previous and next buttons move from hit to hit.

For all users

One shared view for the team

Column selection, page size, filter presets, tone and all other settings apply shop-wide to all users. Differences between users are handled by the super admin list and the feature switches.

Required fields

Errors that jump to the spot

If something is missing on save, a modal opens with all errors instead of a wall of banners. One click jumps to the affected section, expands it and highlights the field briefly.

12
Approval & permissions

Who changed what? Track changes in Shopware and undo them.

With multiple maintainers, traceability is everything. The PIM keeps a change history per product with user and time, secures bulk edits and CSV imports with snapshots and controls access through Shopware roles, super admins and feature switches.

Audit log

Change history per product

Creating, saving in the detail view, variant and media changes and every approval step land in the tab "Changes" with action, user name and timestamp. Kept for 90 days by default, at most 100 entries per product.

Permissions

Roles, super admins and feature switches

Four Shopware roles (view, edit, create, delete) control access. For all users without super admin status you switch off 14 functions individually, such as bulk edits, CSV import and export, deleting, snapshots and change history.

Undo

One-click restore

In the config matrix, tab Snapshots, you compare a snapshot with the current state and restore it with one click - all products of the run return to the state before the operation.

13
The solution

What the Shopware PIM plugin takes over in daily work.

Shopware manages products one by one. The PIM adds the layer above: filter, change in one run, check - and a snapshot is taken before every action.

Bulk editing

Hundreds of articles in one run

Set a filter, select everything, change fields - more than 40 actions from prices and delivery times to categories and custom fields. Progress runs live, and one click restores the previous state.

Minutes instead of a working day

Variants

Inheritance made visible and controllable

Properties that sit only on variants are highlighted and counted. Two buttons transfer missing properties and images from the master product to the variants - or reset them to inheritance.

Complete product pages in the shop

Import

Read supplier data directly

DATANORM 4.0 and 5.0 as well as CSV with column mapping go into the shop without a detour through converters and Excel. Preview and dry run show up front what will be created, updated and skipped.

One step instead of three

Languages

Get every language maintained

The "missing texts" filter finds exactly the gaps per language. "Copy from default language" supplies the starting text, AI text generation and DeepL write and translate the rest - for hundreds of articles at a time.

Visible in the second market too

Protection

Maintained texts stay put

The PIM keeps the last maintained state per article number and language and restores it as soon as an external system overwrites it. You decide which fields are protected; a log shows what was brought back.

No duplicate work after a sync

Overview

See the gaps before a customer asks

The dashboard shows data quality and completeness across the entire catalogue. Filters lead straight to articles without an image, without a description or with incomplete meta data - including a jump into editing.

Found instead of guessed

14
Reviews

5.0 out of 5 stars in the Shopware Store.

Voices from merchants who work with the PIM every day. Functionality 5.0 · Usability 5.0 · Documentation 4.9 · Support 5.0. Quotes translated from German. See all reviews in the Shopware Store.

Finally a PIM that lives inside Shopware

Bulk edit: the core. Fields such as prices, categories, properties, manufacturer or cross-selling can be changed across hundreds of products at once - including the snapshot function. For seasonal price adjustments or category restructuring that saves hours. SEO URL generation is the killer feature for us.

Read his full story →

Boris PranjkovicJune 2026

The plugin exceeded our expectations

We were looking for a classic PIM. Many systems were overpriced, or would have become too expensive once you added the connection to Shopware and the ERP. PIM for Shopware met our requirements out of the box and needed no customisation towards Shopware at all.

TobiasJune 2026

An absolute recommendation

Another plus is that the PIM is integrated directly into Shopware. You need no additional external system and have product maintenance centrally in one place. With a larger range you quickly notice how much time you save.

Martin FrankSeptember 2026

The best PIM we have used so far

We work with several thousand articles in Shopware every day and the PIM has simplified our product maintenance enormously. It is particularly practical that many changes can be made in one place, without constantly switching between different screens.

ChrisJune 2026

Comprehensive PIM with many practical functions

I particularly like the dashboard with its overview of data quality and product completeness. You see immediately which articles are still missing images, descriptions or SEO data. You can tell the plugin is built for actual day-to-day work.

Chadlin WellsMay 2026

Saves a lot of time creating and maintaining products

The integrated AI text generation is particularly strong. Product texts can be created, optimised and cleanly worded very quickly. Translation into several languages with DeepL works excellently and saves a lot of additional time.

AlexMay 2026

PIM and JTL

We use JTL as our ERP and only ever reach our data maintenance goals through extensive workarounds. With PIM for Shopware it has become considerably easier to set certain filters for products and prepare campaigns that way.

R.May 2026

Case study

How TopSpeed table tennis maintains 8,000 variants in two languages.

Five people, around 2,000 products, two languages: TopSpeed used to edit every item in the Shopware admin. Today SEO texts and translations are created at the push of a button.

2,000products
8,000variants
2languages
a few daysonboarding
Read the full story →

I can have every product description written SEO-ready by the AI. The SEO data is created and added right away. With one click I also get the translation into a second language.

BPBoris PranjkovicManaging Director, TopSpeed Tischtennis-Vertriebs GmbH
15
By the numbers

What's in the package.

0
additional systems needed
100
variants in 10 seconds
40+
actions in bulk edit
4×
AI providers plus DeepL
5.0
stars in the Shopware Store
7
built-in export profiles
1
CSV for all languages
0
markup on AI costs
50×
fewer save operations in bulk AI runs
2
Shopware lines in one package
8
operators for text and number filters
3
feed formats by URL: CSV, XML, JSON
80-90%
smaller feed CSVs via gzip
1
page for all master data
14
feature switches for regular users
2
DATANORM formats 4.0 and 5.0
5
tone templates for AI texts
1
click to undo
30
day Omnibus price editable
200
products per approval request
2000
records per feed batch
16
Recent additions

What was added recently.

PIM is continuously extended with features that emerge from real maintenance workflows.

Maintaining warranty data (GARAN label)New
  • Its own section in the master data: warranty period in months and the retailer confirmation. Both fields exist in Shopware from 6.7.14; in older installations the section is visible but locked and says so.
  • Per variant as well: the warranty period is an inherited field - without an own value the main product setting applies. The variant view has its own warranty section that can be hidden through the field configuration.
  • In bulk edit: the "warranty" action - set or remove the period and set, revoke or leave the confirmation unchanged. Under Shopware 6.7.14 the fields are hidden and are not written either.
  • Notes in the section state the conditions under which Shopware outputs the label at all: more than 24 months, confirmed data, a maintained manufacturer including the manufacturer product number.
Length targets and master prompt for the AINew
  • Length targets per field in words and characters: product name, SEO title, meta description and description. Defaults are 120 characters for the product name, 60 for the SEO title, 155 for the meta description and 250 words or 1500 characters for the description - the lengths search engines usually display in full. A value of 0 means no target.
  • No more truncated JSON: the token budget used to be fixed at 2000 for the whole response - with many selected fields it could break off mid-JSON. It now follows the configured lengths.
  • Master prompt: a central instruction passed to every AI request - in the detail view, in bulk edit and when copying from the default language, regardless of provider. Salutation, brand spelling, mandatory information or forbidden phrasings can be set once instead of on every run.
  • Its own section under "Texts & translations", directly behind the master prompt, as a compact table instead of four full setting rows and with a short explanation per field.
Properties, tier prices and duplicatingNew & Fixed
  • Action "properties to variants": "reset to inheritance" removes the variants' own properties so they show those of the master product again and follow it later on. "Copy from master product" writes them as own values into every variant. Background: as soon as a variant has own rows, for example from an import, these replace the inherited ones completely - even when incomplete.
  • The tier row from quantity 1 is created automatically. Shopware reads the tiers of a price rule as a complete price table; without the row from 1, a single tier was shown in the storefront as a normal unit price instead of a table. The row always carries the base price, and for variants without an own price that of the master product. The new bulk action "tier row from 1" repairs existing data.
  • Duplicating now takes tier prices along - for the main product and for every variant. They exist in Shopware as separate records and were not covered by the field list the duplicate is built from, so they had to be recreated. Applies to both routes, detail view and product list.
  • Missing texts, new option "own variant text only": variants count as hits when they have no text of their own - regardless of whether the master product has one. Without this option the inherited text counts as present, as before.
One package for Shopware 6.6 and 6.7New
  • One edition for both lines: the administration file is additionally placed under js/, from where Shopware 6.6 loads it; 6.7 still uses the Vite manifest. Separate packages per Shopware version are no longer needed.
  • Import and export profiles are now failure-safe: if loading the saved profiles failed on opening, the list stayed empty - and saving a profile then made the server delete all the others. Every save and delete now reads the current state immediately beforehand, changes only that one profile and then writes. If reading fails, nothing is written.
  • The limit of 20 profiles is gone - it silently dropped the oldest profile on saving. Deleting and rewriting run in one transaction, so the previous state survives an error.
  • More robust on unusual installations: every plugin call uses the administration API base instead of a hard-coded path. If the shop runs in a subdirectory or behind a proxy, all functions previously stayed without data.
Copy texts from the default languageNew
  • Bulk edit → AI & texts: New function "Copy from default language". When a sales channel uses its own language, no own texts exist there at first - the storefront shows the inherited content, but without a starting text nothing can be edited or rewritten by AI. Name, description, meta title, meta description and keywords are copied; fields and target languages are freely selectable.
  • Empty fields only, or overwrite deliberately: By default existing texts stay untouched; overwriting can be enabled optionally. Whether a target language already has its own texts is checked against the translation records - not against the inherited display values.
  • Categories: The same bulk action exists in the category module, with its own dialog: it states the number, target language and fields up front, shows a progress bar while copying and refreshes the view afterwards.
  • AI texts now also write the product name: "Product name" is available as an additional field, for ChatGPT as well as Claude. For safety it is not preselected, so existing names are not overwritten by accident; overly long names are truncated to 255 characters.
Translations: filter, completeness and language inheritanceImproved
  • Language inheritance is taken into account: If a text only exists on the parent language it still applies in the storefront. The "translation missing" filter and completeness now check the whole language chain instead of the language alone - filter and percentage match again.
  • Completeness follows the sales channel: Translatable fields are calculated against the language of the selected channel instead of the system language. Without a channel selection the system language applies as before.
  • Filter chip shows the language: Instead of just "translation missing" it now reads, for example, "Translation: name missing (Alpendampf DE)" - making clear what the result refers to.
  • Category completeness: For channel languages only own texts count, matching the editing form next to it. Previously inherited content was included and the value was too high.
  • RRP filter: "RRP missing" and "RRP lower than gross" are now resolved server-side across the entire catalogue, so hit count, paging and result match.
Product list with variants noticeably fasterImproved
  • Only the fields actually needed: Displaying variants previously loaded complete product records, including every field the list does not show. Now only the displayed fields are loaded, along with preview image and variant options. Custom columns are still taken into account.
  • Completeness comes from the server: The percentage used to be calculated per row in the administration, which required loading the description and meta texts of every variant. The server now supplies it, as it already calculates the same way for the completeness filter. The transferred data volume drops considerably.
  • Load timings: After loading, the times per phase are available in the browser console under window.stawPimLastLoadTimings - purely diagnostic, with no effect on operation.
Variant inheritance: completeness, status and duplicatingNew & Fixed
  • Completeness for variants: Variants showed values that were too low, even though name, description, price, cover image, manufacturer, categories and properties are inherited from the master product. If a variant has no own value, the master product value now counts - in the list as well as on the dashboard. Product number and stock stay variant-specific by design.
  • Active status resolved correctly: Variants were consistently shown as inactive in the list although they were available in the storefront. An own value on the variant wins, otherwise the master product status applies.
  • Duplicating with selectable inheritance: When duplicating a variant product, a dialog asks which fields the variants should inherit from the main product (images, name, price, weight, EAN). Inherited fields automatically pick up later changes. For simple products the dialog does not appear.
  • Own URL for the duplicate: When duplicating, the new master product pointed at the original through its main variant, so its URL effectively resolved to the original. The main variant is now remapped to the new variant and the SEO URL is regenerated from the channel template.
Master data: tags, search keywords and descriptionFixed
  • Additional search keywords: Keywords were not saved, or were lost when reopening. The area is now its own field: type a keyword, confirm with Enter, existing ones appear as removable chips. A keyword not yet confirmed is included automatically when saving.
  • Tags: Tags stored on the product were not displayed. They are now loaded directly from the tag directory and shown as chips; new ones can be added via search. For variants, tags inherited from the master product are shown as well.
  • Description: Longer texts were cut off at the bottom and could not be scrolled - the field now has a maximum height with a working scrollbar. The "text colour" button was removed: colours set in the text write fixed values into the HTML that get in the way when switching themes or in dark display.
Property translations straight from bulk editNew
  • Translation dialog per option: Every property option in the assignment tab has a pencil icon for entering the translated name directly - without leaving the Shopware property catalogue. Several languages can be maintained at once, each with its own text field and the associated sales channels for orientation.
  • Missing translations are marked: Options without a translation are highlighted and labelled "no translation", with a summary and count at the top. Background: in that case Shopware shows the name from another language through the fallback chain.
  • Checked against sales channels: What counts are the languages of the channels the affected products are actually assigned to - no longer the admin language, and not all channels of the shop. A sales channel filter still takes precedence.
  • Can be switched off: The option "Show missing translations in bulk edit" sits in the configuration under the Bulk edit tab, section "Assignment / Properties". Enabled by default, and can be turned off for shops without translation work.
Transfer properties and images to variantsNew
  • "Also assign to the master product": New checkbox in the assignment tab. When active, the selected options are additionally written to the parent product of the affected variants, keeping master product and variants in sync. A configuration option can preset it permanently.
  • "Transfer properties to variants": Adds the missing properties of the parent product to variants that have their own properties. Background: inheritance works all-or-nothing per field - a single own property switches it off completely, so fewer properties appear in the storefront than are maintained.
  • "Transfer images to variants": Creates own image assignments to the same media files for every variant without own images, including order, and sets the cover image. Display in the list then no longer depends on whether inheritance reaches the storefront. Variants with own images stay untouched.
  • Deviations made visible: Properties that only sit on variants are highlighted in orange, affected groups get an orange dot and the counter bar states the number. Groups with "display on product detail page" switched off are marked "not in storefront".
Clearing custom fields, CSV export filters and permissionsNew & Fixed
  • Clear fields → custom fields: Product custom fields can now be selected and cleared just like master data, SEO and link fields. As custom fields are translatable, the existing language selection applies here too; the values are included in the snapshot before clearing. Deliberately without a select-all switch, so that dozens of fields are not cleared by accident.
  • CSV export with "active filter": A whole block of list filters was silently discarded on export, so all products ended up in the file despite a filter being set. Affected were, among others, cover, manufacturer, category and property status, main category, delivery time, price and translation status. Filters that cannot technically be transferred are now named explicitly in the dialog instead of being ignored silently.
  • Feature switch "transfer to variants": New switch in the config matrix (tab PIM super admin). It controls the three buttons for transferring images and properties to the variants. Enabled by default; when switched off only super admins see these buttons.
Compact variant view, DATANORM 5.0 & further improvementsNew
  • Compact variant view (config matrix → General → Product list): variants displayed space-saving without large indentation, without preview image and with noticeably flatter rows - name and options preserved. Long variant names no longer overlap.
  • DATANORM import expanded: support for DATANORM 5.0 (own field layout for name, price, EAN), any volume extension (.001-.999) and additional record types (long text, prices/DATPREIS).
  • Bulk edit: the "restock time (days)" field can now be set and cleared via bulk edit - incl. undo/snapshot.
  • Category management: the language selector now follows the languages assigned to the active sales channel; additional "active only" filter.
  • AI providers more robust: OpenAI proxy fixed for newer models (gpt-5 / o-series) (max_completion_tokens, retry without temperature), Mistral defensively safeguarded.
Category management expanded - SEO URLs, images, import/export, product assignment, completeness scoreNew
  • SEO URL per category (slug per channel & language): old URL stays as 301, new becomes canonical and survives reindex; empty field resets to Shopware automatic.
  • Category image (cover) from media library or upload with preview, plus language-dependent alt text for accessibility/SEO.
  • Import/export: entire tree as multilingual CSV (one column per language for each field, field.locale; custom fields as cf. columns) or as JSON backup. Import resolves parents via parentPath, with preview, validation and backup.
  • Product assignment: dynamic product group (stream) or StawPim preset filter with live hit count; on save the products are firmly assigned.
  • Completeness score per category (description, meta, image) in the tree and live in the detail, plus a completeness filter.
  • Bulk actions in the tree (active/inactive, show/hide in nav) with named snapshots, "history" and audit log; default sorting per category; duplicate incl. subtree.
  • Translate separately next to "AI texts" (DeepL or AI provider), also as bulk across all selected categories.
SEO URL - Shopware standard mode as alternativeNew
  • New config option "Shopware standard SEO URL" (separately for product detail, variant modal and Quickview). When active, the field shows the native Shopware SEO URL and hides the StawPim canonical field; the main category stays visible.
  • Directly editable standard SEO URL field in master data, variant modal and Quickview - loads the existing URL (even without channel binding) and writes via PATCH to seo_url, no duplicates. Backwards-compatible: existing pattern shops stay unchanged.
  • Duplicating: the duplicate's SEO URL (incl. variants) is automatically regenerated from the channel template - no more accidental redirect to the original.
  • Release date moved after "Availability" in the config matrix.
Category management - tree per sales channel, AI texts, WYSIWYG, drag & dropNew
  • Dedicated modal: a "Categories" button (left of the Feed Generator) opens full category management - no switching to the Shopware standard needed. The tree is built per sales channel from the navigation root, with the entry category at the top, loaded directly via the category repository.
  • Full feature set: create, rename, activate/deactivate, delete (confirmation in a PIM-CI dialog), fields per language (name, description, SEO), set parent category and type, assign layout (CMS experience) incl. "Create new experience", external link for link categories, "Show in main navigation" toggle, custom fields, plus moving via drag & drop.
  • Description as WYSIWYG editor (sw-text-editor) with visible HTML formatting - stable across category, product master data, variant detail and translations when switching entity/language.
  • AI texts for categories: generate description, meta title, meta description and keywords across all four providers - with tone selection, a free "Additional instructions to the AI" field, an "Include subcategories" toggle (entire subtree) and "Overwrite existing texts".
  • Dedicated "Manage categories" feature switch. Master-data-style channel bar with icons, detail sections collapsed on opening.
AI text generation - four providers, current modelsNew
  • Mistral AI and Google Gemini as additional providers alongside OpenAI and Anthropic - each with its own config section (enable, API key, model, connection test, default tone). When several are active, the provider can be chosen per generation; the product detail generator (incl. variants) and category management use all four.
  • Updated model lists (current state): OpenAI GPT-5.6 Sol / GPT-5.6 Terra / GPT-5.6 Luna / GPT-5.5 / GPT-5.4 mini (default) / GPT-5.4 nano; Anthropic Claude Sonnet 5 (default) / Sonnet 4.6 / Opus 4.8 / Fable 5 / Haiku 4.5; Mistral Large 3 (default) / Medium 3.5 / Small 4; Gemini 3.1 Pro / 3.5 Flash (default) / 3.1 Flash-Lite.
Properties, permissions & duplicatingNew & Fixed
  • Properties to variants: properties assigned to a product with variants are now written to all variants so they appear in the storefront (in Shopware a variant only inherits while it has no property rows of its own). The assign dialog robustly pre-selects existing properties on reopening, so repeated add/remove works.
  • New feature toggles: "Duplicate products" (separate from "Create products") and "Generate variants (bulk edit)" can be shown/hidden for normal users; plus the "Manage categories" switch.
  • Duplicating: variants of a duplicated product are created inactive (instead of keeping the original's active status).
  • Firefox fix: variant group/option chips now also appear in Firefox in the product list; on search/filter the option chips load correctly.
Availability, tier prices & detail editingFixed
  • Availability: the "Clearance" and "Free shipping" switches now use the Stone & Water PIM toggle (indigo CI) and are cleanly centred to the height of the adjacent input fields - on the detail page and in the variant detail modal.
  • Tier prices: the % sign in the savings column now sits correctly inside the input field.
  • Texts: 39 confirmation/notice dialogs with missing spaces fixed (DE + EN).
SEO URL system with two generators - custom field as bridge, Shopware-native indexingNew
  • Step 1 - "Generate URL in custom field" (token → field): a token pattern (e.g. {mainCategoryPath}/{name}) is resolved variant- and language-accurately and written to the per-shop custom field staw_pim_canonical_<shop>. Available as bulk run (channel/language selection in the modal) and via per-product "Generate from pattern" button in master data and variants.
  • Step 2 - "Generate SEO URLs" (Twig → database): a Twig pattern reads the custom fields (e.g. a migrated field with fallback to the canonical field) and is set as Shopware's native SEO URL template per sales channel - reindexing runs through Shopware's own SeoUrlGenerator. URLs then come directly from the custom field and survive every reindex.
  • Migrated URLs are preserved: products with an existing URL (e.g. from a previous system in a custom field) keep it; new products use the field filled by step 1. Changed paths remain as 301 redirects.
  • Targeted generation: writes only for the selected sales channels + languages - channels grouped by shop with language accordions, "select/deselect all" per group, nothing preselected. Per channel: badges with product count (only products actually visible in the channel) and "missing URL" counter.
  • Dry-run and preview per channel/language before writing. Dry-run result cards colour-coded: new = green, change = blue, skipped = grey, warning = amber, error = red. The preview picks products visible in the channel whose pattern resolves - up to three real examples.
  • Reset option: "Remove all product URLs (reset)" deletes all SEO URLs of the selected channels/languages (incl. Shopware's global detail URLs) and rebuilds fresh from the pattern. The other options visibly switch to OFF.
  • Unique variant URLs: {options}, {properties} and {tags} deliver language-translated values - a pattern like {mainCategoryPath}/{name}-{options} produces a unique URL per variant and language. Variants resolve their per-channel canonical field incl. inheritance from the parent.
  • Correct language fallback: chain requested language → parent language → system; empty/inherited translations are skipped - no accidental default language in foreign-language URLs.
  • Pattern editor: textarea with auto-height (entire Twig expression visible), pencil icon, variable chips (token chips for step 1, official Shopware SEO Twig variables for step 2), live Twig syntax check (save blocked on error) and a warning when tokens and Twig are mixed. Per-sales-channel patterns for both generators.
  • Robust conflict handling: paths already taken elsewhere (e.g. a category with the same slug) are cleanly skipped and reported as "path already taken" instead of aborting with a duplicate-key error. Conflicts shown with product numbers instead of IDs. The same URL in different shops is not a conflict (unique per shop + language).
  • Fast even for large catalogues: channel counting via set-based aggregate queries, product lists via index-friendly UNIONs instead of OR self-joins - SEO dialogs open without delay, generation progresses normally even with tens of thousands of products. Polished progress bar with percentage.
  • Safety net: if the canonical field yields an empty result, the SEO URL falls back to the product name instead of producing an empty path.
Performance - bulk edits, CSV import and approvals many times fasterNew
  • Async queue indexing: bulk-edit product writes now default to Shopware's queue indexing instead of synchronous in-request indexing, and the write batch size was raised from 10 to 25 - large bulk runs complete several times faster. Configurable (queue / disable / sync).
  • CSV import without full reindex: after an import, only the imported products are reindexed asynchronously - the previous full-catalogue reindex is gone.
  • Batched requests: audit-log writes are saved as a batch every 600 ms (instead of one request per product); bulk approvals use a batch endpoint (one request per 200 products); bulk translations and approval/audit writes run as INSERT … ON DUPLICATE KEY UPDATE - halves the SQL statements.
  • Batched variant deletion: one IN delete instead of one statement per variant, with per-ID error feedback and automatic single-delete fallback.
  • Snapshots once per session: bulk-edit snapshots and undo data (potentially several MB) are no longer loaded on every list start.
  • Stale-response guard: rapid filter/page changes in the product list can no longer overwrite newer results with older ones.
  • Bulk edit (fix): parent products that match the active filter now receive the change as well.
Image upload via drag & drop in master data and variantsNew
  • Drop zone in the images section: drop files or click to open the file dialog - uploads go to the Shopware media library (product folder) and are immediately assigned to the product, with progress display.
  • First image automatically becomes the cover if none is set yet.
  • Variant logic: an uploaded image becomes the variant's own image (overrides the inherited one). Removing it restores inheritance from the main product.
Approval workflow - new status "In progress"New
  • Editors can set the "In progress" status themselves on a product to signal it's currently being worked on. Approve/reject/submit remain available in parallel.
  • Reflected everywhere: status badge + button in the detail view, filter and status indicator (indigo) in the product list, and the approval statistics in the settings.
Product overview & usability - price sorting, all manufacturers, category chips, toolbarNew
  • Sortable price column: clicking the header sorts ASC/DESC - server-side via the price accessor.
  • All manufacturers in the filter: the manufacturer filter now loads all manufacturers paginated instead of capping at 500 - the list no longer breaks off alphabetically, free-text search finds late names too.
  • Category chips: assigned categories are listed as removable chips below the tree (small × to remove) - instantly visible what's selected.
  • Action buttons in their own row: Feed Generator, CSV import/export and create product now always sit in their own row above the search - the search field keeps its full width on all viewports.
  • Tab bar: on narrow windows, a thin horizontal scrollbar appears when tabs overflow - every tab stays reachable.
  • Article number column uses the same font size as the product name. The SEO/canonical URL field is always shown in master data.
SEO URL slug handling - umlauts, slashes, dots and Shopware's escaperFixed
  • Umlauts and special characters in static pattern text (e.g. a literal "für/" in the pattern) are now converted correctly (ae/oe/ue/ss) when writing to the custom field - previously literal text passed through raw and later broke SEO URL generation.
  • Slashes and dots are preserved in token values (category names with "/", article numbers with ".") - only true special characters like "&" or spaces are converted to the separator. Preview and server generation behave identically.
  • Twig |raw auto-injected: Shopware's SEO Twig environment slugifies every printed value - stored slashes turned back into "-" during generation. Bare Twig outputs of path fields now automatically get |raw in all generation paths; the variable chips insert fields with |raw directly.
  • Deterministic category path: without a set main category, the fallback now prefers the deepest assigned category (longest path) instead of an arbitrary one; with an empty category.path column (indexer backlog), the ancestor chain is reconstructed via parent_id.
  • No more silent UUID custom fields: if the channel list wasn't loaded yet during generation, the field name silently fell back to a channel-ID suffix and created new fields - the admin now uses a second name source, skips channels without a resolvable name with a clear message, and the server rejects ID-fallback keys.
  • Migrated field strictly checked in the current language (without Shopware's translation inheritance) - values from another language no longer win. Multi-line patterns no longer pass line breaks through the template wrapper (|trim).
Feed Generator - reachable in maintenance mode, domain-independent API routeNew
  • Feeds stay reachable in maintenance mode: the storefront feed route sets allow_maintenance, plus an early kernel subscriber answers feed requests before Shopware's storefront machinery kicks in (session start, maintenance resolver). Google Merchant / ERP keep running during deployments.
  • New domain-independent fallback route /api/staw-pim/export/<token>.csv (no login) for environments where the storefront URL redirects (language-path domains, redirects). The alternative URL is shown in the feed settings.
Localisation, diagnostics & cleanupNew
  • ~55 hard-coded German strings (SEO generator UI, modals, notifications, toasts) converted to snippets - the interface is fully available in German and English.
  • Configuration cleaned up: two dead settings removed; the AI "default tone" setting is now actually applied (was previously ignored).
  • Support diagnostics: session error log (last 50 entries) - previously silent error paths now log failures so problems can be diagnosed via the browser console even without server log access.
  • Internal test suite: lightweight test runner (no PHPUnit) checks SEO fallback logic, snippet consistency between de-DE and en-GB and version consistency on every release.
  • Stability: dead routes/methods removed, missing translations added, store compatibility (static code analysis) fixed.
Feed Generator - streaming performance for large cataloguesNew
  • DBAL streaming in 2,000-batches: Feed generation doesn't load product data all at once into memory - it iterates through batches and emits row by row. Even catalogues with tens of thousands of products run through without memory issues.
  • Keyset pagination instead of LIMIT/OFFSET: The batches use seek pagination on the product number (indexed column). Unlike LIMIT … OFFSET, this doesn't slow down as you page deeper - output time stays linear with the number of products, whether at position 100 or 50,000.
  • gzip compression over HTTP: If the requesting client sends Accept-Encoding: gzip (all modern ERP/crawler/browser clients do), the response is compressed server-side. Feed CSVs typically compress by 80-90 % - significantly shorter transfer time, less bandwidth.
  • File mode for very large catalogues: Per feed you can choose the "File" mode. A scheduled task pre-generates the file (every 15 min, as staw-pim-direct-feeds/feed_<token>.csv in Shopware's private file system), and the controller serves the ready file - no regeneration on every request. Ideal for ERPs that poll several times per hour.
  • Memory limit safety: The feed endpoint defensively sets the PHP memory limit to 1 GB (@ini_set) - even very wide column selections with dozens of custom fields generate cleanly.
Feed Generator - list, filter templates, renaming, multiple feeds per profileNew
  • List as an accordion: Each feed as a compact row with name, status pill ("feed active" / "no feed"), feed URL preview, filter template chip and product count chip. Clicking the row reliably opens and closes the editor (chevron on the right rotates).
  • Built-in templates and custom profiles: Selector "Create feed from template / profile" at the top of the Feeds tab. Built-in templates (master data, prices & stock, SEO, images, variants, full export) automatically create an export profile with the matching field selection, activate the feed and generate a token. Your own profiles can be activated directly as a feed.
  • Filter templates instead of simple checkboxes: In the feed editor you pick a saved filter template. All criteria that can be mapped server-side are applied, so the feed filters like the product overview. Only approval status and "RRP invalid" cannot be mapped - the editor shows which criteria take effect.
  • Live product count: Each feed row shows a chip with the number of included products - determined live from the catalogue. Direct orientation on how large each feed is.
  • Renaming and deleting: Name field in the editor (name must be unique). Trash icon per row with confirmation. The active profile and product count chip move along automatically.
  • Multiple feeds per profile: Feeds are decoupled from the source profile - you can create any number of feeds for the same profile (e.g. a "Master data" profile as basis for multiple filter templates).
  • Backend server-side filtering: The FeedExportService applies manufacturer, category and stock range directly in the CSV/XML (incl. variant inheritance to the main article).
  • Automatic migration: Existing feeds from the old model are automatically migrated on first load - tokens and URLs remain valid.
SEO URL pattern per sales channelNew
  • Custom pattern per shop: New option in the config matrix under SEO URL. When enabled → searchable shop dropdown, per sales channel a different URL pattern can be defined. Shops without their own pattern continue to use the default pattern (visible as placeholder).
  • Variable chips context-aware: Clicking a variable inserts it into the currently focused pattern field - whether default or shop-specific. The live preview shows the pattern of the selected shop.
  • Generator now processes variants too: Previously only master articles got an SEO URL written. Now variants too - inherited fields (name, manufacturer, categories, main category incl. sales-channel-specific) are resolved from the parent product. Variant-specific values like {options} stay the variant's own.
  • SEO URL accordions collapsed by default - consistent with the other tabs.
Language dropdown in bulk-editNew
  • Language selection for translatable fields: Meta title, meta description and SEO URL (SEO tab), custom fields and packaging unit (shipping tab) now get a language dropdown - as soon as a value is entered.
  • Multi-language writing: The value is set in the default language AND additionally written into every selected language - e.g. packaging unit set in German and English simultaneously.
  • Deliberately without language selection: Product unit / unit of measure (it's only a reference to a unit) and all language-independent fields (price, stock, EAN, weight, manufacturer, status, dimensions).
Gross and net prices separatedNew
  • Purchase price gross + net in bulk-edit as two separate actions - the other value is automatically calculated via the product's tax class
  • CSV import/export: separate columns purchasePrice_gross and purchasePrice_net with alias detection for German and English spellings (ek_brutto, einkaufspreis_netto, cost_gross/net etc.) - existing single-column imports remain backwards-compatible
  • Config matrix: all four price types (sales price, purchase price, list price/RRP, lowest 30-day price) can be shown/hidden independently for gross and net - both for master articles and variants
Bulk-edit - complete filter displayImproved
  • All preset filters visible: manufacturer, categories, tags, properties, stock, price, weight, date ranges, visibility, tax class, delivery time, dynamic product groups and more are displayed as chips before each bulk-edit
  • Readable resolution of IDs: with-variants and sales channel filters now show clear names instead of UUIDs
  • Clear separation: product count + active filters as a coherent info block - "No filters active" remains red as an intentional warning
Quickview modal overhauledNew
  • Modal header: variant name in front (large, dark), SKU behind it (small, grey) - same as the master variant view
  • Uniform input fields: label on top, input below (42 px height) - consistent with the rest of the plugin
  • Expand all / collapse all button in the modal header - same as in the master data detail view
Quickview & inline editEstablished
  • Quickview modal: All key master data, prices, stock and SEO directly from the listing
  • Inline edit: Stock, price, EAN, manufacturer number and weight directly in the table row
  • Feedback: After saving, a message confirms success or names the error with its cause
Variant generatorExtended
  • Variant matrix: Price, stock or active status of all variants in one table
  • Unified search: One search filters properties and options simultaneously
  • Pattern accordions: SKU and name as separate accordions with clickable variable chips
Config matrix & UXNew
  • Adjustable section order for product detail and variant modal
  • Default tax rate automatically preselected for new products
  • Validation modal with scroll-to-section for required-field errors
  • Data inheritance parent → variants as dedicated bulk action
AIExtended
  • Claude (Anthropic) as second AI provider - own section in the config matrix, usable in parallel with ChatGPT
  • Provider switch in the generator modal when ChatGPT AND Claude are active
  • AI in bulk-edit with concurrency control against rate limits
Contact

Let's talk about your maintenance processes.

Whether 200 or 200,000 articles - PIM makes your Shopware maintenance faster, safer and traceable. With AI text generation, multilingual support, variant generator and everything you need.

In Shopware Store Contact