Skip to content
Reddit
Ad platforms

Reddit catalog feed for Shopify

A Reddit catalog is the product list behind Product Ads and Dynamic Product Ads. Nothing is sold on Reddit; the ad links to the product page on your own site. Feedflock turns your Shopify catalog into the tab-delimited file Reddit's Catalog Manager expects and regenerates it every hour, so the price and stock in your ads match the page they link to.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
$59
In stock
0 pcs
When out of stock
02 · reddit.csvUpdated just now
id title description link image_link price sale_price availability condition brand gtin google_product_category product_type item_group_id additional_image_links color size gender custom_label_0
SKU-2048-M Linen shirt Sand M Breathable linen shirt with a relaxed regular fit. https://shop.example/products/linen-shirt-sand?variant=46012345678901 https://cdn.shop.example/img/linen-shirt-sand.jpg 59.00 USD out_of_stock new Nordlin 8594000123453 Apparel & Accessories > Clothing > Shirts & Tops Men's shirts 8812345678901 ["https://cdn.shop.example/img/linen-shirt-sand-2.jpg","https://cdn.shop.example/img/linen-shirt-sand-3.jpg"] Sand M Unisex linen,summer
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
Men's shirts
Catalog coverage79 %
−20% off compare-at
Productprice (regular)sale_​price
Linen shirt Sand$59.00$47.20
Mug Fjord 350 ml$18.00$14.40
Trail Pro$139.00$111.20
Backpack Ridge 28 l$89.00$71.20
Soy candle Les$16.00$12.80
$64.20saved across these products
5 / 5products with the sale overlay
Sale prices

A discount in the feed becomes a struck-through price in the ad.

Reddit shows sale_price next to the struck-out original price whenever it is lower, so price carries the regular price (the compare-at price while the variant is on sale) and sale_price the amount you actually charge. Both go out as a number, a space and an ISO currency code, always in the same currency, and a variant with no sale sends no sale_price at all.

Feed health

Catch feed issues before Reddit 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 · reddit.csv
75 / 100
To review: 4
Missing description on 6 productsdescription is one of Reddit's six required fields. Google only recommends it, Reddit requires it. A product without one is an error in Diagnostics.
Empty image_link on 3 productsimage_link is required and Reddit builds the ad from it, so a product without one has nothing to show.
No Google category on 11 productsgoogle_product_category is on Reddit's recommended list, the fields it says enhance data quality and optimize performance. It takes a Google taxonomy path or ID.
No brand on 8 productsbrand is recommended, not required, but the Shopify vendor is empty and a missing brand costs the ad data quality.

Setup

Live in five steps

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

  1. Create a catalog in Reddit Ads Manager

    In Catalog Manager, choose New Catalog, name it and pick its language and currency. There is one per catalog, so selling in two currencies means two catalogs. Managing catalogs requires the catalog manager role.

  2. Install Feedflock

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

  3. Pick the Reddit template

    Create a new feed and choose the Reddit Ads Catalog template. All six required fields come mapped (id, title, description, link, image_link and price), with one row per variant and id defaulting to the variant SKU.

  4. Match the feed's id to your pixel

    For dynamic product ads, the product id in the catalog must equal the id your Reddit Pixel sends with its ViewContent, AddToCart and Purchase events. If your pixel reports variant IDs rather than SKUs, switch the id mapping before the first sync.

  5. Register the feed URL

    Add a product source as a data feed: paste the hosted HTTPS URL and choose how often Reddit syncs it (hourly, daily or weekly). Pick the import mode deliberately: Replace deletes products no longer in the file, Update never deletes. Check Diagnostics after the first import.

    https://feedflock.appfleece.com/f/demo-reddit/reddit.csv

The feed

What the channel receives

reddit.csv
id	title	description	link	image_link	price	sale_price	availability	condition	brand	gtin	google_product_category	product_type	item_group_id	additional_image_links	color	size	gender	custom_label_0
SKU-2048-M	Linen shirt Sand M	Breathable linen shirt with a relaxed regular fit.	https://shop.example/products/linen-shirt-sand?variant=46012345678901	https://cdn.shop.example/img/linen-shirt-sand.jpg	59.00 USD		in_stock	new	Nordlin	8594000123453	Apparel & Accessories > Clothing > Shirts & Tops	Men's shirts	8812345678901	["https://cdn.shop.example/img/linen-shirt-sand-2.jpg","https://cdn.shop.example/img/linen-shirt-sand-3.jpg"]	Sand	M	Unisex	linen,summer
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

$59

Feed fields

id

SKU-2048-M

title

Linen shirt Sand M

description

Breathable linen shirt with a relaxed regular fit.

link

https://shop.example/products/linen-shirt-sand?variant=46012345678901

price

59.00 USD

availability

in_stock

condition

new

brand

Nordlin

gtin

8594000123453

google_product_category

Apparel & Accessories › Clothing › Shirts & Tops

product_type

Men's shirts

item_group_id

8812345678901

color

Sand

size

M

gender

Unisex

custom_label_0

linen,summer

The channel

Retargeting with the exact products viewed

Dynamic Product Ads show redditors the items they looked at on your site. It works by matching the id in the feed to the product id your Reddit Pixel sends. Get that join right and retargeting holds together.

Product sets aim the ads

A catalog can hold up to 200 product sets, built by filter on custom labels or product attributes, and a set is what a campaign advertises. Reddit's own advice for a first campaign: use All Products for the first thirty days, then narrow.

Diagnostics worth reading

Reddit reports per product, in two severities: an error must be fixed before the product can be used in ads, a warning keeps it eligible. Import reports break the file down by rows, product status and issues detected.

The feed

  • The Reddit template maps all six required fields plus Reddit's recommended ones: brand from your Shopify vendor, condition new by default
  • One row per variant, all sharing item_group_id, each with its own id: the variant SKU, falling back to the variant ID
  • The compare-at price goes to price and the discounted price to sale_price, so Reddit shows the original struck through; both always carry the ISO currency code, in the same currency by construction
  • Tab-delimited UTF-8 with Reddit's own column names. Tab is on Reddit's delimiter list and never collides with a title; additional images go out as the JSON-encoded list Reddit asks for
  • Reddit's own vocabulary where it differs from Google's: gender capitalized (Male, Female, Unisex), availability in its four values, gtin empty or 8–14 digits
  • A readiness check flags products missing a required field or a category, and fetch tracking warns you when Reddit stops downloading the feed. Reddit itself never notifies you when a refresh fails

Deep dive

01

How the Reddit catalog feed works

  • A data feed is a hosted URL Reddit syncs on your schedule: hourly, daily or weekly
  • HTTPS, FTP or SFTP URLs; credentials go in Catalog Manager's fields, never in the URL
  • Accepted files: CSV, Google Sheets, RSS 2.0 XML, TSV or compressed; ATOM is not supported
  • Import mode Replace removes products missing from the file; Update never deletes
Technical details

Catalog Manager reads a hosted file on the schedule you define: hourly, daily, or weekly at the time and day you pick. The URL can be HTTPS, FTP or SFTP, the file CSV, TSV, RSS 2.0 XML, a Google Sheet or a compressed archive up to 200 MB; only ATOM is ruled out. Feedflock renders the tab-delimited form Reddit's own documentation speaks in (columns, never elements) and hosts it on a stable public URL, regenerated every hour.

Choose the import mode deliberately: Replace imports and removes every product no longer in the file (usually what you want when Feedflock's product selection filters the catalog), while Update never deletes, so a filtered-out product keeps being advertised. And nobody tells you when a sync runs or fails: Reddit recommends checking your catalog regularly, which is exactly what Feedflock's fetch tracking does for you.

02

Six required fields, and the title is the caption

  • Required: id, title, description, link, image_link, price
  • id is 128 characters, SKU recommended, and it is the join to your pixel
  • Titles over 35 characters may be truncated in the ad's caption
  • Images are JPG or PNG only, at least 500 × 500 px, up to 20 MB, no WebP
Technical details

Reddit's required set is six fields: id, title, description, link, image_link and price. Availability, condition, brand, gtin and mpn are all merely recommended, and description is required outright, where Google only recommends it. A product missing a required field is an error; a bad value in an optional one is a warning and the product may still serve.

Two limits decide what a redditor actually reads: titles over 35 characters may be truncated in the product caption, and descriptions are recommended at 180 even though 5,000 fit. The image behind image_link must be a JPG or PNG of at least 500 × 500 px and at most 20 MB (no WebP, no GIF), and Reddit suggests a white background. The price is a number, a space and an ISO 4217 code, such as 59.00 USD, in the one currency the whole catalog shares.

03

Google's vocabulary, Reddit's rules

  • Every attribute is a Google Shopping attribute; google_product_category is named outright
  • But Reddit never says "send us your Google feed"; the required set and enums are its own
  • gender is capitalized (Male, Female, Unisex); gtin may be empty or 8, 12, 13 or 14 digits
  • additional_image_links is one cell holding a JSON-encoded list of URLs
Technical details

Every attribute Reddit publishes is a Google Shopping attribute, and the category column is literally called google_product_category: a valid Google taxonomy ID or path. A Google TSV or RSS file will very likely load. But Reddit's required set is smaller than Google's, and where the vocabularies differ, Reddit's spelling wins: gender is Male, Female or Unisex capitalized, gtin allows an empty cell next to the usual lengths, and availability runs in_stock, out_of_stock, preorder, backorder.

The one multi-value field is packed, not repeated: additional_image_links is a single cell holding a JSON-encoded list of URLs. Feedflock builds it from your product gallery, skipping the main image. Alongside google_product_category the feed carries product_type, your own categorization. Reddit publishes no tree of its own, so both come from the mapping you already maintain for Google.

04

The feed alone advertises nothing

  • Product Ads need a catalog, a product set and a campaign with the Catalog Sales objective
  • Dynamic Product Ads additionally need the Reddit Pixel or Conversions API
  • The pixel's ViewContent, AddToCart and Purchase events must carry the same product id as the feed
  • Out-of-stock rows stay in the feed; aim ads away with a product set filtered on in_stock
Technical details

A catalog by itself runs no ads. Product Ads need a catalog, at least one product set (an All Products set is created for every catalog) and a campaign with the Catalog Sales objective. Dynamic Product Ads need more: the Reddit Pixel or Conversions API sending ViewContent, AddToCart and Purchase events, the catalog mapped to that pixel, and (the part that silently breaks) the product id in the feed matching the id the pixel sends.

Sold-out products belong in the file: availability is recommended, not required, and an unavailable value is a warning, not a rejection. Reddit's own remedy is a filter, not a deletion: a product set filtered on in_stock keeps sold-out items out of the ads while the rows stay ready for the restock.

The takeaway

One URL, a sync schedule you choose and a file that already speaks Reddit's catalog format, with ids that match your pixel. Your Shopify catalog stays the single source of truth, and Reddit advertises its current state.

Claude · ChatGPT

Or set up your Reddit feed in chat

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

feedflock · mcp

Create a Reddit 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

No. Reddit is an ad platform, not a marketplace. The catalog powers Product Ads and Dynamic Product Ads, and every ad links to the product page on your own website, where checkout happens. That is also why the feed has no shipping attribute at all.
A UTF-8 CSV, TSV, RSS 2.0 XML, Google Sheet or compressed file up to 200 MB; ATOM is explicitly not supported. Feedflock renders the tab-delimited form: tab is on Reddit's own delimiter list, never collides with a product title, and Reddit documents columns throughout, shipping a CSV template rather than an XML sample.
Every attribute Reddit names is a Google attribute and a Google TSV or RSS file will very likely load. But Reddit never says it accepts a Google feed, and the differences are real: the required set is six fields, gender is capitalized, and additional images go in one JSON-encoded cell. A dedicated Reddit feed sends all of it Reddit's way.
On the schedule you choose when you register the feed URL: hourly, daily, or weekly at a time and day you pick. You won't be notified when a refresh occurs or fails, so Reddit recommends checking the catalog regularly; Feedflock's fetch tracking shows you when Reddit last downloaded the file.
The row stays in the feed with availability out_of_stock, one of Reddit's four values, next to in_stock, preorder and backorder. To keep sold-out items out of your ads, Reddit's own advice is a product set filtered on in_stock rather than deleting the rows.
The Reddit Pixel or Conversions API sending ViewContent, AddToCart and Purchase events, the catalog mapped to that pixel, and the product id in the feed equal to the id the pixel sends. Feedflock's id defaults to the variant SKU, so if your pixel reports variant IDs, switch the mapping before the first sync.
Yes. Filter by collection, tag, price or stock level in Feedflock, or exclude individual variants. Pair it with the right import mode: Replace removes whatever leaves the file, while Update keeps deleted products advertising.

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