Ducted

Reddit Product Catalog
feeds.

Dynamic product ads on Reddit.

Reddit's catalog spec requires six fields and recommends seventeen more, which is a different shape from the other channels: nearly everything you would send to Google is wanted here too, just not enforced. Two of its own rules are easy to miss.

additional_image_link is a JSON array of quoted URLs rather than a comma-separated list, and sale_price_effective_date is a strict ISO 8601 range with a time zone on both ends.

What the feed needs

Generated from the Ducted Reddit Product Catalog template, the same field rules your mapping is validated against.

40 fields: 6 required, 17 recommended, 17 optional.

FieldLevelAccepted values / example
idrequiredreddit_item_1234
titlerequiredUnisex Cotton T-Shirt
descriptionrequired
availabilityrecommendedin_stock · out_of_stock · preorder · backorder
conditionrecommendednew · refurbished · used
pricerequired123.45 USD
linkrequired
image_linkrequired
brandrecommended
gtinrecommended4006381333931
mpnrecommended
google_product_categoryrecommendedApparel & Accessories > Clothing > Dresses
product_typerecommendedApparel > Shirts
sale_pricerecommended14.99 USD
additional_image_linkrecommended["https://example.com/images/1234-2.jpg", "https://example.com/images/1234-3.jpg"]
item_group_idrecommended
mobile_linkrecommended
colorrecommended
sizerecommended
genderrecommendedmale · female · unisex
age_grouprecommendednewborn · infant · toddler · kids · adult
materialrecommended
patternrecommended

Field rules from the official spec, verified 2026-10-02.

Also supported, always optional (17): sale_price_effective_date, custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, size_type, expiration_date, platform_specific_link, cost_of_goods_sold, custom_number_0, custom_number_1, custom_number_2, custom_number_3, custom_number_4, average_review_rating, number_of_ratings

Where Reddit catalog feeds get rejected

additional_image_link as a plain list

Reddit wants ["https://...", "https://..."], a JSON array. The comma-separated list every other channel accepts fails the format check.

Availability spelled for another channel

in_stock, out_of_stock, preorder and backorder, with underscores. The spaced values Meta and TikTok use fail the accepted-values check; availability is recommended rather than required, so the record is flagged, not dropped. Reddit asks for condition on refurbished or used products.

Duplicate ids

Every id must be unique; Reddit recommends the SKU, and the catalog id must match the product id your pixel sends back.

Sale price not below price

Reddit only shows the struck-out original price when sale_price is lower than price. Every price must carry the catalog's currency.

Text that gets cut

Descriptions over 180 characters may be cut, which the health check files as a recommendation, and Reddit says titles over 35 characters may be truncated in the ad caption. Neither rejects the record.

Validate your product feed for free →

From source to a live feed URL

  1. Connect the source. A Shopify, WooCommerce, Teemill, Spring, Printify Pop-Up, Bonfire or Fourthwall store address, a file, a feed URL or a REST API. No source at all? Website Indexing builds one from the store itself.
  2. AutoMap the fields. Every source column is scored against the channel template and the best match is pre-filled. You confirm or tweak.
  3. Transform what needs it. Casing, currency and number formats, conditional values, fallbacks for fields the source sometimes leaves empty.
  4. Validate before you send. The health check names the field, counts the affected records and shows example rows from your own data.
  5. Serve a permanent URL. The platform fetches your feed on a schedule; feed pull tracking shows when it last did.

The rest of the shopping stack

One mapped catalog serves every channel; each page covers what that platform's feed needs.

E-commerce feedsGoogle ShoppingMeta CatalogTikTok CatalogPinterestMicrosoft ShoppingSnapchatX ShoppingCriteoChatGPT Ads

Reddit from the catalog you already mapped.

Add a Reddit output to an existing project, or start free and map your first.

Create free accountCheck an existing feed