Skip to content

Store specific stock numbers

Retailers with both online and physical store channels, so called omnichannel retailers, frequently have a large share of visitors who use the site to explore the product range and discover items to buy, but still prefer making the actual purchase in the store. To cater to that need, Elevate supports supplying store specific stock numbers for variants. This enables visitors to get an experience that is tailored towards their preferred physical stores.

Supply store and stock information

Store and stock information is defined on variants in the data feed. Supply the online stock information in the stock number element, stock_number, of the variant and the store and store specific stock information in the stores element, stores, within the variant. If a store is not supplied on a variant that variant will be considered out of stock for that store, which is the same behaviour as if stock_number would be set to 0. The only difference between setting a store's stock_number to 0 and omitting the store is that the omitted store will not be returned in the availability array on the variant as opposed to the store being returned with stock number 0. Thus unless stores should be displayed with stock 0 we recommend to omit the store instead of setting stock_number to 0 in order to save on the amount of data being sent back and forth.

Query parameters

There are two query parameters related to store specific stock numbers: stores & channels. The stores parameter should contain the keys of the stores that the user on the site has selected as a pipe separated string. The stores provided will be taken into account to compute the stock status of products and variants for the query. The availability array on variants returned will show the online stock number and the stock numbers for all the stores in the stores parameter unless on a Product Page where all stores are always returned. The channels parameter can normally be omitted but needs to be used if the online (default) store should be ignored. The valid values for channels are ONLINE, ONLINE|STORE and STORE. ONLINE means ignoring the stores parameter, ONLINE|STORE means use both the online store and the provided stores, STORE means use only the provided stores. If STORE is explicitly provided (e.g. STORE or ONLINE|STORE), then stores is required and cannot be empty. Omitting channels is identical to ONLINE|STORE except that an empty or omitted stores is allowed. See query parameters for a detailed example with a table.

Example

The following example shows a site with stock levels online and in two physical stores identified by the store keys 240 and 100. The site has three products that are chainsaws, and each product has one variant.

Data feed

The information in the data feed for those products are as follows:

Simplified example data feed
<?xml version="1.0" encoding="UTF-8" ?>
    <data_import type="full">
        <modify market="US" locale="en-US">
            <product_groups>
                <add_or_replace>
                    <product_group key="1001">
                        ...
                        <products>
                            <product key="1001-100">
                                ...
                                <variants>
                                    <variant key="1001-100-1">
                                        <stock_number>10</stock_number>
                                        ...
                                        <stores>
                                            <store key="240">
                                                <stock_number>5</stock_number>
                                            </store>
                                            <store key="100">
                                                <stock_number>0</stock_number>
                                            </store>
                                        </stores>
                                    </variant>
                                </variants>
                            </product>
                        </products>
                    </product_group>
                    <product_group key="1002">
                        ...
                        <products>
                            <product key="1002-100">
                                ...
                                <variants>
                                    <variant key="1002-100-1">
                                        <stock_number>10</stock_number>
                                        ...
                                        <stores>
                                            <store key="240">
                                                <stock_number>0</stock_number>
                                            </store>
                                            <store key="100">
                                                <stock_number>0</stock_number>
                                            </store>
                                        </stores>
                                    </variant>
                                </variants>
                            </product>
                        </products>
                    </product_group>
                    <product_group key="1003">
                        ...
                        <products>
                            <product key="1003-100">
                                ...
                                <variants>
                                    <variant key="1003-100-1">
                                        <stock_number>0</stock_number>
                                        ...
                                        <stores>
                                            <store key="100">
                                                <stock_number>1</stock_number>
                                            </store>
                                        </stores>
                                    </variant>
                                </variants>
                            </product>
                        </products>
                    </product_group>
                </add_or_replace>
            </product_groups>
        </modify>
    </data_import>

The products and their stock levels can be summarized as following:

Product key Online stock level Store stock levels
1001-100 10 240: 5, 100: 0
1002-100 10 240: 0, 100: 0
1003-100 0 100: 1

Query

A query with the search phrase chainsaw is made to the search-page endpoint. Included in the query are additional parameters to show stock levels online and from the physical store with the key 240.

#!/bin/bash
curl -X GET \
'https://{cluster-id}.api.esales.apptus.cloud/api/storefront/v3/queries/search-page?market=US&locale=en-US&customerKey=b65f78d4-23f0-4043-bd5e-fea24b5837d3&sessionKey=cc6772fd-65e2-4392-a1ee-24977c99fd2e&touchpoint=desktop&limit=60&skip=0&viewId=production&q=chainsaw&channels=ONLINE%7CSTORE&stores=240'    
const api = esales({ clusterId: 'w00000000', market: 'US', locale: 'en-US', touchpoint: 'desktop' });
const results = await api.query.searchPage({
  q: 'chainsaw', 
  channels: 'ONLINE|STORE',
  stores:'240'
});

Result

All the three chainsaws are returned. If the Only in stock facet had been used, the result would only include two of the three products matching the search phrase chainsaw as the third product, 1003-100, has no stock level online or in the selected store. Note that the availability array of the 1003-100-1 variant does not include an entry for store 240 since its stock_number is omitted for that variant.

Simplified example result
{
  "q": "chainsaw"
  },
  "primaryList": {
    "productGroups": [
      {
        "products": [
          {
            "key": "1001-100",
            ...
            "inStock": true,
            ...
            "variants": [
              {
                "key": "1001-100-1",
                ...
                "inStock": true,
                "stockNumber": 15,
                ...
                "availability": [
                    {
                        "channel": "ONLINE",
                        "stockNumber": 10
                    },
                    {
                        "key": "240",
                        "channel": "STORE",
                        "stockNumber": 5
                    }
                ],
                ...
                ]
              }
            ],
            ...
          }
        ],
        "key": "1001"
      },
      {
        "products": [
          {
            "key": "1002-100",
            ...
            "inStock": true,
            ...
            "variants": [
              {
                "key": "1002-100-1",
                ...
                "inStock": true,
                "stockNumber": 10,
                "availability": [
                    {
                        "channel": "ONLINE",
                        "stockNumber": 10
                    },
                    {
                        "key": "240",
                        "channel": "STORE",
                        "stockNumber": 0
                    }
                ],
                ...
              }
            ],
            ...
          }
        ],
        "key": "1002"
      },
      {
        "products": [
          {
            "key": "1003-100",
            ...
            "inStock": false,
            ...
            "variants": [
              {
                "key": "1003-100-1",
                ...
                "inStock": false,
                "stockNumber": 0,
                ...
                "availability": [
                    {
                        "channel": "ONLINE",
                        "stockNumber": 0
                    }
                ],
                ...
              }
            ],
            ...
          }
        ],
        "key": "1003"
      }
    ],
    "totalHits": 3,
    ...
}

The effects of the parameter combinations for this query is shown below:

Channels Stores Displayed when filtering 1001-100 result 1002-100 result 1003-100 result
ONLINE|STORE 240 1001-100, 1002-100 inStock: true
stockNumber: 15
availability: online: 10, store 240: 5
inStock: true
stockNumber: 10
availability: online: 10, store 240: 0
inStock: false
stockNumber: 0
availability: online: 0

For more information about the parameters, and how parameter combinations effects pages, see Stores and channels.

×
Copyright

This online publication is intellectual property of Voyado Lund AB. Its contents can be duplicated in part or whole, provided that a copyright label is visibly located on each copy and the copy is used in conjunction with the product described within this document.

All information found in these documents has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither Voyado Lund AB nor the authors shall be held liable for possible errors or the consequences thereof.

Software and hardware descriptions cited in these documents might be registered trademarks. All trade names are subject to copyright restrictions and may be registered trademarks. Voyado Lund AB essentially adheres to the manufacturer’s spelling. Names of products and trademarks appearing in this document, with or without specific notation, are likewise subject to trademark and trade protection laws and may thus fall under copyright restrictions.

CLOSE