Meet Alex, a store manager at a busy retail location that sells ice cream. She's on the floor serving customers most of the day, checking inventory on her phone between interactions. Her rule: if it can't be done on her phone in a few minutes, it won't get done.
This QuickStart shows you how to build the storefront interface Alex uses to manage her store — complete with live inventory data, product filtering, and an operational notification center.
Why this interface works for Alex:
Build time: about 30 minutes.
What you'll build:
A data-driven storefront interface that allows users to:
Along the way you'll learn how to:
For more information on Sigma's product release strategy, see Sigma product releases
If something doesn't work as expected, here's how to contact Sigma support
This QuickStart is ideal for:

Before building the storefront interface, we need a lightweight data model. Rather than wiring up joins directly inside the workbook, we'll create a Sigma data model with two tables and configure relationships to PRODUCTS and STORES. This keeps the workbook clean and makes related columns available on demand wherever we need them.
From your Sigma home page:
Create new and select Data model.Element bar add a new Table from the Data group.INVENTORY_LEDGER_DAILY.EXAMPLES > COLD_PROVISIONS:
INVENTORY_LEDGER_DAILY is the fact table at the center of this data model. Each row represents one product at one store on one date, recording daily inventory activity: units sold, delivered, wasted, adjusted, and closing stock. We'll manually join it to PRODUCTS and STORES as dimension tables, making their columns available throughout the workbook:

With INVENTORY_LEDGER_DAILY on the canvas, add relationships to the two dimension tables.
Join to PRODUCTS:
INVENTORY_LEDGER_DAILY element to select it.3-dot menu to opens the tables menu.Element source > Join
PRODUCT, taking care to select the table from EXAMPLES > COLD_PROVISIONS:
Select, leaving all columns selected.Product Id (INVENTORY_LEDGER_DAILY) = Product Id (PRODUCTS).Left outer join.+ to add another table.
Join to STORES:
STORES, taking care to select the table from EXAMPLES > COLD_PROVISIONS:STORES from COLD_PROVISIONS.
Store Id (INVENTORY_LEDGER_DAILY) = Store Id (STORES).Left out join and click Preview output:

Done.With both joins in place, columns like Store Name and Store Image Url (from STORES) and Product Name, Product Line, and Product Image Url (from PRODUCTS) will be accessible throughout the workbook.
NOTIFICATIONS feeds the notification center panel on the right side of the storefront. It's independent of the ledger and gets added as a separate element.
Element bar add another Table to the workbook page.NOTIFICATIONS, taking care to select the table from EXAMPLES > COLD_PROVISIONS.Select.The NOTIFICATIONS table has a Priority column with text values like critical, high, medium, and low. Controls like a switch or toggle require a boolean target, so we'll add a calculated column that converts critical priority to true.
NOTIFICATIONS table selected in the data model, click the + button at the top right of the column list to add a new column.Is Urgent.[Priority] = "critical"
Sigma evaluates this as a boolean — rows where Priority equals critical return true; all others return false.

COLD_PROVISIONS_DATA_MODEL.Publish.
In the next section, we'll create a new workbook and connect it to this data model.

With the data model published, we can now create the workbook. The header establishes the visual identity of the storefront—logo on the left, navigation labels across the top, and controls on the right. We'll build the logo and navigation in this section, then add the controls in the next.
Create new and select Workbook.Save as and name the workbook Cold Provisions QuickStart.Data by double-clicking the page tab.This page will hold the source table elements from the data model, making them available to any page in the workbook.
Element bar, add a Table element and search for COLD_PROVISIONS_DATA_MODEL. Select INVENTORY_LEDGER_DAILY + 2.Table element and select NOTIFICATIONS from the same data model:
+ next to the page tabs and rename it Storefront.Sigma supports a common header, which is useful when we want to reuse it across multiple pages.
Workbook settings button:
Page header:
The Cold Provisions logo is an image element placed in the top-left of the header.
Element bar, drag an Image element from the UI group onto the canvas at the top left.URL.https://sigma-quickstarts-main.s3.us-west-1.amazonaws.com/shared_images/cold-provisions-logo.png

The logo background is white but the headers is not quite that so we can adjust it to match:

The navigation labels (Storefront, Finance, R&D) are text elements styled to look like a nav bar. For this QuickStart we're only building the Storefront page, so these are cosmetic—the tab switching behavior comes in a later section.
Element bar, drag a Navigation element from the Layout group onto the canvas to the right of the logo.Storefront and Data pages are shown automatically. We could Hide the Data page tab, which would remove it from the control but let's just leave it since we won't have other pages in this demonstration:

For more information, see Use the navigation element to guide user exploration

The storefront needs to show the right data for the right store on the right day. Two controls in the page header handle this: a store selector and a date picker. Both will be placed in the shared page header so they're available across all pages in the workbook.
The store selector uses a popover—a floating panel anchored to a trigger button in the header. This keeps the header clean while still giving Alex a full list of stores to choose from on demand.
Add the popover to the header:
Storefront page, add a Popover element from the Element bar > Layout group.Sigma automatically creates a new page called Popover 1 to hold the popover's contents.
Popover 1 page to Store Selector.Add and configure the list control on the popover page:
Store Selector page.Element bar, add a List control from the Controls group.INVENTORY_LEDGER_DAILY + 2 (from the Data page)Store NameSet display column and set it to Store NameuncheckedcheckedcheckedcheckedStore-IdAscending by alphanumeric
Now that we have the list we need a way to enforce a selection. Normally, a data model would have a Stores table but since we only have that data joined to the INVENTORY_LEDGER_DAILY table, we can use the flexibility of Sigma to get what we need, without the need for custom SQL (although we could do that too).
Data page, create a Child table from INVENTORY_LEDGER_DAILY + 2:
Store Name and Store ID from the child table.Store List with IDsThis gives us the one store and id for each location:

Now we need to set the Target for the list control on the Store Selector page:

Lastly, we need to set the store select Navigation control to use a formula so that when the user selects a store from the list, the table is automatically filtered.
With the navigation control selected, set the Text value in the Element panel to Store: and then press the = key to bring up the formula editor.
Use this formula:
[Store List with IDs/Store Name]

When a different store is selected, the control automtically filters the table on the Store Selector page and the navigation element shows the selected store name:

For more information, see Use popovers to simplify a workbook interface
The date control filters the storefront to a single day's inventory data. Defaulting to today means Alex always opens to live data without any manual selection.
Element bar, add a Date range control from the Controls group.Current > Day.Control ID to Local-Date.
Controls don't filter anything until they have targets — the specific table columns they act on. Let's wire both controls to INVENTORY_LEDGER_DAILY + 2 now so filtering works as soon as we build the repeater in the next section.
Store control target:
Store Name (Stores) list control on the Store Selector page.Targets tab in the right panel.+ to add a filter target.INVENTORY_LEDGER_DAILY + 2 and set the column to Store Id.
Date control target:
Local Date date range control in the header.Targets tab in the right panel.+ to add a filter target.INVENTORY_LEDGER_DAILY + 2 and set the column to Local Date.
Albuquerque Square store and click Publish.
This is the core of the storefront. The Repeated container element generates one product card per row in the filtered dataset—define the layout once and Sigma does the rest.
With the store and date controls already filtering INVENTORY_LEDGER_DAILY + 2, the repeated container will immediately show the right products for the selected store and day.
For more information, see Use repeated containers to generate layouts from data
Storefront page, from the Element bar add a Repeated container element from the Layout group.INVENTORY_LEDGER_DAILY + 2 from the Data page.Sigma renders a default card for each row in the filtered dataset. The canvas shows a single card template—everything built inside this template will repeat for every product.
Expand the container to show two columns:

Each product card uses a container to control spacing and separate the image area from the text details below it.
Container element from the Layout group:
The container is automatically repeated to each area of the repeater.
Format, set the padding and gap values to give the card content comfortable spacing:
Background color to #FFFFFFcreate the card surface.Product images are rendered as the background image of a dedicated container inside the card — not as a separate image element. This approach gives full control over sizing and cropping.
Container element from the Layout group. This will hold the product image.Main Image.
Each card displays the product line and product name as text elements, styled for scannability.
Text element for the product line.Product Line (from the PRODUCTS relationship).

Text element for the product name.Formula:Upper([INVENTORY_LEDGER_DAILY + 2 repeated container/Product Name])

Each card shows two inventory metrics — units sold and units available — using a Value list element. This element is purpose-built for displaying labeled key-value pairs in a clean row format.
Value list element from the UI group.+ to add the first field and configure it: Source columnSold UnitsSold:
+ again to add the second field and configure it:Source columnClosing UnitsAvailable
With all card elements in place, the repeated container renders a full grid of product cards filtered to the selected store and date.


With the product cards rendering, we'll add two controls that let Alex narrow down what she's looking at: a category dropdown to filter by item type, and a text search to find specific products by name.
The item type filter is a list control that lets Alex switch between product categories — Ice Cream Pints, Scoops, Frozen Yogurt, and so on. It filters the repeated container directly.
Storefront page, add a List values control from the Controls group in the Element bar.INVENTORY_LEDGER_DAILY + 2 (from the Data page)Product LineTargets tab and add INVENTORY_LEDGER_DAILY + 2 as a filter target, mapping to the same Product Line column.
The product search lets Alex type a few letters to quickly find a specific product. It uses regex matching so partial strings work — typing "mango" surfaces all mango products.
Text input control from the Controls group.Product-Search.
Targets tab and add INVENTORY_LEDGER_DAILY + 2 as a filter target.Product Name.Contains.

The notification center sits in a panel to the right of the product grid and gives Alex a live feed of operational alerts — low stock warnings, delivery arrivals, waste events, and more. It's built with a Repeated container sourced from the NOTIFICATIONS table.
Storefront page, add a Container element from the Layout group and position it to the right of the product repeated container.Text element and type Notifications — this is the panel header.Switch control from the Controls group inside the same container, to the right of the header text.Urgent OnlyUrgent-OnlyRepeated container element from the Layout group.NOTIFICATIONS from the Data page.Format tab, add a border to the card template to visually separate each notification.
Each notification card displays a category icon, title, category label, and date. Build these inside the repeated container template:
Image element for the notification icon. Set a static URL as:https://cdn-icons-png.flaticon.com/128/1827/1827370.png

Text element and bind it to the Title column from NOTIFICATIONS.Text element and bind it to the Body column from NOTIFICATIONS.Text element and bind it to Notification Date from NOTIFICATIONS using a formula:DateFormat([NOTIFICATIONS repeated container/Notification Date],"%m-%d-%Y")

Button element from the UI group to the right side of the card.Details.For more information, see Reports overview
There is also this QuickStart: Fundamentals 11: Pixel Perfect Reporting

Back in Section 4 we promised to add NOTIFICATIONS as a target for the store and date controls. Now that the notification repeated container exists, let's complete that:
Store Name (Stores) list control on the Store Selector page.Targets and add NOTIFICATIONS, mapping to Store Id.
Local Date date range control in the header.Targets and add NOTIFICATIONS, mapping to Notification Date.
Urgent Only switch target:
Urgent Only switch control in the notification panel.Targets and add NOTIFICATIONS, mapping to Is Urgent.
When the switch is on, the notification list filters to only critical-priority items — rows where Is Urgent is true.

The storefront and manager views show different content to different users — but they share the same data source and controls. We'll use a Tabbed container to hold both views and a Segmented control to switch between them.
Storefront page, add a Tabbed container element from the Layout group.Storefront and Manager. The names are required so that we an navigate to them using a segmented control later.Storefront tab. Leave the notifications section outside of the tab container so that that it is always shown, regardless of the users role.Format tab of the tabbed container, disable Show tab bar — navigation will be handled by the segmented control instead.
Segmented control from the Controls group and place it above or alongside the notifications panel.Manual listStorefront, ManagerView-Selector
Actions tab in the right panel.3-dot menu and select Add condition. Add an action for when the value equals Storefront:
Select container tabTabbed container 1 (Storefront)Storefront
+ to the right of ACTION SEQUENECES and add a second action for when the value equals Manager, adding a condition and action as before but targeting Manager instead.
The Manager tab is intentionally empty for this QuickStart. In a full implementation it would contain summary KPIs, trend charts, and regional performance metrics — all built using the same techniques covered here.
For example, the managers tab might look something like this, taking advantage of a more complete set of data:


In about 30 minutes, you built a fully functional storefront interface — a data model with joined dimension tables and a calculated column, repeating product cards with live inventory data, popover-triggered store and date controls, a notification center with urgency filtering, and role-based multi-view navigation — all without writing a single line of application code.
What makes this pattern powerful isn't any one feature in isolation. It's the combination: the data model centralizes your joins and business logic once, the Repeated container turns a data table into a polished card grid in minutes, and controls with wired targets let a single filter cascade across multiple elements simultaneously. Together, they let you build what would otherwise require a dedicated front-end developer — in a fraction of the time.
This same pattern applies wherever you need a focused, role-based operational interface. Field technicians checking equipment status. Sales reps reviewing their pipeline. Warehouse managers monitoring stock levels. The layout changes, the data changes, but the approach stays the same: a data model for the relationships, repeated containers for the cards, and controls to drive the filtering.
Sigma is increasingly where operational work happens — not just where data gets reported. The techniques in this QuickStart are the building blocks for that.
Additional Resource Links
Blog
Community
Help Center
QuickStarts
Be sure to check out all the latest developments at Sigma's First Friday Feature page!
Additional Resource Links
Blog
Community
Help Center
QuickStarts
Be sure to check out all the latest developments at Sigma's First Friday Feature page!
