Whenever sponsored resources become visible to storefront visitors, impression notifications must be triggered. This is done by firing an impression notification. Send an impression notification, using the product’s ticket, for every sponsored product that is rendered in:
Primary lists with sponsored products
Search results with sponsored products
Recommendation lists with sponsored products
Sponsored products have the field sponsored set to true.
Previously, only one impression notification was required per primary list, triggered when the first sponsored product became visible. This has changed: an impression notification must now be sent for each individual sponsored product that is seen.
The general guideline is to send a notification when 50% of the sponsored product has been on screen for at least a second, but this is not a strict rule.
Refreshing the page or filtering the product selection might cause sponsored segments to change. In this case, you may send a new impression notification, though this is not required.
Although Voyado does not require it, you may need to clearly label sponsored content to comply with local advertising or consumer protection regulations.To support this, sponsored products have the field sponsored set to true, allowing you to make them visually distinct.
Do not cache responses from the Elevate Retail Media service. Always request a new response for every advertising placement.
Each response represents a real-time bid decision based on the current context and user activity. If responses are cached:
Fill rate will decrease — cached responses may no longer be valid when reused, leading to missed opportunities.
Revenue will be lost — reusing a previous bid response without new auction logic prevents fresh competition and accurate pricing.
User experience may degrade — showing outdated ads can reduce relevance and engagement.
Last modified on October 28, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Product Discovery developer docs","description":"Product Discovery developer docs","colors":{"primary":"#fe4a49","light":"#ff8785","dark":"#4c093e"},"logo":{"light":"https://mintcdn.com/elevatedocs/1uBQSi2ovHREOrJm/assets/logo/voyado-light-logo.svg?fit=max\u0026auto=format\u0026n=1uBQSi2ovHREOrJm\u0026q=85\u0026s=6ab6674fd4ef6d98e2e482644482eaf8","dark":"https://mintcdn.com/elevatedocs/1uBQSi2ovHREOrJm/assets/logo/voyado-dark-logo.svg?fit=max\u0026auto=format\u0026n=1uBQSi2ovHREOrJm\u0026q=85\u0026s=ce9a169f8b3235ef225c95f50b3e3853","href":"/docs/home/about"},"favicon":"https://mintcdn.com/elevatedocs/U2rlNuBdHmV1mTwc/assets/logo/favicon-bw-32x32.png?fit=max\u0026auto=format\u0026n=U2rlNuBdHmV1mTwc\u0026q=85\u0026s=5b0c7f8a7b5c7f1c304eacf65bc6b39d","api":{"playground":{"display":"interactive"},"examples":{"defaults":"all","languages":["curl","javascript","java","csharp","python"],"prefill":true}},"appearance":{"default":"light"},"background":{"color":{"light":"#ffffff","dark":"#1e2129"}},"navbar":{"links":[{"icon":"/assets/icons/help-center-link.png","href":"https://help.elevate.voyado.com/hc/en-gb","label":"Help Center"}],"primary":{"type":"button","label":"Contact us","href":"https://voyado.com/about-voyado/contact-us/"}},"seo":{"metatags":{"og:site_name":"Product Discovery developer docs","og:type":"website"},"organization":{"id":"https://voyado.com/","legalName":"Voyado Lund AB","url":"https://voyado.com/","logo":"https://voyado.com/wp-content/uploads/2023/01/cropped-Favicon-192x192.png","sameAs":["https://www.linkedin.com/company/voyadoab/","https://www.facebook.com/voyado/","https://www.instagram.com/voyado_official/"]},"indexing":"navigable"},"fonts":{"heading":{"family":"Voyado Text","source":"https://mintlify-assets.b-cdn.net/VoyadoText-Medium.woff2","format":"woff2"},"body":{"family":"Voyado Regular","source":"https://mintlify-assets.b-cdn.net/VoyadoText-Regular.woff2","format":"woff2"}},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"cookies":{"key":"mintlify_telemetry","value":"granted"}},"contextual":{"options":["claude","chatgpt","assistant","copy","view","mcp"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"elevatedocs","hasAudioNarration":false,"actualSubdomain":"elevatedocs","customDomains":["product-discovery.developer.voyado.com"],"gitSource":{"type":"github","owner":"voyado","repo":"elevate-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae1b640661bff0c6e7268b7","collectionId":"6995d297-6474-4fdf-99f9-16c317ed200c","liveDeploymentHistoryId":"6ae1b640661bff0c6e7268b7","schemaVersion":"v3"},"feedback":{"thumbs":false,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae1b640661bff0c6e7268b7","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API","count":69},{"language":"default","tag":"Admin","count":42},{"language":"default","tag":"v3","count":39},{"language":"default","tag":"Guides","count":24},{"language":"default","tag":"v4","count":23},{"language":"default","tag":"Integration","count":23},{"language":"default","tag":"Storefront","count":22},{"language":"default","tag":"Add-ons","count":12},{"language":"default","tag":"Export","count":12},{"language":"default","tag":"Import","count":12}],"searchSettings":{"maxResults":8,"showContentSnippets":false,"isFiltersEnabled":false}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"type":"link","url":"https://voyado.com/about-voyado/contact-us/"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":false},"customCss":[{"filePath":"styles/style.css","content":".border-b{border-bottom-width:2px;border-color:rgb(var(--gray-200))}html.dark .border-b,html.dark .prose pre{border-color:rgba(255,255,255,.18)}.prose-sm{font-size:.9rem;line-height:1.7}html.dark{--gray-50:222 227 234;--gray-100:213 218 226;--gray-200:197 203 213;--gray-300:176 183 194;--gray-400:145 152 164}html.dark .prose{--tw-prose-body:#b3b9c4;--tw-prose-headings:#d2d7e0;--tw-prose-lead:#a7aeba;--tw-prose-links:#c5cbd5;--tw-prose-bold:#dde2ea;--tw-prose-counters:#8d95a2;--tw-prose-bullets:#626a78;--tw-prose-hr:#363c47;--tw-prose-quotes:#cdd3dc;--tw-prose-quote-borders:#454c58;--tw-prose-captions:#8d95a2;--tw-prose-code:#cdd3dc;--tw-prose-pre-code:#cdd3dc;--tw-prose-th-borders:#5c6474;--tw-prose-td-borders:#4a5162}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:500;background-color:#f8f8f7;border:1px solid #c7dbe8;border-radius:4px;padding-left:.25em;padding-right:.25em}html.dark .prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:#cdd3dc;background-color:#272c36;border-color:#3a404b}.prose pre code{background-color:transparent!important;border:0!important;color:inherit!important;font-weight:400;padding-left:0!important}.py-1\\.5{padding-top:1px;padding-bottom:1px}@media (min-width:1024px){.lg\\:mt-8{margin-top:1rem}}html.dark #navigation-items a[aria-current=page]{background-color:rgb(var(--primary)/.14);color:#ff8785}html.dark #navigation-items a[aria-current=page] *{color:inherit}html.dark .code-block.dark\\:bg-white\\/5,html.dark .dark\\:bg-codeblock{background-color:#1e2129}html.dark .dark\\:bg-codeblock\\/50{background-color:rgb(30 33 41/.5)}html.dark .prose table thead tr,html.dark [data-component-part=code-block-header]{background-color:rgba(255,255,255,.06)}html.dark .code-block-background,html.dark [data-fade-overlay],html.dark pre.shiki{--shiki-dark-bg:#1e2129!important;--fade-color-dark:#1e2129!important}.sidebar-title{margin-bottom:-.3rem;font-size:15px}#pagination{display:none!important}.help-center-card [data-component-part=card-icon]{width:2rem;height:2rem;flex-shrink:0;display:flex;align-items:center;justify-content:center}.help-center-card [data-component-part=card-icon] img{width:2rem;height:2rem;object-fit:contain}#topbar-cta-button a>span:first-child{background-color:rgb(var(--primary)/.1);border:1px solid rgb(var(--primary)/.25)}html.dark #topbar-cta-button a>span:first-child{background-color:rgb(var(--primary)/.14);border-color:rgb(var(--primary)/.3)}#topbar-cta-button a:hover>span:first-child{background-color:rgb(var(--primary)/.18);opacity:1}html.dark #topbar-cta-button a:hover>span:first-child{background-color:rgb(var(--primary)/.22)}#topbar-cta-button a span,#topbar-cta-button a svg,#topbar-cta-button a>div{color:rgb(var(--primary))}html.dark #topbar-cta-button a span,html.dark #topbar-cta-button a svg,html.dark #topbar-cta-button a>div{color:#ff8785}.prose table{border-collapse:collapse;width:100%;max-width:100%;table-layout:auto}.prose table td,.prose table th{border:0;padding:.4rem .5rem;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.accordion [data-table-wrapper=true],[data-component-part=accordion-content] [data-table-wrapper=true]{--page-padding:0px;max-width:100%}.prose table thead tr{background-color:rgba(0,0,0,.05)}html.dark .prose table thead{border-color:#4b5261}html.dark .prose table tr{border-color:#3b4250}.prose table thead th{font-weight:600}.prose table tbody td{background-color:#fff}html.dark .prose table tbody td{background-color:transparent}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.7em}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.5em;margin-bottom:.6em}#mobile-nav [data-elevate-tab-dropdown]{display:none}#mobile-nav [data-elevate-tab-list]{padding-bottom:.75rem;border-bottom:1px solid rgb(var(--gray-200)/.7)}html.dark #mobile-nav [data-elevate-tab-list]{border-bottom-color:rgb(255 255 255/.07)}#mobile-nav [data-elevate-tab-list] ul{display:flex;flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none}#mobile-nav [data-elevate-tab-list] a{display:block;padding:.375rem .75rem .375rem 1rem;border-radius:.75rem;font-size:1rem;font-weight:500;line-height:1.5rem;color:rgb(var(--gray-700));text-decoration:none}html.dark #mobile-nav [data-elevate-tab-list] a{color:rgb(var(--gray-300))}#mobile-nav [data-elevate-tab-list] a:hover{background-color:rgb(var(--gray-600)/.05)}html.dark #mobile-nav [data-elevate-tab-list] a:hover{background-color:rgb(var(--gray-200)/.05)}#mobile-nav [data-elevate-tab-list] a[data-active]{background-color:rgb(var(--primary)/.1);color:rgb(var(--primary))}html.dark #mobile-nav [data-elevate-tab-list] a[data-active]{background-color:rgb(var(--primary-light)/.1);color:rgb(var(--primary-light))}"}],"page":{"pagePath":"docs/addons/retail-media/storefront","slug":"/docs/addons/retail-media/storefront","pageMetadata":{"title":"Storefront","description":"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.","href":"/docs/addons/retail-media/storefront"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`sponsored-products`,children:`Sponsored products`}),`\n`,_jsx(_components.p,{children:`To support sponsored products in the storefront, the following is needed:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Send impression events when sponsored products are viewed`}),`\n`,_jsx(_components.li,{children:`Make sponsored products visually distinct`}),`\n`,_jsx(_components.li,{children:`Ensure correct metadata is included in requests`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`impression-tracking`,children:`Impression tracking`}),`\n`,_jsxs(_components.p,{children:[`Whenever sponsored resources become visible to storefront visitors, impression notifications must be triggered. This is done by firing an `,_jsx(_components.a,{href:`/docs/api/storefront/v3/notifications/ad-impression`,children:`impression notification`}),`. Send an impression notification, using the product’s `,_jsx(_components.code,{children:`ticket`}),`, for every `,_jsx(_components.code,{children:`sponsored`}),` product that is rendered in:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Primary lists with sponsored products`}),`\n`,_jsx(_components.li,{children:`Search results with sponsored products`}),`\n`,_jsx(_components.li,{children:`Recommendation lists with sponsored products`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Sponsored products have the field `,_jsx(_components.code,{children:`sponsored`}),` set to `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Previously, only one impression notification was required per primary list, triggered when the first sponsored product became visible. This has changed: an impression notification must now be sent for each individual sponsored product that is seen.`})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The general guideline is to send a notification when 50% of the sponsored product has been on screen for at least a second, but this is not a strict rule.`})}),`\n`,_jsx(_components.p,{children:`Refreshing the page or filtering the product selection might cause sponsored segments to change. In this case, you may send a new impression notification, though this is not required.`}),`\n`,_jsx(Heading,{level:`2`,id:`distinguishing-sponsored-resources`,children:`Distinguishing sponsored resources`}),`\n`,_jsx(_components.p,{children:`Although Voyado does not require it, you may need to clearly label sponsored content to comply with local advertising or consumer protection regulations.`}),`\n`,_jsxs(_components.p,{children:[`To support this, sponsored products have the field `,_jsx(_components.code,{children:`sponsored`}),` set to `,_jsx(_components.code,{children:`true`}),`, allowing you to make them visually distinct.`]}),`\n`,_jsx(Heading,{level:`2`,id:`metadata`,children:`Metadata`}),`\n`,_jsx(_components.p,{children:`To identify non-human traffic, it is important to add valid request headers in the call to Elevate. The headers needed are:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User-Agent`}),` — the user agent of the storefront visitor.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`X-Forwarded-For`}),` — the IP address of the storefront visitor.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Without valid values in the request headers, sponsored content will not be served.`}),`\n`,_jsx(Heading,{level:`2`,id:`response-caching`,children:`Response caching`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Do not cache responses from the Elevate Retail Media service. Always request a new response for every advertising placement.`})}),`\n`,_jsx(_components.p,{children:`Each response represents a real-time bid decision based on the current context and user activity. If responses are cached:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fill rate will decrease — cached responses may no longer be valid when reused, leading to missed opportunities.`}),`\n`,_jsx(_components.li,{children:`Revenue will be lost — reusing a previous bid response without new auction logic prevents fresh competition and accurate pricing.`}),`\n`,_jsx(_components.li,{children:`User experience may degrade — showing outdated ads can reduce relevance and engagement.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Storefront","description":"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.","href":"/docs/addons/retail-media/storefront"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Sponsored products","slug":"sponsored-products","depth":2,"children":[]},{"title":"Impression tracking","slug":"impression-tracking","depth":2,"children":[]},{"title":"Distinguishing sponsored resources","slug":"distinguishing-sponsored-resources","depth":2,"children":[]},{"title":"Metadata","slug":"metadata","depth":2,"children":[]},{"title":"Response caching","slug":"response-caching","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/elevatedocs/e981000376caad84/scripts/disable-accordion-link-copy.js","/_mintlify/custom/elevatedocs/9f72db540c8d3f36/scripts/mobile-nav-tab-list.js","/_mintlify/custom/elevatedocs/3c15ab69a2191b51/scripts/gtm.js"],"subdomain":"elevatedocs","siteName":"Product Discovery developer docs","title":"Storefront - Product Discovery developer docs","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6aaba43a1420944c888a0ad8","deploymentId":"6a638c2b4251baa99ac33cca","questionText":"How do I label sponsored products?","status":"active","generatedBy":"contextual","path":"docs/addons/retail-media/storefront","createdAt":"2026-09-17T08:26:34.915Z","updatedAt":"2026-09-17T08:26:34.915Z","__v":0},{"_id":"6aaba43a1420944c888a0ad9","deploymentId":"6a638c2b4251baa99ac33cca","questionText":"What headers are required?","status":"active","generatedBy":"contextual","path":"docs/addons/retail-media/storefront","createdAt":"2026-09-17T08:26:34.915Z","updatedAt":"2026-09-17T08:26:34.915Z","__v":0},{"_id":"6aaba43a1420944c888a0ad7","deploymentId":"6a638c2b4251baa99ac33cca","questionText":"When should I send impression events?","status":"active","generatedBy":"contextual","path":"docs/addons/retail-media/storefront","createdAt":"2026-09-17T08:26:34.915Z","updatedAt":"2026-09-17T08:26:34.915Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-17T08:26:02.662Z","gitLastModified":"2026-10-28T07:26:27.000Z","originalFileLocation":"docs/addons/retail-media/storefront.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Product Discovery developer docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Storefront - Product Discovery developer docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Product Discovery developer docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://elevatedocs.mintlify.app/_mintlify/api/og/v2?division=Retail+Media\u0026amp;title=Storefront\u0026amp;description=Storefront+requirements+for+sponsored+products%2C+covering+impression+tracking%2C+labeling+sponsored+content%2C+metadata+headers%2C+and+response+caching.\u0026amp;theme=f58243c8184ccc363977f3a7\u0026amp;signature=baec42e351ac24a46b9a844373672abaa64318a965be64abe0c571e50e41999b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Storefront - Product Discovery developer docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://elevatedocs.mintlify.app/_mintlify/api/og/v2?division=Retail+Media\u0026amp;title=Storefront\u0026amp;description=Storefront+requirements+for+sponsored+products%2C+covering+impression+tracking%2C+labeling+sponsored+content%2C+metadata+headers%2C+and+response+caching.\u0026amp;theme=f58243c8184ccc363977f3a7\u0026amp;signature=baec42e351ac24a46b9a844373672abaa64318a965be64abe0c571e50e41999b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/elevatedocs/pFLF7Ck4WVv5gLWu/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Product Discovery developer docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#fe4a49\">\u003clink data-mint-head rel=\"canonical\" href=\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/addons/retail-media/storefront.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://voyado.com/\",\"name\":\"Product Discovery developer docs\",\"legalName\":\"Voyado Lund AB\",\"url\":\"https://voyado.com/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://voyado.com/wp-content/uploads/2023/01/cropped-Favicon-192x192.png\"},\"sameAs\":[\"https://www.linkedin.com/company/voyadoab/\",\"https://www.facebook.com/voyado/\",\"https://www.instagram.com/voyado_official/\"]},{\"@type\":\"WebSite\",\"@id\":\"https://product-discovery.developer.voyado.com#website\",\"name\":\"Product Discovery developer docs\",\"url\":\"https://product-discovery.developer.voyado.com\",\"publisher\":{\"@id\":\"https://voyado.com/\"}},{\"@type\":\"WebPage\",\"@id\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront#webpage\",\"url\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront\",\"name\":\"Storefront\",\"description\":\"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\",\"dateModified\":\"2026-10-28T07:26:27.000Z\",\"isPartOf\":{\"@id\":\"https://product-discovery.developer.voyado.com#website\"},\"breadcrumb\":{\"@id\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Retail Media\",\"item\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/retail-media\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Storefront\",\"item\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront#article\",\"headline\":\"Storefront\",\"name\":\"Storefront\",\"description\":\"Storefront requirements for sponsored products, covering impression tracking, labeling sponsored content, metadata headers, and response caching.\",\"url\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront\",\"mainEntityOfPage\":{\"@id\":\"https://product-discovery.developer.voyado.com/docs/addons/retail-media/storefront#webpage\"},\"dateModified\":\"2026-10-28T07:26:27.000Z\",\"publisher\":{\"@id\":\"https://voyado.com/\"},\"isPartOf\":{\"@id\":\"https://product-discovery.developer.voyado.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Product Discovery developer docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Product Discovery developer docs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/docs/home/about"}]},{"tab":"Integration","pages":[{"title":"Integration","href":"/docs/integration/overview"}]},{"tab":"API","pages":[{"title":"API","href":"/docs/api/getting-started"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/docs/guides/overview"}]},{"tab":"Add-ons","groups":[{"group":"Overview","pages":[{"title":"Add-ons overview","href":"/docs/addons/overview"}]},{"group":"Email recommendations","pages":[{"title":"Email recommendations","href":"/docs/addons/email-recommendations/email-recommendations"},{"title":"Getting started","href":"/docs/addons/email-recommendations/getting-started"},{"title":"Base configuration","href":"/docs/addons/email-recommendations/base-configuration"},{"group":"Email campaigns","pages":[{"title":"Email campaigns","href":"/docs/addons/email-recommendations/email-campaigns/email-campaigns"},{"title":"Email campaign template model","href":"/docs/addons/email-recommendations/email-campaigns/template-model"}]},{"group":"Product templates","pages":[{"title":"Product templates","href":"/docs/addons/email-recommendations/product-templates/product-templates"},{"title":"Product template model","href":"/docs/addons/email-recommendations/product-templates/template-model"}]},{"title":"Dashboard","href":"/docs/addons/email-recommendations/dashboard"}]},{"group":"Retail Media","pages":[{"title":"Retail Media","href":"/docs/addons/retail-media/retail-media"},{"title":"Backend","description":"Learn what data must be imported to Elevate for retail media, including how to mark slices as sponsored via the page import of the Admin API.","href":"/docs/addons/retail-media/backend"},{"title":"Storefront","href":"/docs/addons/retail-media/storefront"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/docs/changelog/changelog"}]}]},"basePath":"","title":"Storefront - Product Discovery developer docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}