With online grocery surging as a result of the pandemic, Retailers around the world are now facing up to a new challenge: making ecommerce profitable. In the first in a two-part series, Dave Clements discusses the online profitability conundrum and why a focus on operational efficiency can help to offset the cost of fulfilment.
The explosive growth seen in online grocery over the past year and a half has already been well documented – not only within the industry, but across the media as a whole. In the unlikely event that you haven’t been keeping up with this rapidly shifting dynamic, suffice to say that Customer adoption of the online channel looks unlikely to revert back to pre-pandemic levels, something that we posited in our own “Grocery Beyond the Tipping Point” report last year.
From an outsider’s point of view, it would be reasonable to assume that this is a net positive for the grocery industry. After all, more sales means more money – doesn’t it? The reality, as anyone with knowledge of the complex mechanisms at play here, is very different indeed.
While the pandemic has served to exponentially increase demand for online grocery, for many Retailers that surge in adoption will only have place an additional burden on a model that was already under strain. The average picking fee for an online order sits at around €15 according to some sources¹, meaning that Retailers can face an operating margin of up to -10% on those deliveries. They may be selling “more”, but many grocery businesses are paying a very real price for doing so.
Ever eager to explore the impact that changes in shopper behaviours can have on the Retail industry, the question of how to make online grocery profitable is one that we’ve been contemplating for some time at dunnhumby. From our perspective, the potential solutions to this immense task can be divided into two quite different categories: operational optimisation, and alternative revenue streams.
The creation of alternative revenue streams – and how they can help in the fight to make online profitable – is something that we’ll look at in the next post in this series. For now, let’s consider how Retailers can leverage operational optimisation as a way to build more efficient and effective ecommerce offerings.
Gauging maturity in six key areas
When evaluating a Retailer’s ecommerce capabilities, we tend to explore their relative maturity across six dimensions. The better their cumulative performance across all six, the more likely it is that their online operations will be efficient, scalable, and ultimately profitable. Let’s look at each of those areas.
“Connected” is the key word here. To gain genuine understanding into Customer needs and behaviours – and thus predict shifts in demand – Retailers need connected datasets that provide a 360° view across channels, devices, and touchpoints both online and off.
Maturity here is best defined by the extent to which a Retailer has built an online proposition that fulfils their Customers’ needs. This means being able to understand which Customers are using the channel, how their shopping missions vary, and the “halo” effect delivered by different Customer segments.
How effectively does a Retailer drive ecommerce adoption? How well can they identify and target strategic Customers? And how capable are they of driving spend by delivering relevant, personalised communications? All three factors are vital in this area.
While advanced maturity in this field tends to be signalled by the application of data, technology, and robotics to picking and fulfilment, the interim priority for any Retailer should be on ensuring that their approach is as scalable and efficient as possible.
The primary focus around product and category management should be on knowing whether online channels are over- or underperforming against in-store – and why. And, just as Retailers optimise in-store flow, the same rationale needs to be applied to search and category display online.
An area that we’ll discuss more in the next post on alternative revenue streams, greater maturity here can help Retailers drive sales and increase basket sizes, as well as offset the cost of ecommerce through monetisable media and insights.
While a Retailer’s level of maturity in each of these areas helps us understand how efficient – and hence profitable – its online offering is likely to be, just about any grocery business is likely to benefit from focusing on optimising some of the foundational aspects of ecommerce too. We see these as follows:
The bigger the overall basket, the more profitable a shop is likely to be. dunnhumby has found that relevant digital shopping experiences can boost basket sizes by between 10% and 20%.
Planograms, substitutability science, and micro-fulfilment in large stores can all serve as effective stopgap solutions on the road to a bigger transformation in the form of fully automated picking.
Nudging shoppers towards click-and-collect options in favour of home delivery can help to rebalance the cost of ecommerce. Delivery subscriptions can help to lock in frequency and spend, while partnerships with last mile fulfilment companies may aid in the pursuit of profitability.
If a Customer moves to a competing Retailer, they may take more than their online shop with them. Ensuring that existing shoppers stay loyal is ultimately more cost effective than winning new ones.
All of these issues – and more – are discussed in detail in The Route to Online Profitability, a new dunnhumby report that explores the economics of growth in ecommerce. A free copy of the report can be downloaded from our resources section here.
As well as operational efficiency, The Route to Online Profitability also looks in-depth at the growing need for Retailers to create alternative revenue streams. It’s that subject that I’ll be turning my attention to in my next post.
¹Why supermarkets are struggling to profit from the online grocery boom – The Financial Times, 23rd July 2020
Improve CPG collaboration and turn insight into commercial opportunity
Read moreCookie | 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. |
fs_cid | This cookie is set by FullStory to store the user’s cookie consent preferences for session tracking. |
fs_lua | This cookie is set by FullStory to record the time of the user’s last activity, helping manage session timeouts. |
fs_uid | This cookie is set by FullStory to assign a unique ID to each user and record session replays and interactions. |
osano_consentmanager | This cookie is set by FullStory’s consent management system (Osano) to store the user’s cookie consent preferences and ensure compliance with privacy regulations. |
osano_consentmanager_uuid | This cookie is set by FullStory’s consent management system (Osano) to uniquely identify a user’s consent session for consistent consent tracking. |
vuid | Vimeo installs this cookie to collect tracking information by setting a unique ID to embed videos to the website. |
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. |
_fs_tab_id | This temporary session value is used by FullStory to track user activity across multiple tabs. |
_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 set by Google Analytics to throttle request rates and limit data collection on high-traffic sites. |
_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. |
_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. |
__q_state_* | This cookie is set by FullStory to track session state and user interactions across page views. It helps rebuild session context for accurate session replay and analytics. |
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. |
_gcl_au | Set by Google Tag Manager to store and track conversion events. It is typically associated with Google Ads, but may be set even if no active ad campaigns are running, especially when GTM is configured with default settings. The cookie helps measure the effectiveness of ad clicks in relation to site actions. |