Skip to content
Fruugo
Marketplaces

Fruugo feed for Shopify

Fruugo is a global cross-border marketplace: one retailer account, one feed in your own currency and language, and Fruugo localises it into 41 countries, 28 languages and 31 currencies. It is not a comparison site. Fruugo takes the order, handles payment and fraud, and pays you. Feedflock builds the XML feed from your Shopify catalog against Fruugo's published specification (one Product per variant, a mandatory EAN, a price with its own VAT rate) and hosts it on the stable URL Fruugo collects on schedule, because manual upload is the one thing Fruugo does not accept.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
49 €
In stock
0 pcs
When out of stock
02 · fruugo.xmlUpdated just now
<Product>
<ProductId>8236409175213</ProductId>
<SkuId>SKU-2048</SkuId>
<EAN>8594000123453</EAN>
<Brand>Nordlin</Brand>
<Category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops &gt; Mens</Category>
<PackageWeight>220</PackageWeight>
<Imageurl1>https://cdn.shop.example/img/linen-shirt-sand.jpg</Imageurl1>
<Imageurl2>https://cdn.shop.example/img/linen-shirt-sand-back.jpg</Imageurl2>
<StockStatus>OUTOFSTOCK</StockStatus>
<StockQuantity>12</StockQuantity>
<Description>
<Title>Linen shirt Sand</Title>
<Description>Relaxed linen shirt with a classic collar, in breathable European linen.</Description>
<AttributeSize>M</AttributeSize>
</Description>
<Price>
<Currency>EUR</Currency>
<NormalPriceWithVAT>49.00</NormalPriceWithVAT>
<VATRate>21</VATRate>
</Price>
</Product>
Category mapping

Your product types. The channel's categories.

The channel files offers under its own category tree. Feedflock suggests a category for each Shopify product type and you just confirm. One mapping covers every product of that type, including products you add later.

Full category path in the feed
One mapping per product type
Override per individual product
Shopify typeproducts
Channel category
Pánské košile
Catalog coverage79 %
−20% off compare-at
ProductNormalPriceWithVATDiscountPriceWithVAT
Linen shirt Sand49.00 €39.20 €
Mug Fjord 350 ml15.00 €12.00 €
Trail Pro119.00 €95.20 €
Backpack Ridge 28 l75.00 €60.00 €
Soy candle Les14.00 €11.20 €
54.40 €saved across these products
5 / 5products with the sale overlay
Sale prices

A discount is a second price, inside the same Price block.

Fruugo models a sale as a pair: NormalPriceWithVAT keeps the list price and DiscountPriceWithVAT carries the discounted one, always on the same side of VAT, and never both discount fields at once. An optional start and end date bound the promotion window. The discount lives in the feed, so the price Fruugo shows is the price you shipped.

6 images per product
1
In the feed
2
In the feed
3
In the feed
4
In the feed
5
No element
6
No element
4images in the feed
2without an element
Image gallery

Five image slots, numbered. The sixth has no element.

Fruugo takes one mandatory main image plus four more in the numbered Imageurl2–5 elements. Every image must be at least 400 × 400 px, on a white background, without watermarks or overlaid text. Stage three of Fruugo's validation rejects the rest. And one gotcha: an image is re-fetched only when its file name changes.

Feed health

Catch feed issues before Fruugo does.

Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.

Feed quality · fruugo.xml
76 / 100
To review: 4
Category as a partial path on 9 productsFruugo wants its own full path from the department down, in English and case sensitive: “Shirts & Tops > Mens” alone fails the manual data validation.
EAN mangled into scientific notation on 14 variantsA barcode rounded by a spreadsheet into 1.05E+12 is Fruugo's own documented cause of whole feeds being disapproved.
Title repeats the variant on 7 productsA grouped product's title must not mention size or colour. Those ride in AttributeSize and AttributeColor.
VATRate empty on 6 productsThe VAT rate is mandatory even for non-EU retailers, where it is listed as 0. An empty element fails field validation.

Setup

Live in five steps

From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.

  1. Apply to Fruugo

    Onboarding is an application, not a signup: Fruugo's Business Development team agrees your account configuration with you. You need to be a VAT-registered company able to ship internationally.

  2. Install Feedflock

    Add Feedflock from the Shopify App Store. It reads your products, variants, stock, images and tax setup directly through the Shopify API.

  3. Pick the Fruugo template

    One Product per variant, variants grouped by a shared ProductId, the plain product title, a gross price with VATRate as its own element and the closed stock enum are mapped from the start.

  4. Map your categories

    Category must be Fruugo's own full path, in English, case sensitive. Feedflock syncs Fruugo's tree of 5,543 paths, so you pick from the real tree instead of typing paths by hand.

  5. Hand over the feed URL

    The hosted URL is what you supply during onboarding. An Integration Specialist reviews your first submissions; once live, Fruugo collects the URL each time a new version is published.

    https://feedflock.appfleece.com/f/demo-fruugo/fruugo.xml

The feed

What the channel receives

fruugo.xml
<Product>
  <ProductId>8236409175213</ProductId>
  <SkuId>SKU-2048</SkuId>
  <EAN>8594000123453</EAN>
  <Brand>Nordlin</Brand>
  <Category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops &gt; Mens</Category>
  <PackageWeight>220</PackageWeight>
  <Imageurl1>https://cdn.shop.example/img/linen-shirt-sand.jpg</Imageurl1>
  <Imageurl2>https://cdn.shop.example/img/linen-shirt-sand-back.jpg</Imageurl2>
  <StockStatus>INSTOCK</StockStatus>
  <StockQuantity>12</StockQuantity>
  <Description>
    <Title>Linen shirt Sand</Title>
    <Description>Relaxed linen shirt with a classic collar, in breathable European linen.</Description>
    <AttributeSize>M</AttributeSize>
  </Description>
  <Price>
    <Currency>EUR</Currency>
    <NormalPriceWithVAT>49.00</NormalPriceWithVAT>
    <VATRate>21</VATRate>
  </Price>
</Product>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

49 €

Feed fields

ProductId

8236409175213

SkuId

SKU-2048

EAN

8594000123453

Brand

Nordlin

Category

Apparel & Accessories › Clothing › Shirts & Tops › Mens

PackageWeight

220

StockStatus

INSTOCK

StockQuantity

12

Title

Linen shirt Sand

Description

Relaxed linen shirt with a classic collar, in breathable European linen.

AttributeSize

M

Currency

EUR

NormalPriceWithVAT

49.00

VATRate

21

The channel

One feed, 41 countries

You file one feed in your own currency and language; Fruugo translates it into 28 languages and converts prices into 31 currencies across its 41 country storefronts.

Fruugo runs the checkout

Fruugo takes the order, handles payment and fraud, and pays the retailer. There is no click to bid on and no shared catalogue to pair into. Your record is the listing.

A fully public specification

Field tables, field limits, the CSV dialect, the GTIN rules and the 5,543-path category tree are all published on Fruugo's own documentation wiki: no NDA, no guesswork.

The feed

  • A template written against Fruugo's published spec, down to the case-sensitive element spellings like Imageurl1 and AttributeColor
  • All eleven mandatory fields mapped from the start, from ProductId and EAN to Title, NormalPriceWithVAT and VATRate
  • One Product per variant with ProductId as the permanent grouping key, and the title stays the plain product name, because size and colour belong in AttributeSize and AttributeColor
  • Categories picked from Fruugo's own tree, synced into Feedflock: 5,543 full English paths, written case-sensitively with the department included
  • Price the way Fruugo wants it: gross, with a decimal point and no currency symbol, the currency and VAT rate in their own elements, plus a discount price with a date window when you run a sale
  • Sold-out variants stay in the feed as OUTOFSTOCK. Fruugo forbids removing even permanently unavailable items from the file
  • Hosted on the stable URL Fruugo collects on its schedule, regenerated as often as every hour, with fetch tracking that shows when Fruugo last pulled it

Deep dive

01

One feed for 41 countries

  • One feed in your own currency and language serves every Fruugo country
  • Fruugo translates the content into 28 languages and converts prices into 31 currencies
  • The Currency element is your currency, not the buyer's. Fruugo recommends your registered country's native currency
  • Country is an include list and stays empty, unless a product ships to fewer countries
Technical details

Fruugo's model is the opposite of a per-country marketplace: one retailer account, one feed, one currency and one language, and Fruugo does the localising: translation into 28 languages and conversion into 31 currencies across 41 countries. The Currency element in the feed therefore carries your currency, not the shopper's, and Fruugo recommends the native currency of your registered country.

If a product ships to fewer countries than your account does, the optional Country element inside Price narrows it: a space-separated include list such as IE FR DE. It ships empty by default, because filling it would quietly narrow a global feed.

02

Fruugo fetches your URL and accepts nothing else

  • The feed must live on a merchant-hosted URL that Fruugo collects automatically
  • Manual upload is explicitly not accepted; publish at least daily
  • The account cap is 150,000 SKUs unless Fruugo authorises more
  • Feedflock hosts the file on a stable URL and regenerates it as often as every hour
Technical details

Fruugo's published policy is that all data arrives on an automated feed published to a static URL, generated at least daily. Manual upload is not accepted, and the one FTP exception covers only the CSV form. Fruugo then collects the file each time a new version is published; no fixed interval is published, so freshness is your side of the bargain.

That is exactly the model Feedflock is built on: the file lives on a stable URL, regenerated on your schedule as often as every hour, and you hand the URL over once, during onboarding. The account itself is capped at 150,000 SKUs unless Fruugo specifically authorises more.

03

Five validation stages: the fourth one is a person

  • Stage one checks the feed's structure, stage two validates every mandatory field against the schema
  • Stage three rejects images under 400 × 400 px, off a white background or carrying watermarks
  • Stage four is manual: a person checks brand usage, categorisation and product descriptions
  • Each stage reports the offending SKUs, and a spreadsheet-mangled EAN can disapprove a whole feed
Technical details

Every feed passes five stages: a structure check, automated field validation (mandatory fields present and populated, character lengths, unsupported values), an image quality check, manual data validation, and completion. A report per stage names the offending SKUs. The automated stage is where Fruugo's published field limits bite: an image URL over 150 characters is a real example.

Stage four is the one no file can pass on its own: Fruugo's team checks brand usage, categorisation and descriptive content by hand, which is why a partial or wrongly cased category path fails even when the XML is perfect. Fruugo's own cautionary tale is the spreadsheet that rounds a 13-digit EAN into 1.05E+12, a formatting slip that disapproves whole feeds.

04

IDs are permanent, the EAN is mandatory, the title stays plain

  • ProductId groups a product's variants; the ProductId + SkuId pair must never change or be reused
  • EAN is mandatory for every product: own-brand and custom goods send the literal EXCEP, books use ISBN
  • The title must not repeat size or colour, nor carry prices, stock or promotional text
  • Images are re-fetched only when their file name changes
Technical details

There is no shared catalogue to pair into on Fruugo: your record is the listing. What groups a product's variants is a shared ProductId, with SkuId identifying each option, and both values are permanent: never changed, never reused for a new item. EAN is a mandatory universal identifier of up to 14 digits; makers of own-brand, custom, personalised or bundle goods send the literal EXCEP instead, and books switch to ISBN.

The title rules follow from the grouping: a grouped product's title must not mention size or colour (those ride in AttributeSize and AttributeColor) and must never carry condition, price, stock or promotional text. One more gotcha is unique to Fruugo: images are re-fetched only when the file name changes, so editing an image in place never updates it on Fruugo.

The takeaway

One feed in your own language and currency, five validation stages, forty-one countries. Feedflock keeps your Fruugo feed on the published spec and on the URL Fruugo collects, straight from Shopify, as often as every hour.

Claude · ChatGPT

Or set up your Fruugo feed in chat

Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Fruugo's own tree and tells you what is still missing. You approve every change.

feedflock · mcp

Create a Fruugo feed for my store and map my categories.

I'll create it as a draft and show you each change before I make it.

FAQ

All of them. One feed in your own currency and language serves Fruugo's 41 countries; Fruugo translates the content into 28 languages and converts prices into 31 currencies. There is no per-country feed to build.
Only from a hosted URL. Fruugo's policy is an automated feed on a static URL, generated at least daily. Manual upload is not accepted. Fruugo collects the file each time a new version is published, and no fixed interval is published, so Feedflock regenerates it as often as every hour to keep every collection current.
Either, never both. NormalPriceWithVAT or NormalPriceWithoutVAT, as a bare number with a decimal point and no currency symbol, with the currency in its own element. VATRate is always mandatory: the rate as a number without the % sign, or 0 if you are a non-EU retailer. The template sends the gross price, because that is what a Shopify price is.
Own-brand, custom, personalised, multipack and bundle goods send the literal EXCEP in the EAN element, Fruugo's own exception value. Books send ISBN instead of EAN. Everything else needs a real GTIN of up to 14 digits.
It stays in the feed with StockStatus OUTOFSTOCK. Permanently discontinued items are marked NOTAVAILABLE, and even those must not be removed from the file; Fruugo removes them itself. Feedflock keeps sold-out variants in the feed for exactly this reason.
Fruugo reports per stage and per SKU. The usual causes: a partial or wrongly cased category path, an EAN a spreadsheet rounded into scientific notation, an image under 400 × 400 px or with a watermark, or a title carrying size, colour or promotional text. The fourth stage is a manual review of brand usage, categorisation and descriptions.
Yes. In Feedflock, filter by collection, tag, price or stock, or exclude individual variants. To narrow where a product sells, the Country element inside Price is a space-separated include list (for example IE FR DE). Leave it empty and your account's own country settings apply.

Get on every marketplace that matters this afternoon.

Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.

.myshopify.com