Poq-Documentation

Product Feed Integration

See Product Feed and Cart Transfer Integration.

At a high level, Poq requires a file containing up-to-date product details and published in a location that is accessible to our feed processors.

Updating Product Information

Poq uses the product feed file to update product details at regular intervals: you are therefore required to update it at regular intervals, usually every hour or every day depending on your needs and on the size of your product catalogue.

Hosting The Feed File

You may host this file on an FTP/SFTP location protected by a username or password, or publicly hosted in a location accessible via standard HTTP protocol. Setting up dedicated connectivity (i.e. VPN) is not supported out of the box and would require custom scoping.

Alternatively, Poq can provide SFTP credentials that can be used to upload your feed file onto our datastore.

File Format

We support both CSV and XML file formats (See Formatting The Feed). Both file types are fully supported but we find CSV files easier to work with due to better tooling, smaller file size, and better human readability.

Full And Incremental Feeds

Full Feeds

We are able to support two types of feeds, full feed and incremental feeds.

Full feeds should include information about all the products in your system. This can be restricted to only in stock items to reduce the file size and complexity, and improve the performance of your feed.

A frequent full feed run may not be necessary in cases where you are also integrating your Poq app with a merchandising solution - providing product, stock and price information in real time. Please consult with your Poq representative to confirm this.

If a product should be removed from the app, simply remove it from the feed. The platform will detect that the product is no longer available, and remove it in the app.

Wherever practical, we recommend running a full feed at regular intervals over incremental feeds.

Incremental Feeds

Some scenarios can require consideration for an additional, incremental feed:

Incremental feeds are smaller and can be processed at more frequent intervals, as processing a large, full feed at short intervals might be impractical and cause performance bottlenecks. The incremental feed should only include changes (updates to existing products and new products) that happened since previous feed generation. This allows us to update your catalog more frequently and with a better performance.

Formatting The Feed

Considerations for CSV Files

We support comma separated values format as defined in RFC 4180 specification. The feed file must have a header line appearing as the first line of the file.

Field List

Name Required Description
id Yes A value that uniquely identifies each product. id does not have to be unique to each record in the feed. More than one sizes of the same product can share the same id.
categoryname Yes When categoryid field is present, the depth of the category names must be equal to the number of category ids. (e.g. “Shoes; Sale>Men>Exclusive; Sale>T-shirt”)
description Yes Please add a long description here. Include materials, specification, size, fit information and so forth in this field. Line breaks and double spaces are carried over. Please escape all double quotation marks.
name Yes Used as the main product title on product listings and the product details page.
parentproductid Yes Is used to group variations of the same product. Entries with same ‘parentproductid’ are grouped together and displayed as one product. Most commonly used for grouping together product sizes. Products with different colours must have different parent product ids.
pictureurls Yes Contains a semicolon-separated list of picture URLs. Please provide the highest resolution (minimum 500×500 pixels, 1500×1500 is recommended) pictures available. We will take care of resizing pictures to various sizes. We will only import each URL once. So, if a picture changes, the URL must also be changed for the picture to be re-imported.
price Yes Price of the product before any discounts.
sku Yes Must be an identifier unique to each unit that is sold independently. We will use this value “as-is” when referring to the product variation when interacting with your system.
categoryid Depends This field is required only when there is an API/Merchandising integration to list products belonging to a specific category, so it can be looked up by ID. The field contains one or more categories. Categories are semi-colon separated and category levels are separated by a greater sign. (e.g.”1; 5>32>33; 5>34”)
brand No Used for filtering the products by brand.
colourgroupid No Groups different products with the same colour or style together. It could be a unique number, product code, colour code, url, etc. For instance, if a single sized product comes in two colours, the two SKUs of this product should have the same colourgroupid but a different colourname. Multiple SKUs of the same colour of the same product should share both the colorgroupid and the colorname.
colourname No Contains the name of the colour of a product. (e.g. “Navy Blue”, “Light Cream”)
colourswatch No A URL to an image to be used to show a colour icon on the product details page if the product has other colours. When not present, a smaller version of the lead image is displayed instead.
delivery No  
ean No European Article Number, often used to transfer barcodes.
isinstock No The following values indicate a product is in stock: "true", "1", "in stock", "" (empty). Any other value indicates otherwise. When not provided, all of the products are assumed to be in stock.
quantity No The stock level of the particular item. Is used for low stock indicator. Is not used to determine whether a product is in stock or not.
producturl No A full link to the product page, including the https schema portion.
promotion No Can be used to provide a text string, to be displayed on the PLP screen as a product promotional banner. For example, ‘New In’ , ‘Sale’, ‘Special Offer’ indications within each product cell on the PLP. Please ensure that the value passed fits within the promotional banner area.
returns No  
size No Determines the text used to display the size. (e.g. “XL”, “Small”, “12”)
sortindex Depends Required when the ‘categoryid’ is present. Defines the order of the products in a category. The number of indexes must be equal to the number of category ids. (e.g. “1;45;3”)
specialprice No Discounted sales price. When present ‘price’ is used to display old price.
style No Used for filtering the products by style. One style value per product is allowed.
videourl No The full link to the product’s video file, including its extension. You are responsible for hosting the video file. Only MPEG-4 videos (extension .mp4) are supported.
Additional Information No To be used for custom features, you may add additional product information (such as product ratings). This is achieved by adding additional columns and values to the file.

XML Files

XML files should always contain a <products> root tag, with a <product> tag for each SKU.

Sample XML file template:

<?xml version=”1.0″ encoding=”utf-8″?>
<products>
  <product>
    <id>1</id>
    <price>39.99</price>
    <specialprice>29.99</specialprice>
    <sku><![CDATA[s_shoes_main]]></sku>
    <parentproductid>1</parentproductid>
    <ean>EA12345678</ean>
    <quantity>0</quantity>
    <isinstock>true</isinstock>
    <name><![CDATA[Sample Shoe]]></name>
    <size><![CDATA[]]></size>
    <producturl>
      <![CDATA[http://www.sampleshoes.com/sampleshoes.html]]>
    </producturl> 
    <pictureurls>
      <![CDATA[http://www.sampleshoes.com/picture/1.jpg;
      http://www.sampleshoes.com/picture/2.jpg;
      http://www.sampleshoes.com/picture/3.jpg]]>
    </pictureurls>
    <colourname>White</colourname>
    <colourgroupid>sample-shoe-1<colourgroupid>
    <categoryid>
      <![CDATA[1;5>32>33;5>34]]>
    </categoryid>
    <categoryname>
      <![CDATA[Shoes;Sale>Men>Exclusive;Sale>T-shirt]]>
    </categoryname>
    <sortindex><![CDATA[1;45;3]]></sortindex>
    <description>
      <![CDATA[The round toe court shoe is a staple piece to most outfits.]]>
    </description>
    <videourl>
      <![CDATA[http://www.sampleshoes.com/videos/sample-shoe-1.mp4]]>
    </videourl> 
    <additionalAttribute1><![CDATA[]]></additionalAttribute1>
    <additionalAttribute2><![CDATA[]]></additionalAttribute2>
  </product>
  <product>
    <id>2</id>
    <price>39.99</price>
    <specialprice>29.99</specialprice>
    <sku><![CDATA[s_shoes_36]]></sku>
    <parentproductid>1</parentproductid>
    <parentsku><![CDATA[s_shoes_main]]></parentsku>
    <ean>EA12345679</ean>
    <quantity>100</quantity>
    <isinstock>true</isinstock>
    <name><![CDATA[Sample Shoe]]></name>
    <size><![CDATA[Black EU 36 (UK 3)]]></size>
    <producturl><![CDATA[]]></producturl> 
    <pictureurls><![CDATA[]]></pictureurls>
    <colourname>Black</colourname>
    <colourgroupid>sample-shoe-1<colourgroupid>
    <categoryid><![CDATA[]]></categoryid>
    <categoryname><![CDATA[]]></categoryname>
    <sortindex><![CDATA[]]></sortindex>   
    <description><![CDATA[]]></description>
    <additionalAttribute1><![CDATA[]]></additionalAttribute1>
    <additionalAttribute2><![CDATA[]]></additionalAttribute2>
  </product>
</products>

Examples

Grouping Product Colours and Sizes

Below is an example of how two t-shirts, each with two colour and two size options would look:

ProductId ColourGroupId ParentProductId SKU Size Colour
1 v-neck-t-shirt v-neck-t-shirt-grey v-neck-grey-s Small Grey
2 v-neck-t-shirt v-neck-t-shirt-grey v-neck-grey-m Medium Grey
3 v-neck-t-shirt v-neck-t-shirt-blue v-neck-grey-s Small Blue
4 v-neck-t-shirt v-neck-t-shirt-blue v-neck-grey-m Medium Blue
5 round-neck-t-shirt round-neck-t-shirt-grey round-neck-grey-s Small Grey
6 round-neck-t-shirt round-neck-t-shirt-grey round-neck-grey-m Medium Grey
7 round-neck-t-shirt round-neck-t-shirt-blue round-neck-grey-s Small Blue
8 round-neck-t-shirt round-neck-t-shirt-blue round-neck-grey-m Medium Blue

Adding a “View All” Subcategory

To display a “View All” category as a sub-category of each category, a new category called “View All” can be included in the categories of each product.

Example:

"id", "categoryname"
"product-1", "Clothing > View All; Clothing > Dresses > View All; Clothing > Dresses > Mini Dresses"
"product-2", "Clothing > View All; Clothing > Shoes > View All; Clothing > Shoes > Oxford"

Above example will generate the following category hierarchy:

Please note that “View All Clothing”, “View All Dresses” and “View All Shoes” are not treated as special. To the feed processor, they are just like any other category and will be treated as so.