- Ecommerce Catalog Product
A product object in an ecommerce catalog upload. The catalog file must be a JSON array of these objects. The id, title, and url fields are required; all others are optional.
Your unique product identifier. Used to match products on re-upload so only changed products are re-indexed. Also the delete key — any product ID absent from a new upload is removed from Fin's knowledge. Must be stable across uploads.
Product name. Used by Fin when searching for and recommending products.
Canonical product page URL shown in Fin's product recommendations. Must be a valid https:// URL.
Product description that Fin reads to understand what the product is. HTML formatting is supported and safely sanitized (description_html takes precedence if both are provided). This is the primary field Fin uses to match products to shopper questions — a richer description leads to better recommendations.
HTML product description. Takes precedence over description when both are provided. HTML is safely sanitized before indexing.
Primary product image shown in Fin's recommendation cards. Falls back to the first entry of image_urls if not provided. If no valid image can be resolved for a variant, that variant's recommendation card is not shown to the shopper.
Additional product images. Used as a fallback image source when featured_image_url is absent or when a variant has no specific image.
[ "https://cdn.example.com/images/t-shirt-back.jpg", "https://cdn.example.com/images/t-shirt-detail.jpg" ]
Lowest price across all variants. If omitted, derived automatically from variant prices. Fin uses this to filter products when a shopper mentions a budget (e.g. "under $100"). Displayed as a range alongside price_max, or as a single value if both are equal.
Highest price across all variants. If omitted, derived from variant prices. Used alongside price_min for budget filtering and price display.
ISO 4217 currency code for all prices on this product (e.g. "USD", "EUR", "GBP"). Defaults to USD if omitted. Used to format prices with the correct symbol in Fin's responses and product cards.
Whether the product is available to purchase. If omitted, derived from variant stock — the product is in stock if at least one variant has in_stock: true. Products with no in-stock variants are hidden from Fin entirely and will not be recommended to shoppers.
Collections or groupings this product belongs to in your store. Fin uses collections to understand your catalog's structure and answer questions like "what's in the sale collection?". Each element may be a plain string or an object with a title field.
Hierarchical category breadcrumb for the product. Fin understands the hierarchy — a shopper asking about "Clothing" will see products from all subcategories underneath it. The most specific category is shown in search results. Strongly recommended. Provide as a pre-formatted string (e.g. "Clothing > T-Shirts") or as an array of path segments (e.g. ["Clothing", "T-Shirts"]). Array segments are joined with >.
Option types available for this product and their possible values (e.g. {"name": "Size", "values": ["S", "M", "L"]}). Fin uses these to understand what choices a shopper can make and to correctly filter variants when a shopper asks for a specific size, colour, or other attribute.
Individual purchasable variants of the product. Fin recommends specific variants (not just products), so populating variants with accurate stock, price, and option data leads to more precise recommendations. See ecommerce_catalog_variant for the variant object schema.
Custom attributes for your business. Fin uses these to show each customer only the products relevant to them (e.g. regional availability or warehouse codes). All keys must be consistent across all products in your catalog — the attribute schema is read from the first product in the file.
{ "sku": "TSHIRT-BLU-L", "vendor": "Acme Apparel" }
{ "id": "prod-12345", "title": "Classic Cotton T-Shirt", "url": "https://example.com/products/classic-cotton-t-shirt", "description": "A comfortable everyday t-shirt made from 100% organic cotton.", "description_html": "<p>A comfortable everyday t-shirt made from <strong>100% organic cotton</strong>.</p>", "featured_image_url": "https://cdn.example.com/images/t-shirt-main.jpg", "image_urls": [ "https://cdn.example.com/images/t-shirt-back.jpg", "https://cdn.example.com/images/t-shirt-detail.jpg" ], "price_min": 19.99, "price_max": 39.99, "currency": "USD", "in_stock": true, "tags": [ "organic", "bestseller" ], "collections": [ "Summer Collection" ], "category_path": "Clothing > T-Shirts", "available_options": [ { … } ], "variants": [ { … } ], "additional_data": { "sku": "TSHIRT-BLU-L", "vendor": "Acme Apparel" } }