For the second time in as many years, stock shortages are starting to undermine the grocery shopping experience. Across the world, demand for key lines has begun to outstrip supply – leaving stores with empty shelves, and shoppers with little alternative but to look elsewhere.
Unlike the shortages of 2020, many of which were caused by panic buying, most of the current issues surround the transportation of goods. Almost half a million cargo containers were queuing off the coast of Southern California in October[1], with more than three-quarters of ports worldwide suffering from “abnormally long” turnaround times[2]. On the roads, North America[3] and the UK[4] each face a shortage of truck drivers in the high tens of thousands. And in Europe, supplier delivery times are now the longest they’ve been since at least 2007[5].
Even in Asia-Pacific, the point of origin for many shop-bought goods, problems still exist. With extreme weather having ruined crops and impacted supply chains in the country, Chinese citizens have been urged to stock up food for the winter – sending prices soaring[6]. Just across the East China Sea, a decline in the production of Malaysian palm oil has forced Japanese suppliers to drive up the price of everything from margarine to chocolate[7].
Critically, the consequences of this disruption are only too apparent to shoppers. In the last two weeks of October, one in six British adults said that they had been unable to find essential food items[8]. In the US, carbonated drinks, chicken, coffee, toilet paper, and more have all made it onto a list of “hard to find” foods[9]. And in the most recent edition of dunnhumby’s own Consumer Pulse study, we saw significant numbers of shoppers highlighting the problem of out-of-stocks.
Figure 1: dunnhumby Consumer Pulse Wave 8
For Retailers, the problem doesn’t end when a Customer leaves the store. Out-of-stocks may be frustrating in the moment, but they can also have a corrosive effect over the longer term. This may begin with the loss of a few items from each basket, but can end with the loss of a shopper as a whole – their loyalty gradually whittled away as they visit other stores to find what they need.
In lieu of an overnight revolution in the supply chain, Retailers clearly need some way to mitigate the commercial and relational damage that can be done by stock shortages – and Customer data science can be employed to good effect here. While it may not be able to solve the root cause problems of disrupted supply, data can at least be used to alleviate some of the symptoms, particularly when used as a prioritisation tool.
Helping Customers find more of the things they need means maintaining the On-Shelf Availability (OSA) of those products. As simple as that may sound, it is naturally much harder to ensure the OSA of 1,000 products as than it is of, say, 10. This is where tiering comes in.
The granularity of data available to grocery Retailers today is such that it is entirely possible to identify which products are the absolute priority for loyal Customers, based on a combination of business and customer metrics such as product sales, units, and product preference by loyal Customers. With a very high degree of confidence, we can produce a list of 50-70 items that Retailers must have available at all times – what we would define as Tier 1 goods. In Tier 2, we’d place the next 100 to 200 “most important” items. This allows Retailers to set clear parameters around minimum OSA levels for each tier – 100% for Tier 1, for instance, and 95% for Tier 2.
Tiering can also help to ensure that Retailers aren’t overrepresenting within certain needs. Take crisps (or chips) as an example: there’s little point in having an abundant supply of plain crisps from two competing Brands on the shelf if other flavours are all out of stock. In that instance, we’d recommend moving one of those products into Tier 2, and moving another flavour into Tier 1 (if needed).
Even when products have been tiered, of course, issues outside of a Retailer’s control can sometimes make 100% OSA an impossibility. In those instances, Customer substitutability science comes into play. Here, when a Tier 1 item is unavailable, the next best equivalent – and the one that is most acceptable to Customers as a replacement – can be elevated out of Tier 2. Additionally, shelf-space allocated to the unavailable item can be reduced, ensuring that there are no long-term issues in terms of presentation to shoppers.
As well as these strategic approaches, data-driven tiering can also be used in some more tactical ways too. Potential applications here include:
While many of the current problems with stock shortages have manifested, if the last two years have shown us anything, it’s that issues can arise anywhere and at any time. Even before this recent bout of disruption, availability has been an area that is increasingly hard to manage and predict.
A sharper and more focused view on what Customers really want will only ever deliver returns – whatever the future of global supply may hold.
[1] Nearly half a million shipping containers are stuck off the coast of Southern California as the ports operate below capacity – Business Insider, 6 October 2021
[2] Global Port Trackers Show Where the Worst Ship Logjams Lurk – Bloomberg, 12 October 2021
[3] How will the US deal with a shortage of 80,000 truckers? – BBC, 8 November 2021
[4] How serious is the shortage of lorry drivers? – BBC, 15 October 2021
[5] What longer delivery times say about global supply chains – World Economic Forum, 3 November 2021
[6] China urges families to stock up on food for winter months – The New York Times, 2 November 2021
[7] ASEAN supply chain woes drive up food prices in Japan – Nikkei Asia, 28 August 2021
[8] Coronavirus and the social impacts on Great Britain: Personal experience of shortage of goods – Office for National Statistics, 19 November 2021
[9] Grocery store shelves bare? These products may be hard to find amid supply chain disruptions – USA Today
Cookie | Description |
---|---|
cli_user_preference | The cookie is set by the GDPR Cookie Consent plugin and is used to store the yes/no selection the consent given for cookie usage. It does not store any personal data. |
cookielawinfo-checkbox-advertisement | Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category . |
cookielawinfo-checkbox-analytics | Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category . |
cookielawinfo-checkbox-necessary | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
CookieLawInfoConsent | The cookie is set by the GDPR Cookie Consent plugin and is used to store the summary of the consent given for cookie usage. It does not store any personal data. |
viewed_cookie_policy | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
wsaffinity | Set by the dunnhumby website, that allows all subsequent traffic and requests from an initial client session to be passed to the same server in the pool. Session affinity is also referred to as session persistence, server affinity, server persistence, or server sticky. |
Cookie | Description |
---|---|
wordpress_test_cookie | WordPress cookie to read if cookies can be placed, and lasts for the session. |
wp_lang | This cookie is used to remember the language chosen by the user while browsing. |
Cookie | Description |
---|---|
CONSENT | YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data. |
vuid | Vimeo installs this cookie to collect tracking information by setting a unique ID to embed videos to the website. |
_ga | The _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors. |
_gat_gtag_UA_* | This cookie is installed by Google Analytics to store the website's unique user ID. |
_ga_* | Set by Google Analytics to persist session state. |
_gid | Installed by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously. |
_hjSessionUser_{site_id} | This cookie is set by the provider Hotjar to store a unique user ID for session tracking and analytics purposes. |
_hjSession_{site_id} | This cookie is set by the provider Hotjar to store a unique session ID, enabling session recording and behavior analysis. |
_hp2_id_* | This cookie is set by the provider Hotjar to store a unique visitor identifier for tracking user behavior and session information. |
_hp2_props.* | This cookie is set by the provider Hotjar to store user properties and session information for behavior analysis and insights. |
_hp2_ses_props.* | This cookie is set by the provider Hotjar to store session-specific properties and data for tracking user behavior during a session. |
_lfa | This cookie is set by the provider Leadfeeder to identify the IP address of devices visiting the website, in order to retarget multiple users routing from the same IP address. |
Cookie | Description |
---|---|
aam_uuid | Set by LinkedIn, for ID sync for Adobe Audience Manager. |
AEC | Set by Google, ‘AEC’ cookies ensure that requests within a browsing session are made by the user, and not by other sites. These cookies prevent malicious sites from acting on behalf of a user without that user’s knowledge. |
AMCVS_14215E3D5995C57C0A495C55%40AdobeOrg | Set by LinkedIn, indicates the start of a session for Adobe Experience Cloud. |
AMCV_14215E3D5995C57C0A495C55%40AdobeOrg | Set by LinkedIn, Unique Identifier for Adobe Experience Cloud. |
AnalyticsSyncHistory | Set by LinkedIn, used to store information about the time a sync with the lms_analytics cookie took place for users in the Designated Countries (which LinkedIn determines as European Union (EU), European Economic Area (EEA), and Switzerland). |
bcookie | LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognise browser ID. |
bscookie | LinkedIn sets this cookie to store performed actions on the website. |
DV | Set by Google, used for the purpose of targeted advertising, to collect information about how visitors use our site. |
ELOQUA | This cookie is set by Eloqua Marketing Automation Tool. It contains a unique identifier to recognise returning visitors and track their visit data across multiple visits and multiple OpenText Websites. This data is logged in pseudonymised form, unless a visitor provides us with their personal data through creating a profile, such as when signing up for events or for downloading information that is not available to the public. |
gpv_pn | Set by LinkedIn, used to retain and fetch previous page visited in Adobe Analytics. |
lang | Session-based cookie, set by LinkedIn, used to set default locale/language. |
lidc | LinkedIn sets the lidc cookie to facilitate data center selection. |
lidc | Set by LinkedIn, used for routing from Share buttons and ad tags. |
li_gc | Set by LinkedIn to store consent of guests regarding the use of cookies for non-essential purposes. |
li_sugr | Set by LinkedIn, used to make a probabilistic match of a user's identity outside the Designated Countries (which LinkedIn determines as European Union (EU), European Economic Area (EEA), and Switzerland). |
lms_analytics | Set by LinkedIn to identify LinkedIn Members in the Designated Countries (which LinkedIn determines as European Union (EU), European Economic Area (EEA), and Switzerland) for analytics. |
NID | Set by Google, registers a unique ID that identifies a returning user’s device. The ID is used for targeted ads. |
OGP / OGPC | Set by Google, cookie enables the functionality of Google Maps. |
OTZ | Set by Google, used to support Google’s advertising services. This cookie is used by Google Analytics to provide an analysis of website visitors in aggregate. |
s_cc | Set by LinkedIn, used to determine if cookies are enabled for Adobe Analytics. |
s_ips | Set by LinkedIn, tracks percent of page viewed. |
s_plt | Set by LinkedIn, this cookie tracks the time that the previous page took to load. |
s_pltp | Set by LinkedIn, this cookie provides page name value (URL) for use by Adobe Analytics. |
s_ppv | Set by LinkedIn, used by Adobe Analytics to retain and fetch what percentage of a page was viewed. |
s_sq | Set by LinkedIn, used to store information about the previous link that was clicked on by the user by Adobe Analytics. |
s_tp | Set by LinkedIn, this cookie measures a visitor’s scroll activity to see how much of a page they view before moving on to another page. |
s_tslv | Set by LinkedIn, used to retain and fetch time since last visit in Adobe Analytics. |
test_cookie | Set by doubleclick.net (part of Google), the purpose of the cookie is to determine if the users' browser supports cookies. |
U | Set by LinkedIn, Browser Identifier for users outside the Designated Countries (which LinkedIn determines as European Union (EU), European Economic Area (EEA), and Switzerland). |
UserMatchHistory | LinkedIn sets this cookie for LinkedIn Ads ID syncing. |
UserMatchHistory | This cookie is used by LinkedIn Ads to help dunnhumby measure advertising performance. More information can be found in their cookie policy. |
VISITOR_INFO1_LIVE | A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface. |
YSC | YSC cookie is set by YouTube and is used to track the views of embedded videos on YouTube pages. |
yt-remote-connected-devices | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |
yt-remote-device-id | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |
yt.innertube::nextId | This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen. |
yt.innertube::requests | This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen. |
_gcl_au | Set by Google Analytics, to take information in advert clicks and store it in a 1st party cookie so that conversions can be attributed outside of the landing page. |