What is the Instagram Product Feed?
The Instagram product feed is a data file that synchronises your product catalogue with Instagram Shopping. It allows you to display products directly within Instagram's interface, enabling users to discover and purchase items without leaving the app. Instagram reads your feed data to populate product tiles, carousels, and shopping tabs on your business profile and in user feeds.
Merchants use Instagram Shopping to reach users during the moment of intent. Unlike organic social content, shopping feeds operate as a direct sales channel. Your feed data determines whether products appear at all, how they display, whether they pass Instagram's commerce policies, and ultimately whether they convert.
Instagram retrieves product data from your Shopify store, Facebook Catalog, or external feed file (CSV, XML, or JSON). The platform validates every field against specific requirements. Products that fail validation are rejected and do not appear in shopping results. Products with incomplete or misleading data are deprioritised in ranking.
Core Product Identification Fields
These fields establish what a product is and how Instagram uniquely identifies it in your catalogue.
id is a required, unique identifier for each product variant or SKU. Instagram uses this to match incoming feed updates to existing products and to track performance metrics. The value must remain consistent across all feed submissions. If you change an id, Instagram treats the product as new, losing all historical performance data and engagement.
title is the product name displayed to shoppers. It is required and limited to 150 characters. Instagram uses title text for search indexing and filtering. Titles that include keywords (brand name, product type, key attributes) improve discoverability. Avoid keyword stuffing or special characters that trigger spam filters. A title like 'Cotton T-Shirt, Blue, Size M' performs better than 'Product' or 'Item 12345'.
description provides additional context and is limited to 5000 characters. Use it to communicate key product benefits, materials, care instructions, or fit details. Instagram does not use description text for search ranking, but it influences click-through rates when shoppers view product detail pages. Clear, scannable descriptions reduce return rates.
gtin (Global Trade Item Number) is the barcode or EAN/UPC code. It is optional but strongly recommended. Instagram uses gtin to match your product data against known product databases and to detect duplicates or counterfeit listings. Products with valid gtins are more likely to be approved and ranked higher in results.
mpn (Manufacturer Part Number) is the unique identifier assigned by the brand or manufacturer. It is optional and used similarly to gtin for product verification and duplicate detection.
brand is the product manufacturer or brand name. It is optional but recommended. Instagram uses brand data for filtering and faceted search. Accurate brand information helps users find products from specific makers and signals data quality to Instagram's systems.
product_type describes the category or type of product in your own taxonomy. It is optional. Use it to segment products by your internal classification (e.g., 'Shoes > Running Shoes > Men's' or 'Apparel > Outerwear'). This field is separate from google_product_category and helps Instagram understand your catalogue structure.
Pricing and Availability Fields
These fields control how products appear in search results, whether they are purchasable, and what price is displayed.
price is the current selling price and is required. Format as a decimal number with currency code (e.g., '29.99 GBP'). Instagram uses price for filtering and sorting. Products without price data are rejected. If price changes frequently, update your feed regularly to avoid showing stale prices that lead to checkout friction.
sale_price is an optional discounted price. When provided, Instagram displays both the original price and sale price, signalling an active promotion. This can improve click-through rates. Always pair sale_price with sale_price_effective_date to indicate the promotion window.
sale_price_effective_date specifies the date range during which the sale_price applies. Format as 'YYYY-MM-DD/YYYY-MM-DD'. If this date range has expired, Instagram may show the sale_price as invalid or remove the promotional badge, confusing shoppers and damaging trust.
availability indicates stock status and is required. Accepted values are 'in stock', 'out of stock', and 'preorder'. Products marked 'out of stock' are hidden from search results but retain their listing. If you fail to update availability when stock runs out, shoppers will click through only to find the product unavailable, increasing bounce rates and reducing your catalogue's credibility.
inventory is the quantity on hand. It is optional. Some merchants use this to show 'only 2 left' messaging, which can increase urgency and conversion. If you provide inventory data, keep it synchronised with your point-of-sale system to avoid overselling.
Product Attributes and Classification
These fields describe product characteristics and help Instagram classify items correctly.
condition describes the product state: 'new', 'refurbished', or 'used'. It is optional but required for certain categories (e.g., electronics, fashion). Misrepresenting condition violates Instagram's commerce policies and can result in account suspension. Always set condition accurately.
google_product_category is the standardised category from Google's product taxonomy. It is optional but recommended. Use the numeric category ID (e.g., '188' for 'Apparel & Accessories > Clothing > Shirts & Tops'). This helps Instagram understand your product and apply category-specific rules (e.g., prohibited items, age restrictions).
color is the product colour. It is optional. When provided, Instagram uses this for filtering and faceted navigation. Shoppers can narrow results to specific colours, increasing relevance. Use standard colour names ('Blue', 'Red', 'Black') rather than subjective descriptions ('Sky Blue', 'Crimson').
size is the product size. It is optional. Formats vary by category: 'S', 'M', 'L' for clothing; '10.5' for shoes; 'Queen' for bedding. When you provide size data, Instagram enables size-based filtering, which improves user experience and reduces returns from size mismatches.
gender indicates the intended wearer or user: 'male', 'female', 'unisex'. It is optional. Use this to help Instagram apply category rules and filtering. Some categories (e.g., children's products) require gender or age_group data.
age_group specifies the intended age range: 'newborn', 'infant', 'toddler', 'kids', 'adult'. It is optional but required for children's products. Incorrect age_group data can result in policy violations or removal.
material describes the primary material composition (e.g., 'Cotton', 'Polyester', 'Leather'). It is optional. Shoppers often filter by material for allergies, sustainability, or preference reasons. Accurate material data improves relevance.
pattern describes visual patterns or designs (e.g., 'Striped', 'Floral', 'Solid'). It is optional. Like colour and size, pattern enables filtering and faceted search, improving discoverability for style-conscious shoppers.
Visual and Link Fields
These fields control how products appear visually and where shoppers are directed.
image_link is the primary product image URL and is required. Instagram displays this image in search results, carousels, and product detail pages. Images must be at least 250x250 pixels (1000x1000 pixels recommended for clarity). Images that are blurry, cropped, or watermarked are often rejected or deprioritised. Use high-quality product photography with a clean background. Avoid lifestyle images or collages; show the actual product clearly.
additional_image_link provides supplementary images (up to 10 per product). Use this to show multiple angles, colours, or use cases. Additional images increase engagement and reduce returns by helping shoppers understand the product fully.
link is the URL to the product page on your website and is required. This is where shoppers land after clicking the product in Instagram. The link must be a valid, working URL that leads directly to the product (not a category page or homepage). If the link is broken or redirects incorrectly, shoppers encounter errors and may not complete the purchase.
Shipping and Logistics Fields
These fields communicate delivery information to shoppers and help Instagram determine eligibility for certain features.
shipping specifies shipping cost and delivery time. Format as 'country:region:service:price:days'. For example, 'GB::Standard:5.99 GBP:3-5'. This field is optional but improves transparency. When shipping costs are displayed upfront, cart abandonment often decreases.
shipping_weight is the product weight, typically used for shipping cost calculation. Format as 'value unit' (e.g., '2.5 kg' or '5.5 lb'). Provide accurate weight so that shipping costs are calculated correctly at checkout.
expiration_date is the date after which the product is no longer valid or available. Format as 'YYYY-MM-DD'. This is used for perishable goods, limited-time offers, or seasonal items. Products past the expiration date are automatically removed from search results.
Grouping and Variant Management
item_group_id groups product variants (e.g., different colours or sizes of the same base product) under a single parent. All variants of the same product must share the same item_group_id. When you use item_group_id correctly, Instagram can display variants as a single product with colour/size selectors, improving the browsing experience and reducing duplicate listings.
If you do not use item_group_id, each variant appears as a separate product, cluttering search results and diluting click volume across variants instead of concentrating it on the parent product.
Custom Labels for Segmentation
Instagram supports five custom label fields: custom_label_0, custom_label_1, custom_label_2, custom_label_3, and custom_label_4. These are optional but powerful for internal organisation and performance tracking.
Use custom labels to tag products by campaign, margin tier, promotional status, or any other dimension relevant to your business. For example:
- custom_label_0: Campaign name ('Summer Sale', 'New Arrivals', 'Clearance')
- custom_label_1: Margin tier ('High', 'Medium', 'Low')
- custom_label_2: Supplier or brand
- custom_label_3: Seasonal status ('In Season', 'Off Season')
- custom_label_4: Inventory warning ('Low Stock', 'Overstock')
Custom labels enable you to filter and analyse performance by segment and to apply different bidding or promotional strategies to different product groups.
Field Validation and Approval Requirements
Instagram validates every product submission against specific rules. Products that fail validation are rejected and do not appear in shopping results.
Required fields must be present and non-empty: id, title, price, availability, image_link, and link. If any required field is missing or blank, the product is rejected.
Field values must meet format and content requirements. Prices must be numeric with a valid currency code. URLs must be properly formatted and accessible. Images must be real product photos, not lifestyle images, text overlays, or watermarks.
Product data must comply with Instagram's commerce policies. This includes accurate descriptions (no false claims), correct condition labels, appropriate age classification, and no prohibited items (counterfeit goods, weapons, adult content, etc.).
Duplicate products are flagged. If you submit the same product multiple times with different ids, Instagram may consolidate them or reject duplicates. Use item_group_id to group legitimate variants; do not create false duplicates to increase visibility.
Practical Optimisation Tips
Synchronise feed updates regularly. Update your feed at least daily, more frequently if inventory or pricing changes rapidly. Stale feed data (e.g., showing 'in stock' when sold out) damages shopper trust and increases returns.
Prioritise high-quality images. Use the best product photography you have. Images are the first thing shoppers see. Blurry, poorly lit, or misleading images result in rejections or low click-through rates.
Use complete product data. Provide optional fields like gtin, brand, colour, size, and material whenever possible. Complete data improves product matching, filtering, and ranking. Products with more data attributes rank higher in search results.
Test title and description wording. Use A/B testing to identify which product titles and descriptions drive the most clicks. Include keywords that shoppers search for, but avoid keyword stuffing.
Monitor rejection rates. Check your Instagram Shops Manager regularly for rejected products. Understand why products are rejected and fix the underlying data issues. Common rejection reasons include missing required fields, policy violations, and broken image links.
Segment with custom labels. Use custom labels to identify high-performing products, low-stock items, or campaign-specific products. This enables you to optimise bidding, promotional spend, and inventory management by segment.
Validate before submission. Use a data validation tool or manually spot-check your feed before upload. Verify that all urls are working, image links are accessible, prices are formatted correctly, and product data is accurate.
Map variants correctly. If you sell products in multiple colours or sizes, use item_group_id to group them. Provide colour, size, and material data for each variant so that shoppers can filter and select the exact variant they want.
Feed Format and Submission
Instagram accepts product feeds in CSV, XML, or JSON format. The format you choose does not affect how products are displayed; it only affects how you structure and submit the data.
If you use Shopify or Facebook Catalog, Instagram syncs product data automatically. You do not need to manually upload a feed file.
If you use a third-party platform or custom system, export your product data as a feed file and upload it to Instagram Shops Manager. Instagram will validate the feed, report any errors, and sync approved products to your Instagram Shopping tab.
Summary
Your Instagram product feed is the foundation of your shopping presence on the platform. Every field in your feed influences whether products are approved, how they rank in search results, and whether shoppers click and convert.
Focus on the required fields first: id, title, price, availability, image_link, and link. Ensure these are accurate, complete, and compliant with Instagram's policies.
Then add optional fields that describe your products in detail: brand, colour, size, material, gtin, and others. More complete product data improves ranking and filtering, leading to higher visibility and click-through rates.
Monitor your feed regularly. Update it when inventory, pricing, or product information changes. Fix rejected products promptly. Test different approaches to titles, descriptions, and images. Over time, you will identify the data structure and content that resonates with your audience and drives the most sales.
Instagram Shopping is a high-intent sales channel. Shoppers are actively looking to purchase. Your feed data determines whether they find your products and whether they trust the information they see. Invest in feed quality, and your conversion rates will reflect that effort.