Imagine you’re in the supermarket to buy some yoghurt. The most important feature for you is that the yoghurt is lactose-free, so you search that section of the fridge area. You quickly identify your size and brand and start to think about which flavour to go for. But how unfair does it feel when you discover the flavour you want is more expensive than the other flavours?
Customers don’t care about different cost per SKU (stock keeping unit), or slightly different line extensions. They want logical shelf prices that make it easy to find the products that meet their needs. This requires a balance of art and science, and the retailers who get this right will find themselves with more loyal customers and stronger price perception.
Confusing line pricing is a problem
A common strategy for retailers with extended product lines is to differentiate prices on the higher-level need states while assimilating prices on the lower-level need states. Products with similar prices within a need is what we define as line pricing, but it is also known as family pricing or series pricing. However, a quick search online reveals a lot of bad practise when it comes to logical line pricing at some supermarkets. Here are some examples uncovered:
So there clearly is a challenge to get this right both online and in-store, but how do we define needs from a customer perspective? And how can we use this insight to set logical line prices?
Some theory on logical line pricing for customers
To explain what we mean by different need states let’s turn to the yoghurt category at a European retailer. A Customer Decision Tree takes into consideration the substitutability of each product as well as the breadth in the coverage of customer needs. At the root of this Customer Decision Tree, we have yoghurt. Underneath the root, we have the brand preferences such as Danone, Nordica, Yoplait, Wells Blue Bunny and Weight Watchers. Finally, we have the lower-level need states such as Fruit on the Bottom and Custard.
Figure 1 – Customer Decision Tree
Every year thousands of new products enter the market and a lot of them are extensions to existing product lines. This means that retailers get to benefit from existing supply chains and build on established brands. However, from a pricing perspective the question is whether to price in line with existing products or to expand the price ladder. On the other hand, retailers who differentiate prices provide a broader offering that could better capture a wider set of customers willing to pay different amounts.
Furthermore, if customers’ choice is driven by flavours, firms could be better off pricing popular flavours low to attract buyers. Conversely, if customers perceive all flavours within a line to be similar, then having the same price for all flavours makes more sense. In a study conducted by Draganska and Jain (2006)1 the researchers found that customers in the yoghurt category value line attributes (higher-level need states) more than flavour attributes (lower-level need states). This confirms the current best practice of uniform prices within lower-level need states and differential prices across higher-level need states.
A practical framework for retailers
Understanding the Customer Decision Tree will provide insights into which group of products to price uniformly. However, a decision needs to be made about whether line pricing is the right thing to do, and if it is, should prices be benchmarked against the lowest, average, or maximum price? This process of tailoring your line pricing and setting the right benchmark will include elements such as:
The question on customer expectation is especially worth understanding well and should be the key factor driving this decision. Online panels with the ability to connect what people say with their behavioural data (price sensitivity, cross-shopping etc.) is a great approach but focus groups or smaller surveys can also help. A simple way would also be to look at the Customer Decision Tree as a proxy to what customers would expect in terms of line pricing.
Generally, line pricing items across substantially different pack sizes is not advised as that might go against the expectation to get bigger value with bigger packs and could cause problems with store execution. Furthermore, expect more challenging conversations if you consider uniform pricing across brands as many suppliers prefer brand blocking rather than needs-based spacing2. Spacing products together will likely increase the expectation of line pricing i.e., if the products aren’t together, line pricing could be relaxed.
Finally, from a practical perspective, understanding the margin constraints on an aggregate level might be a critical part of the analysis to progress this conversation internally. For example, if the retailer is price matching, a typical product price war will impact the price point of the whole line.
Figure 2 combines the above elements into a simplified “Yes/No” decision tree that can be used to highlight gaps in understanding and can help determine the right outcome3.
Figure 2 – Price Line Framework
Recommendations for retailers
Price lines can be a powerful way to provide fair prices that your customers can trust, and that build on established brands. However, without the right data, you run the risk of confusing customers and damaging your value perception. We recommend three strategies for getting line pricing right:
1Consumer Preferences and Product-Line Pricing Strategies: An Empirical Analysis by Draganska and Jain (2016)
2I’m assuming that line priced items will also be spaced together in the store
3When no competitor alternative exists, conjoint analysis can be used to set price level
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. |
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. |