---
title: "Feed generator in PIM for Shopware: guide"
description: "Feed generator in PIM for Shopware: guide to templates, profiles, filter templates, token URL and the formats CSV, XML and JSON for portals and ERP systems."
url: https://pim-shopware.de/en/dokumentation-feed-export.html
language: en
---
# Feed generator in PIM for Shopware: guide
With the feed generator in PIM for Shopware you provide automatically updated URL feeds via the Feeds tab - for Google Shopping, price comparison portals or ERP connections. With built-in templates, your own profiles, filter templates, accordion list, renaming, delete confirmation, streaming for large catalogues and token authentication.

## What is a feed in the feed generator for Shopware?
A feed delivers your product data under a unique, tokenised URL - automatically updated, no manual export. The recipient is typically an external system: Google Shopping, idealo, Billiger.de, an ERP system or an analytics pipeline. The URL is tokenised - without the token you see nothing.

## Create a feed - template or your own profile
At the top of the Feeds tab you find the"Create feed from template / profile" selector. With one click you create a new feed:
- Built-in template - master data, prices & stock, SEO, images, translations, variants, full export. An export profile with the matching field selection is created automatically (named e.g."Master data (Feed)"), the feed activated, a token generated.
- Existing profile - your own export profiles from the export tab can be activated directly as a feed.

## Feed list as an accordion
All active feeds and all custom export profiles appear as a compact list - each row is a self-contained accordion. Per row, at a glance, you see:
- Name - the feed name (renamable)
- Status pill -"feed active" (green) or"no feed" (grey)
- Feed URL preview - the tokenised URL for active feeds
- Filter template chip - the chosen filter template or"no filter"
- Product count chip - number of included products, determined live from the catalogue
- Pencil icon on the right (opens/closes the editor) and trash icon (deletes with confirmation)

### Accordion behaviour
Clicking the row reliably opens and closes the editor - a chevron on the right shows the state and rotates on opening. The trash button reacts separately (with @click.stop) and doesn't accidentally open/close the row.

## Editor content
The expanded editor holds all options per feed, organised in four areas:
- General: name,"Provide feed via URL" (feed active or off), generation"Live on request (always current)" or"Via cron into a file (low load)", streaming for large catalogues, preset (filter template), export variants, sales channel and language
- Columns: add and remove columns, order by dragging or arrows, own column header per column
- Access & URL: feed URL to copy, generate token and the alternative feed URL (API route)
- Format: file format, character encoding, BOM and decimal separator

### Format, encoding and columns
- File format: CSV for spreadsheets and ERP, XML or JSON for interfaces and portals. TSV does not exist in the feed; the default separator for CSV feeds is the semicolon.
- Character encoding: UTF-8, Windows-1252 (ANSI) or ISO-8859-1 (Latin-1). JSON is always delivered as UTF-8.
- Prepend BOM - UTF-8 only, so that Excel recognises umlauts correctly
- Decimal separator for prices and dimensions: dot or comma
- Rename and sort columns: own header per column (empty = default name). Also available: product URL, absolute image URL and absolute image URLs.
- Sales channel determines domain and SEO URL for the product URL and absolute image URLs; with"All sales channels" the first active channel with a domain is the URL basis. The language defines in which language name, description and meta texts are exported.

## Filter templates - what's applied, what's not
Instead of simple checkboxes you pick a saved filter template in the feed - the same one you use in the listing or in bulk edit. The feed thus filters like the product overview.

### Criteria applied in the feed
All criteria of the template that can be mapped server-side. Under"Applied in the feed" the editor shows which criteria of a template take effect.

### Criteria that cannot be applied in the feed
Only the approval status and" RRP invalid" cannot be mapped. A feed with a template containing these criteria therefore delivers more products than the filtered list.

## Live product count
Each feed row shows a chip with the number of included products. This value is determined live from the catalogue (via the filter template criteria) and updates when you pick a different filter template.

## Streaming performance for large catalogues
Feeds run through the FeedExportService with multiple performance layers - even catalogues with tens of thousands of products run through without memory issues:

### DBAL streaming in 2,000-batches
Feed generation does not load product data all at once into memory. Instead, the service iterates through the catalogue in batches of 2,000 rows and emits them row by row (PHP generator with yield). Memory usage is therefore independent of catalogue size - whether 100 or 100,000 products.

### Keyset pagination instead of LIMIT/OFFSET
The batches use seek pagination on the product number (unique, indexed column):
- Instead of LIMIT 2000 OFFSET 50000 (gets slower with every page, because the DB has to internally page through until OFFSET)
- Uses WHERE product_number >:last ORDER BY product_number LIMIT 2000 - the DB uses the index directly
Output time therefore stays linear with the number of products, whether on page 1 or page 25. For large catalogues this is the most important performance lever - classic OFFSET often becomes drastically slower on deep pages in PostgreSQL/MySQL.

### gzip compression over HTTP
If the requesting client sends Accept-Encoding: gzip in the request header (all modern ERP/crawler/browser clients do automatically), the response is server-side compressed via gzencode() and delivered with Content-Encoding: gzip + Vary: Accept-Encoding.
- Feed CSVs are pure text and compress very well - typically 80-90 % reduction
- A 50 MB CSV is transferred as ~5-10 MB - drastically shorter load time, significantly less bandwidth
- The client decompresses transparently - no extra effort on the ERP side
- Compression level 5 (default) - good trade-off between CPU and compression

### File mode for very large catalogues
Per feed you can choose the mode:
- Mode"Live on request" - feed is generated directly from the database on every request. Always up-to-date, suitable for infrequent polling or smaller catalogues.
- Mode"Via cron into a file" - the scheduled task staw_pim_direct.export_feed pre-generates the file every 15 minutes and stores it as staw-pim-direct-feeds/feed_<token>.csv in Shopware's private file system. On request, the ready file is simply served - no DB load, very fast response. Ideal for ERPs that poll every few minutes.

### Memory limit safety
The feed endpoint defensively sets the PHP memory limit to 1 GB (@ini_set('memory_limit', '1024M')) - even with very wide column selections containing dozens of custom fields or full SEO sets, generation runs cleanly.

## Migration of old feeds

## Token and URL format
Every feed gets a unique token. The URL has this format:
- https://your-shop.com/staw-pim/export/{token} - the suffix.csv is accepted as well
- https://your-shop.com/api/staw-pim/export/{token} - alternative feed URL (API route), domain-independent
The format (CSV, XML or JSON) is set in the feed, not by the URL suffix. Use the alternative API route if the shop URL redirects to the home page, for example with language path domains. Both routes need no login and stay reachable while the sales channel is in maintenance mode.

### Regenerate token
"Generate token" creates a new token - the old URL becomes invalid. Useful if a feed link has become public or partner access should be revoked.

## Security

## What's next
Continue to AI text generation to create descriptions and meta texts automatically.
How to build a feed for Google step by step is shown in the guide Create a Shopware Google Shopping feed.

## Frequently asked questions

**Which formats does a feed deliver?**
CSV, XML or JSON under its own URL, in UTF-8 (optionally with BOM), Windows-1252 or ISO-8859-1 and with dot or comma as decimal separator.

**How do I protect a feed?**
The URL contains a token. One click creates a new token and invalidates the old address.

**Which filters apply in the feed?**
The criteria of the selected filter template, like in the product overview. Only approval status and"RRP invalid" cannot be mapped.

**Does it work for large catalogues?**
Yes. Output runs in batches of 2000 records, is compressed for suitable clients and has a file mode for very large catalogues.
