Dan Berthiaume is senior editor, technology, at Chain Store Age. He is a recognized expert on retail technology and is well versed in all things tech, having covered the space since 1998.
Dan’s “Retail Insights” technology column was recognized by the prestigious Eddie & Ozzie Awards. He has been quoted and interviewed by a variety of publications and news sites, including CNBC, and has served as a moderator and session host at numerous industry events.
Follow Dan on LinkedIn. ","title":"Senior Editor, Technology","picture":{"id":275,"url":"https://assets1.chainstoreage.com/s3fs-public/pictures/2019-09/Dan.jpg","alt":"","width":350,"height":356},"phone":"(978) 994-1881","contactForm":true},"byline":"","hideByline":false,"digitalEdition":false,"sponsored":false,"sponsorship":{"overrideAds":false},"taggedPro":false,"relatedArticles":[],"relatedImages":[],"teaserImage":{"id":188,"url":"https://assets1.chainstoreage.com/2021-12/Getir_0.jpg","width":500,"height":393,"alt":"Getir"},"hideHero":false,"heroImage":null,"heroCaption":null,"attachedFiles":[],"businessTopic":[],"contentType":[{"id":103,"name":"News","url":"/content-type/article/news","apiId":"news-article","nodeId":690,"parentTerm":{"id":96,"name":"Article","url":"/content-type/article","apiId":"article","parentTerm":null}}],"company":[],"marketSegment":[{"id":102,"name":"eCommerce","url":"/market-segment/retail/ecommerce","apiId":"ecommerce-retail","nodeId":446,"naicsCode":null,"parentTerm":{"id":97,"name":"Retail","url":"/market-segment/retail","apiId":"retail","naicsCode":null,"parentTerm":null}},{"id":298,"name":"Delivery","url":"/market-segment/retail/consumer-services/delivery","apiId":"delivery-consumerservices-retail","nodeId":1256,"naicsCode":null,"parentTerm":{"id":297,"name":"Consumer Services","url":"/market-segment/retail/consumer-services","apiId":"consumerservices-retail","naicsCode":null,"parentTerm":{"id":97,"name":"Retail","url":"/market-segment/retail","apiId":"retail","naicsCode":null}}}],"topics":[{"id":16,"name":"News","url":"/news"},{"id":14,"name":"FINANCE","url":"/finance"},{"id":10,"name":"TECHNOLOGY","url":"/technology"},{"id":11,"name":"ECOMMERCE","url":"/ecommerce"},{"id":2,"name":"SUPPLY CHAIN","url":"/supply-chain"}],"contentParagraphs":null,"sections":null,"email":null};
const country = "US";
const language = null;
const SITE_LANGUAGE = "en";
const siteName = "Chain Store Age";
const userRoles = ["anonymous"];
const userUid = 0;
const indexName = "CSA";
const title = "Getir exits U.S., European markets; FreshDirect to continue | Chain Store Age";
window.dataLayer = window.dataLayer || [];
const data = {};
data.entityTaxonomy = {};
const contentTypes = [
"article",
"blog",
"bulletin",
"embed_page",
"landing_page",
"event",
"image",
"page",
"product",
"whitepaper",
"video",
"tags",
"author_profile",
"buyers_guide_listing",
];
if (
routeInfo &&
"bundle" in routeInfo &&
contentTypes.includes(routeInfo["bundle"])
) {
data.entityBundle = routeInfo.bundle;
data.entityTitle = title || `${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 taxonomy 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 getTermId = (term, useApiId = false) => {
let id = term.id;
if (useApiId) {
id = term.apiId;
} else if (term?.nodeId) {
id = term.nodeId;
}
return id;
};
const getTerms = (term, useApiId = false) => {
return { id: getTermId(term, useApiId), 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);
}
})(); Getir exits U.S., European markets; FreshDirect to continue