> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# In-Store Self-Service

> Run in-store digital display campaigns in the same self-service UI used for onsite ads.

export const LastUpdated = ({date, lang = "en"}) => {
  const translations = {
    en: "Last updated:",
    es: "Última actualización:",
    pt: "Última atualização:",
    fr: "Dernière mise à jour:",
    de: "Zuletzt aktualisiert:"
  };
  const label = translations[lang] || translations.en;
  return <>
<style>{`
.last-updated-component {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
border-radius: 8px;
margin-top: 12px;
margin-bottom: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.12);
color: rgba(0, 0, 0, 0.75);
line-height: 1;
}

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

## Overview

* If in-store self-service is enabled for a marketplace, in-store campaigns can be created in the **In-Store** tab in the vendor dashboard
* The workflow is available in both the vendor and marketplace UI
* Advertisers upload video or image assets (rendered as 20-second silent video creatives)
* Each screen plays assigned creatives sequentially in a loop

## How Access Works

* **Vendor UI:** Vendors create and submit in-store campaigns in the self-service environment they are familiar with
* **Marketplace UI:** Marketplace users can go to **Ad Formats > In-Store**, monitor configured slots, and review submitted campaigns
* **Approvals:** Vendor-submitted in-store campaigns follow an approval flow where marketplace users can approve or reject before launch

## What This Enables

* Extend existing in-store integrations to self-service vendors and unlock incremental ad spend
* Keep campaign operations in one place by using the same UI already used for onsite
* Manage budgets with the same wallet system used for self-service onsite campaigns

## Onboarding

* If the client already uses a supported in-store CMS provider (for example, Invian/ The LED), onboarding typically takes a few hours
* If the client uses a provider that is not yet supported, Topsort can likely integrate with it within a few weeks
* If the client has no provider, Topsort partnerships can recommend options

<LastUpdated date="2026-04-22" />
