\n \nThe classic source of assortment planning has for hundreds, if not thousands, of years has been previous selling data: \"What did I sell last year? When? For how much? What were the contributing factors to sell-through? What were the disturbing factors forcing promotional pricing and thus, lower margins?\" \n \nWhile such significant, current, technology advancements as \"demand signal repositories,\" and \"upstream and downstream demand indices\" have added more arrows to the retailers' quiver, Point of Sale (POS) data remains the retailer's most trusted, most relied-upon platform on which to build assortments. Although they have access to more modern forecasting technologies, Best-in-Class retailers continue to lead the pack in leveraging POS data. \n \nThirty-six percent (36%) of Best-in-Class retailers access individual purchase history to aggregate data to achieve store-level and store-cluster level assortments, compared with 13% of Laggards. \nOne area of knowledge management showing real promise in helping retailers is the data customers provide when they opt in to join a customer loyalty program. Data extracted from such an application commonly includes annual household income, home zip code, frequency of shopping and number of members in the household. When cross-referenced with POS data, the retailer gets an amazingly useful portrait of that shopper. \n \nOne technology solution that all three maturity classes of retailers are either using or plan to use within the next 12 months to assist in precision merchandising is the use of marketbasket analysis. By gathering, aggregating and analyzing this data, retailers not only improve their customer-centric assortments, they improve the physical adjacencies (whether in-store or on a web page) between products demonstrating strong affinity, leading to additional purchases and larger share of wallet. \n"}]}};
const country = "US";
const language = "en-US,en;q=0.5";
const SITE_LANGUAGE = "en";
const siteName = "RIS News";
const userRoles = ["anonymous"];
const userUid = 0;
const indexName = "risnews";
window.dataLayer = window.dataLayer || [];
const data = {};
data.entityTaxonomy = {};
const contentTypes = [
"article",
"blog",
"bulletin",
"embed_page",
"landing_page",
"event",
"image",
"page",
"product",
"whitepaper",
"video",
"tags",
];
if (
routeInfo &&
"bundle" in routeInfo &&
contentTypes.includes(routeInfo["bundle"])
) {
data.entityBundle = routeInfo.bundle;
data.entityTitle = `${routeInfo.title} | ${siteName}`;
data.entityId = routeInfo.id;
data.entityName = routeInfo.author?.uname;
data.entityCreated = routeInfo.created;
data.sponsored = routeInfo.sponsored;
data.sponsor = routeInfo.sponsoringCompany;
data.entityType = "node";
data.entityLangcode = SITE_LANGUAGE;
data.siteName = siteName;
data.drupalLanguage = language;
data.drupalCountry = country;
data.userRoles = userRoles;
data.userUid = userUid;
data.entityTaxonomyKeys = {};
data.entityTaxonomyHierarchies = {};
data.parentNaicsCode = {};
data.isPro = false;
data.algoliaIndexName = indexName;
// Add toxonomy data
const taxonomies = {
businessTopic: "business_topic",
contentType: "content_type",
company: "company",
marketSegment: "market_segment",
};
const getHierarchy = (term, terms = []) => {
terms.push({ id: term.id, name: term.name });
if (term.parentTerm != null) {
getHierarchy(term.parentTerm, terms);
}
return terms;
};
const getTerms = (term, useApiId = false) => {
return { id: useApiId ? term.apiId : term.id, name: term.name };
};
const getKeys = (term) => {
return { id: term.id, name: term.apiId };
};
Object.entries(taxonomies).forEach(([key, item]) => {
terms = routeInfo[key];
if (terms && terms.length > 0) {
data["entityTaxonomy"][item] = terms.map((term) =>
getTerms(term, key === "company")
);
if (key !== "company") {
data["entityTaxonomyKeys"][item] = terms.map(getKeys);
termGroups = [];
terms.forEach((term, termInd) => {
termGroups[termInd] = getHierarchy(term);
});
data["entityTaxonomyHierarchies"][item] = termGroups;
}
}
});
data["entityTaxonomy"]["tags"] = routeInfo["topics"] || [];
// Primary Topic is either the business topic or the top tag.
if (routeInfo["businessTopic"]?.length > 0) {
data["entityPrimaryTopic"] = routeInfo["businessTopic"][0]["name"];
} else {
if (routeInfo["topics"]?.length > 0) {
data["entityPrimaryTopic"] = routeInfo["topics"][0]["name"];
}
}
// Primary and secondary entityNaicsCodes come from the MarketSegment
if (routeInfo.marketSegment?.length > 0) {
data.entityNaicsCode = {};
data["entityNaicsCode"]["id"] = routeInfo["marketSegment"][0]["id"];
data["entityNaicsCode"]["name"] =
routeInfo["marketSegment"][0]["naicsCode"];
if (routeInfo["marketSegment"][0]["parentTerm"] != null) {
data["parentNaicsCode"]["id"] =
routeInfo["marketSegment"][0]["parentTerm"]["id"];
data["parentNaicsCode"]["name"] =
routeInfo["marketSegment"][0]["parentTerm"]["naicsCode"];
}
} else {
data.entityNaicsCode = [];
}
if (routeInfo.taggedPro) {
data.isPro = routeInfo.taggedPro;
}
window.dataLayer.push(data);
} else if (routeInfo && "vid" in routeInfo) {
data.entityBundle = "tags";
data.entityTitle = routeInfo.name;
data.entityId = routeInfo.id;
data.entityName = routeInfo.author?.uname;
data.entityCreated = routeInfo.created;
data.entityType = "taxonomy_term";
data.entityLangcode = SITE_LANGUAGE;
data.siteName = siteName;
data.sponsored = routeInfo.sponsored;
data.sponsor = routeInfo.sponsoringCompany;
data.drupalLanguage = language;
data.drupalCountry = country;
data.userRoles = userRoles;
data.userUid = userUid;
data.algoliaIndexName = indexName;
data["entityTaxonomy"]["tags"] = {
id: routeInfo["id"],
name: routeInfo["name"],
};
window.dataLayer.push(data);
}
})();
The decision to develop and implement a precision merchandising plan should be carefully thought out. Its integration with business intelligence and business process management systems plays a critical role in the system's (and firm's) ability to turn this strategy into profit.
The classic source of assortment planning has for hundreds, if not thousands, of years has been previous selling data: "What did I sell last year? When? For how much? What were the contributing factors to sell-through? What were the disturbing factors forcing promotional pricing and thus, lower margins?"
While such significant, current, technology advancements as "demand signal repositories," and "upstream and downstream demand indices" have added more arrows to the retailers' quiver, Point of Sale (POS) data remains the retailer's most trusted, most relied-upon platform on which to build assortments. Although they have access to more modern forecasting technologies, Best-in-Class retailers continue to lead the pack in leveraging POS data.
Thirty-six percent (36%) of Best-in-Class retailers access individual purchase history to aggregate data to achieve store-level and store-cluster level assortments, compared with 13% of Laggards.
One area of knowledge management showing real promise in helping retailers is the data customers provide when they opt in to join a customer loyalty program. Data extracted from such an application commonly includes annual household income, home zip code, frequency of shopping and number of members in the household. When cross-referenced with POS data, the retailer gets an amazingly useful portrait of that shopper.
One technology solution that all three maturity classes of retailers are either using or plan to use within the next 12 months to assist in precision merchandising is the use of marketbasket analysis. By gathering, aggregating and analyzing this data, retailers not only improve their customer-centric assortments, they improve the physical adjacencies (whether in-store or on a web page) between products demonstrating strong affinity, leading to additional purchases and larger share of wallet.