Product Feeds
Feeds are dynamic export tools that transform your store's products into structured files (XML, CSV, JSON) following a defined syntax. They are automatically generated every night (00:00 CET) and uploaded to our Edge Network to be consumed by marketplaces, price comparators, or marketing tools.
Path and Accessibility
Feeds are generated for every active language in your store and are accessible via a public URL distributed through a CDN.
The path pattern is:
https://cdn.webround.com/{{userId}}/{{storeId}}/feeds/{{langCode}}/{{marketplaceName}}.{{format}}
Example: Suppose you have configured Italian as the only language on Webround, your
storeIdis32d20f24-6c99-4e72-bdde-a25f91aabb91, youruserIdisk9J2bWz7vM4nLpXqR1tG8sY3dF5A, and you have created a Feed with MarketplaceShopping Graphand extensionXML. After generation, your feed file will be located at:https://cdn.webround.com/k9J2bWz7vM4nLpXqR1tG8sY3dF5A/32d20f24-6c99-4e72-bdde-a25f91aabb91/feeds/it/Google_Shopping.xml
Feed Structure
The configuration of a feed is based on two main pillars that define the file structure:
- Wrapper Template: Defines the external structure of the file (e.g., the XML header or CSV heading). It must contain the
{{items}}placeholder, where the products will be injected. - Item Template: Defines how each individual product variant should be represented.
Available Placeholders (Dynamic Tags)
You can use the following tags within the templates to map data:
| Tag | Description |
|---|---|
{{product.id}} | Unique product ID |
{{product.name}} | Product name (multilingual) |
{{product.seoDescription}} | SEO description (multilingual) |
{{product.htmlDescription}} | Full HTML description (multilingual) |
{{variant.id}} | Unique variant ID |
{{variant.sku}} | Variant SKU |
{{variant.ean}} | EAN |
{{variant.gtin}} | GTIN |
{{variant.mpn}} | MPN |
{{variant.name}} | Variant name (multilingual) |
{{variant.price}} | Net price (cadence: once) |
{{variant.comparePrice}} | Strikethrough price |
{{variant.availability}} | Numerical availability (quantity) |
{{variant.availabilityLabel}} | Textual availability (in stock / out of stock) |
{{variant.quantity}} | Inventory quantity |
{{variant.slug}} | Variant URL slug |
{{variant.weight}} | Weight in grams |
{{variant.weightKg}} | Weight in kg (e.g., 1.500) |
{{variant.length}} | Length in cm |
{{variant.width}} | Width in cm |
{{variant.height}} | Height in cm |
{{variant.volume}} | Volume in cm³ (L×W×H) |
{{variant.externalId}} | External ID (e.g., PrestaShop ID) |
{{variant.metadata.X}} | Variant metadata field (replace X with the key) |
{{product.metadata.X}} | Product metadata field (replace X with the key) |
{{asset.0}} | Primary image |
{{asset.1}} | Second image |
{{asset.2}} | Third image |
{{asset.N}} | N-th image |
{{asset.50}} | Fiftieth image |
{{tag.brand}} | Brand |
{{tag.color}} | Color |
{{tag.material}} | Material |
{{tag.size}} | Size/Measurement |
{{tag.gender}} | Gender |
{{tag.age_group}} | Age group |
{{tag.condition}} | Condition |
{{tag.product_type}} | Product type |
{{tag.energy_class}} | Energy class |
{{tag.manufacturer}} | Manufacturer |
{{tag.model}} | Model |
{{tag.pattern}} | Pattern |
{{store.name}} | Store name |
{{store.domain}} | Store domain |
Multilingual data is automatically resolved during generation, saving a specific feed for each language configured on the store.
Generation Logic
- Scoping: The feed operates at the variant level. If a product has 5 sizes, 5 elements will be generated in the feed (required for marketplaces like Google Shopping).
- Visibility: Only variants set as visible are exported.
- Inheritance: If a variant inherits assets or dimensions from the parent product, the feed will automatically resolve the correct data.
- Filters: You can link one or more
filterIds. In this case, the feed will only contain products that meet the criteria of the selected filters (e.g., only products from a certain category or brand). - Sitemap: Simultaneously with feed generation, Webround automatically updates the
sitemap-products.xmlto optimize SEO indexing.
Configuration Examples
1. Google Shopping (XML)
Wrapper Template:
<?xml version="1.0"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>{{store.name}}</title>
<link>{{store.domain}}</link>
<items>
{{items}}
</items>
</channel>
</rss>
Item Template:
<item>
<g:id>{{variant.id}}</g:id>
<g:title>{{product.name}} - {{variant.name}}</g:title>
<g:description>{{product.seoDescription}}</g:description>
<g:link>{{store.domain}}/p/{{variant.slug}}</g:link>
<g:image_link>{{asset.0}}</g:image_link>
<g:price>{{variant.price}} EUR</g:price>
<g:availability>{{variant.availabilityLabel}}</g:availability>
<g:brand>{{tag.brand}}</g:brand>
<g:gtin>{{variant.gtin}}</g:gtin>
</item>
2. Simple CSV Export
Wrapper Template:
id,sku,name,price,availability
{{items}}
Item Template:
"{{variant.id}}","{{variant.sku}}","{{product.name}}","{{variant.price}}","{{variant.availabilityLabel}}"
You can generate a feed on demand using the button after creating one.