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
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.
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?
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.
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
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
Good value, own key/model/tone default, connection test in the admin.
Models: Mistral Large 3 · Medium 3.5 · Small 4
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
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.
Each channel-language combination gets unique texts. Or generate once and write the same text to all selected combinations - you decide per run.
Professional, casual-modern, premium/luxury, technical-factual or emotional-promotional. Set a default per provider, override per generation.
Which product data flows into the prompt? Name, manufacturer, properties, category, price - selectable via chip. Plus own keywords for SEO focus.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
By default every bulk edit creates a snapshot of the state before. It is managed and restored in the config matrix, tab Snapshots.
Even with 500+ products, no black-box feeling: live counter, phase indicator (snapshot / apply), ETA calculation and cancel button mid-operation.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
{parentNumber}, {firstVariantNumber}, {parentName}, {options}, {option1}-{option3}, {group1}, {group2}, {counter}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.
You delete variants of many articles in bulk edit, tab "Generate variants". The plugin checks whether orders refer to the 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.
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".
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.
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.
Display in the format Products: 153 (Variants: 543) - separated, above and below the pagination.
Stock, price, EAN, manufacturer number and weight edit directly in the listing row - also for variants. Click the value, change, done.
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.
Combine arbitrary filter conditions. Also across variant fields - search automatically traverses parent and child fields.
Define frequent filter combinations once, restore with a click - perfect for recurring maintenance.
For large lists (1000+) the browser only renders visible rows - via content-visibility: auto. Smoother scrolling without UI change.
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)".
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.
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.
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.
Predefined column sets for typical use cases - usable immediately, adjustable, saveable as new profile.
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.
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.
For fields normally requiring a UUID (parentId, mainVariantId): UUID, SKU or EAN possible, for variants additionally the column parentProductNumber. Lookups are cached.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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".
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" 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.
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.
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.
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.
Cover from the media library or by upload, with preview and language-specific alt text - so category pages also count in image search.
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.
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.
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.
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 status and low stock appear right on the PIM start page, without building a filter first.
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 on an issue opens the product list with exactly the affected items, including a jump into editing.
A missing description is created directly with AI text generation and saved to the product.
Items without an image, without a description or with incomplete meta data become visible before customers notice.
Once an issue is fixed, the number on the dashboard drops right away. Maintenance rounds become measurable and the team sees what is done.
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.
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.
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.
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.
The settings show statistics on the approval state, with "in progress" counted in. How much is still open is visible at a glance.
Multiple approvals run through a dedicated batch endpoint with one request per 200 products - so even a batch of several thousand articles stays quick.
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.
Submitting, approving and rejecting land in the audit log with user name and timestamp - so you can look up who approved what and when.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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
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
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
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.
PIM is continuously extended with features that emerge from real maintenance workflows.
js/, from where Shopware 6.6 loads it; 6.7 still uses the Vite manifest. Separate packages per Shopware version are no longer needed.window.stawPimLastLoadTimings - purely diagnostic, with no effect on operation..001-.999) and additional record types (long text, prices/DATPREIS).max_completion_tokens, retry without temperature), Mistral defensively safeguarded.field.locale; custom fields as cf. columns) or as JSON backup. Import resolves parents via parentPath, with preview, validation and backup.seo_url, no duplicates. Backwards-compatible: existing pattern shops stay unchanged.{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.{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.INSERT … ON DUPLICATE KEY UPDATE - halves the SQL statements.|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.category.path column (indexer backlog), the ancestor chain is reconstructed via parent_id.|trim).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./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.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.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.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.@ini_set) - even very wide column selections with dozens of custom fields generate cleanly.{options} stay the variant's own.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-compatibleWhether 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