
Billiger.de feed for Shopify
Billiger.de is the Karlsruhe price comparison site run by solute, and one feed lists you in the whole billiger.de network: the comparison itself, partner portals and Google CSS / Microsoft Shopping ads. Feedflock turns your Shopify catalog into the CSV the solute spec documents: twelve required columns per offer, prices incl. VAT without a currency sign, shipping cost and delivery time in every row, one row per variant.

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.
Catch feed issues before Billiger.de 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.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
Register with solute
Sign up as a billiger.de merchant and sign the contract; your partner-portal credentials arrive once solute has it. Your shop needs a cart, an imprint, a cancellation policy and gross prices in the local currency.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, prices and images directly through the Shopify API.
Pick the Billiger.de template
Create a new feed and choose the Billiger.de template. aid, GTIN, name, brand, desc, link, target_url, images, price and shop_cat are mapped from the start, one row per variant with the variant in the name.
Enter your shipping cost
dlv_cost and dlv_time are required on every row and legally expected in Germany. Feedflock deliberately leaves the shipping cost empty until you enter your real rate, because 0.00 would declare free shipping. Selling to Austria too? dlv_cost_AT is ready.
Set up the feed in the partner portal
Configure the feed export at partner.solute.de and check it with solute's Feedcheck validator before it goes live. Feedflock regenerates the file every hour on the same URL.
https://feedflock.appfleece.com/f/demo-billiger/billiger.csv
The feed
What the channel receives
aid,GTIN,name,brand,desc,price,old_price,link,target_url,images,shop_cat,dlv_cost,dlv_time,availability,condition,item_group_id,size,color SKU-2048,8594000123453,Linen shirt Sand M,Nordlin,A breathable linen shirt in a regular cut.,49.00,,https://shop.example/products/linen-shirt-sand?variant=9087654322&utm_source=billiger.de&utm_medium=cpc,https://shop.example/products/linen-shirt-sand?variant=9087654322,https://cdn.shop.example/img/linen-shirt-sand.jpg;https://cdn.shop.example/img/linen-shirt-sand-2.jpg,Mode > Herren > Hemden,4.90,1-3 Werktage,in stock,new,8236409175213,M,Sand

Nordlin
Linen shirt Sand
49 €
Feed fields
aid
SKU-2048
GTIN
8594000123453
name
Linen shirt Sand M
brand
Nordlin
desc
A breathable linen shirt in a regular cut.
price
49.00
link
https://shop.example/products/linen-shirt-sand?variant=9087654322&utm_source=billiger.de&utm_medium=cpc
target_url
https://shop.example/products/linen-shirt-sand?variant=9087654322
shop_cat
Mode > Herren > Hemden
dlv_cost
4.90
dlv_time
1-3 Werktage
availability
in stock
condition
new
item_group_id
8236409175213
size
M
color
Sand
The channel
One feed, the whole network
The same feed that lists you on billiger.de also drives what solute calls the billiger.de network: partner portals and Shopping ads on Google CSS and Microsoft Advertising are served from it automatically.
Shipping is part of the price
billiger.de folds the shipping cost into the total price it compares, so the offer that wins is the cheapest delivered, not the cheapest sticker. A feed with honest dlv_cost values competes on the number shoppers actually pay.
A validator before you go live
solute's Feedcheck tool checks your file before the first listing, and its expert team reviews the feed at onboarding. You find out what is wrong before shoppers do.
The feed
- All twelve required columns (aid, GTIN, name, brand, desc, link, target_url, images, price, dlv_cost, dlv_time and shop_cat) mapped from the start; the shipping rate is the one value only you can enter
- Prices go out incl. VAT as bare numbers with a dot decimal and no currency sign, as the spec's formatting rules demand
- Every variant is its own row sharing one item_group_id, with the variant title in the name and a ?variant= deep link that preselects it in your store
- link carries your feed-level UTM parameters for traffic analysis; target_url stays the canonical shop URL solute checks the landing page against
- Your compare-at price fills old_price only when it is actually higher, so the strike-through saving shown with it is real
- shop_cat keeps your own category path while the category mapping resolves google_product_category on the German Google tree
- The readiness check lists required columns with gaps (a missing GTIN, an empty shop_cat, the shipping cost you have not entered yet) before the first export
Deep dive
A CSV with strict, simple rules
CSV,JSONorXML(theCSVshape is the one the spec documents in detail):UTF-8, one file, one language- Comma between columns, double quotes around fields that need them, semicolon for lists inside a cell
- A header row is mandatory; column order and names are free, but the spec's own names map automatically
- Compression is allowed; every variant of an article is its own row
Technical details
solute's feed guide accepts CSV, JSON or XML, but the CSV shape is the one it documents line by line: UTF-8 encoding, a mandatory header row, a comma between columns, double quotes around any field that contains the delimiter, and a semicolon as the list separator inside a cell, so two image URLs travel in one images cell. The whole catalog goes in one file, in one language, and compression is allowed.
Column order and names are formally free (solute maps them rather than matching them), but a renamed column can interrupt your listing, so the template keeps the spec's names verbatim, down to the uppercase GTIN. Feedflock renders exactly this layout and hosts the file on a stable URL.
The required twelve
- Required on every offer: aid,
GTIN, name, brand, desc, link, target_url, images, price, dlv_cost, dlv_time, shop_cat GTINfor every article that has a manufacturer barcode; an article without one needs mpn instead- A price of 0.00 or less is the one named rejection: the article is refused
- Price, availability and details on the landing page must match the feed and be visible without a login
Technical details
Twelve columns are required on every offer: a stable per-variant aid, the GTIN, a name that distinguishes the variant, brand, a plain-text description without HTML or links, both URLs, at least one image, the price incl. VAT, shipping cost, delivery time and your shop's own category path. The one named rejection in the spec is the price: 0.00 or less and the article is refused.
Two URLs are required because they do different jobs. link is the deep link with your tracking parameters for traffic analysis; target_url must be the shop URL and is the address solute checks the landing page against. Price, availability and details there have to match the feed and be visible without a login. Feedflock deep-links the exact variant in both and appends your feed-level UTM to link.
Delivery is part of the offer
- dlv_cost and dlv_time are required on every row: no carrier columns, no
COD, no payment methods - 0.00 declares free shipping, including when the offer alone exceeds your free-shipping threshold
- dlv_time always carries a unit ('2 Werktage', '1-3 Tage'); without one, days are assumed
- dlv_cost_AT adds the Austrian rate when you also ship there
Technical details
billiger.de has no feed-level shipping settings and no carrier list: the shipping cost and delivery time travel inside every row as dlv_cost and dlv_time, and both are required. The cost is a bare number without a currency sign, and 0.00 means free, also when you ship free above a basket value and this offer alone crosses the threshold, because the feed carries the resolved cost, never the threshold.
The template ships no default rate on purpose: 0.00 would declare free shipping on your behalf, and solute names missing shipping costs as the main cause of abandoned purchases. You type your real flat rate once (or keep it in a metafield per product); dlv_time defaults to "1-3 Werktage", always with a unit. Shipping to Austria gets its own optional column, dlv_cost_AT.
Your category path, plus Google's
- There is no billiger.de category tree: shop_cat carries your shop's own path, in German
- Generic paths like “Sale” or “Top-Deal” and brand or model names in the path are disallowed
- google_product_category is optional: a path from Google's taxonomy, in German, in its own column
- The numeric google_product_category_ID lives in a separate column and reads from a metafield
Technical details
solute publishes no category tree of its own. The required shop_cat column carries your shop's own category path in German: “Mode > Herren > Hemden”, not “Sale-Angebot” and never a brand or model name folded into the path. It fills from your Shopify product type by default.
If you want a standardised tree on top, google_product_category takes a path from Google's product taxonomy in German. Feedflock's category mapping for this feed runs on exactly that tree, the same Google taxonomy family the idealo and Google Shopping feeds use, so one shop-level mapping serves all three. The numeric ID form travels in its own column from a metafield.
The takeaway
One URL, an hourly refresh and a CSV that already follows solute's formatting rules: twelve required columns, variant by variant, shipping included. Your Shopify catalog stays the single source of truth for the whole billiger.de network.
Claude · ChatGPT
Or set up your Billiger.de feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Billiger.de's own tree and tells you what is still missing. You approve every change.
Create a Billiger.de 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
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.