Affiliate feeds: how to build a product feed publishers can actually use

A good product feed decides whether comparison sites, content sites and deal newsletters can show your products at all. Which fields are mandatory, how often should you update, and what are the most common mistakes?

Jetske Feenstra By Jetske Feenstra · · 4 min read
Affiliate feeds: how to build a product feed publishers can actually use

A product feed sounds simple: a list of what you sell, with prices and images, in a format a publisher can import. In practice we see feeds every week that nobody can do anything with: missing fields, stale prices, broken URLs, missing variants.

A good feed is the difference between a comparison site that offers your products and one that simply skips you. This is what we would like to receive from you at Klatsa.

The mandatory fields

Without these eight your feed is effectively unusable:

Field Description Example
id Unique product ID, stable over time SKU-12345
title Full product name Apple iPhone 15 Pro 256GB Titanium
description 1 to 3 sentences about the product iPhone 15 Pro with A17 Pro chip…
link Product page URL (deeplinkable) https://shop.nl/p/iphone-15-pro
image_link Main image, at least 800×800 https://shop.nl/img/iphone15.jpg
price Price including VAT, with currency 1199.00 EUR
availability in stock / out of stock / preorder in stock
brand Brand name Apple

If one of these is missing, there are publishers who will simply skip your product.

The fields you should want to send

These make the difference between "somewhere in the long tail" and "top of the comparison":

  • gtin or mpn: global trade item number / manufacturer part number. Indispensable for matching the same product across shops.
  • category: a Google product category path or your own categorisation. Helps with filtering.
  • sale_price + sale_price_effective_date: for running promotions.
  • color, size, material: essential for fashion and home products.
  • shipping: shipping costs and delivery time. Comparison sites show this prominently.
  • gtin_unit_pricing_measure: for food and drugstore products (€/100 ml and so on).
  • item_group_id: to link variants of the same product.

Handling variants

The biggest stumbling block for advertisers. Many feeds send one entry per "parent product", while publishers often want to show each variant (a T-shirt in size M in black is not the same thing as L in white).

The right approach: every sellable variant is its own <item> with its own id, its own link (with the variant query string), its own image_link and its own price. Link them with item_group_id so publishers can group them if they want to.

Update behaviour

Older than 24 hours is not acceptable for:

  • Stock status
  • Price changes
  • Sale promotions

Best practice for an average shop:

Type of update Frequency
Full feed rebuild Once every 24 hours (at night)
Stock and price deltas Hourly, or on every change
URL validation Weekly

Our feed importer picks up these deltas without publishers noticing a thing.

Formats

In the order publishers prefer them:

  1. XML: the Google Merchant feed format (google-merchant-namespace). Standard and well documented.
  2. CSV: pragmatic, mainly for small catalogues. Mind the escaping of commas and quotation marks.
  3. JSON: modern, good for API-driven shops. But fewer comparison sites support it directly.

We accept all three. Under the hood we normalise to a single internal schema, so publishers get it in the format they prefer.

Common mistakes

We see these every week:

  • HTML in description: fine, but escape it properly, otherwise the parser breaks
  • Commas in prices: 1.199,00 does not work for most parsers, use 1199.00
  • Missing currency: 1199.00 is not a price, 1199.00 EUR is
  • Unreachable image URLs: no access for non-EU IP addresses, or a CDN that blocks hotlinking
  • Unstable product IDs: if you generate new IDs every night, a comparison site cannot send a "back in stock" notification
  • Duplicates: the same product five times over because that is what your catalogue management tool does on sync
  • Not marking out-of-stock items: leave them in the feed, but set availability correctly

The Shopify shortcut

Do you run Shopify? Then you do not have to build any of the above yourself. Our Shopify integration generates a correct product feed (all mandatory fields, all variants, real-time stock) automatically from your catalogue. You activate it in our admin, connect your shop, and your product feed is live within minutes.

For custom shops we build the feed export together with your development team. We help with the schema, validate your feed and take part in the first sync test.

Questions, or would you like a feed reviewed? Email us or register as an advertiser, and we will set it up together.

#feeds #product-data #advertisers #practical

Ready to get started?

Whether you're an advertiser or a publisher, signing up is free and takes less than 5 minutes.