Product Feed

Keep Ordergroove in sync with your product catalog via recurring SFTP file delivery
View as Markdown

The Product Feed is a file sent to our platform via SFTP on a recurring basis to keep Ordergroove in sync with your product information. It should include all products, whether or not they’re eligible for subscriptions. We check for new files every 30 minutes, so you can refresh as often as that.

If you’re not sending the feed continuously throughout the day, we recommend running it before order placement to avoid rejections from out-of-stock items.


Requirements

The product feed should be created with the following format:

  • Filename: <MERCHANT_ID>.Products.xml
  • Drop site location: <SFTP_SITE>
Note

Any applicable field containing special characters (e.g. &, trademark symbols, accents, etc.) must be wrapped in CDATA. Best practice is to always wrap product names and category names in CDATA at a minimum.

Fields labeled “Optional” should be excluded from the file if they do not contain a specific value, as we will attempt to validate them if they are included. Example: if not setting an in_stock boolean value, please remove <in_stock></in_stock> tagging entirely rather than adding empty tags or using self-closing XML tags (e.g. <in_stock/>).


Example

1<products>
2...
3<product>
4 <name><![CDATA[Product XYZ]]></name>
5 <product_id>AB4483902</product_id>
6 <sku>45987234980</sku>
7 <groups> // These fields are optional
8 <group type="sku_swap"><![CDATA[Product Group A]]></group>
9 <group type="incentive"><![CDATA[Incentive Group A]]></group>
10 </groups>
11 <price>19.99</price>
12 <details_url>http://www.merchanturl.com/details/product.com</details_url>
13 <image_url>https://www.merchanturl.com/images/product.jpg</image_url>
14 <autoship_eligible>1</autoship_eligible> //Optional
15 <in_stock>1</in_stock>
16 <discontinued>0</discontinued> //Optional
17 <extra_data> //Optional
18 <field key="variant_name">Size X</field>
19 </extra_data>
20 <relationships> //These fields are optional
21 <relationship>
22 <name>discontinued_replacement</name>
23 <related>
24 <product_id>12</product_id>
25 </related>
26 </relationship>
27 </relationships>
28 <every>6</every> //Optional
29 <every_period>2</every_period> //Optional
30</product>
31...
32</products>

Field Definitions

FieldDescriptionData TypeValidation
nameThe name of the productString, up to 1024 characters
product_idThe unique identifier of the product in your databaseString, up to 64 characters
skuThe product’s SKUString, up to 64 characters
groups (optional)Used for SKU Swap and Incentives. All products assigned to the same group will be swappable between each otherString, up to 64 characters
priceThe price of the productDecimal up to 99999999.99Must be a decimal (not wrapped in quotation marks) with two digits after the decimal point. Should not be set to anything other than what the customer should be charged (e.g. do not set to $0).
details_urlFully qualified URL of the product details pageString, up to 400 characters
image_urlFully qualified URL of the product’s image fileString, up to 400 charactersMust be HTTPS
autoship_eligible (optional)A flag that marks the product as eligible for subscription. 0 = not eligible, 1 = eligibleTinyint(1)Must be 1 or 0, not wrapped in quotation marks
in_stockA flag that marks the product as available in terms of inventory. 1 = In stock, 0 = Out of Stock. A product can become temporarily out of stock, which will temporarily stop orders from being placed with that product. No checkout flow offers will be served for out-of-stock products, but Instant Upsell offers will still be served as the product may come back in stock prior to order placement.Tinyint(1)Must be 1 or 0, not wrapped in quotation marks
discontinued (optional)An optional flag that marks the product as no longer available. 0 = Not discontinued, 1 = Discontinued. When discontinued, all subscriptions with that product will be cancelled and the customer notified via email. A discontinued product must also be set to autoship_eligible = 0 and in_stock = 0.Tinyint(1)Must be 1 or 0, not wrapped in quotation marks. NOTE: To discontinue a product it must also be marked as Not Eligible and Out of Stock.
extra_data (optional)The value to be displayed in the SKU swap dropdown. Can be used to display a name other than the full product nameString, up to 1024 characters
relationships (optional)Defines the related product ID for discontinued product replacement SKU swap. If relationship name = discontinued_silent_replacement, subscribers will NOT be notified of the swap. If relationship name = discontinued_replacement, an email will be sent to all subscribers informing them of the swap. The subscriber is only notified once the swap has been completed.String, up to 64 characters
every (optional)The number of days, weeks, or months used to specify a product-specific default frequencyINT, up to 10 characters
every_period (optional)The frequency period for the product-specific default frequency. 1 = days, 2 = weeks, 3 = months, 4 = yearsINT, up to 6 charactersExample: <every>4</every> with <every_period>2</every_period> = every 4 weeks
product_typeThe type of product. Default is standard. Options: standard, static price bundle, dynamic price bundleStringDefaults to standard if not provided. product_type cannot be changed after product creation.