
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.

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.
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.
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.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
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.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
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.
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.
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
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

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
How the Reddit catalog feed works
- A data feed is a hosted
URLReddit syncs on your schedule: hourly, daily or weekly HTTPS,FTPorSFTPURLs; credentials go in Catalog Manager's fields, never in theURL- Accepted files:
CSV, Google Sheets,RSS2.0XML,TSVor compressed;ATOMis 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.
Six required fields, and the title is the caption
- Required: id, title, description, link, image_link, price
- id is 128 characters,
SKUrecommended, and it is the join to your pixel - Titles over 35 characters may be truncated in the ad's caption
- Images are
JPGorPNGonly, 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.
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.
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.
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
Related feeds
Explore all 101 channelsGet on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.