Skip to main content
The Product Store-Level dataset allows you to provide product information at store, market, or sales-channel level. This dataset is required if:
  • You operate multiple physical stores
  • You sell across different markets (countries)
  • You manage multiple sales channels (Online / Marketplace / Wholesale)
  • Prices, costs, tax rates, or stock differ per store
Each row represents:
One product in one specific store (or market / channel)

When to use store-level data

Use this dataset if:
  • Prices vary by store
  • Unit cost differs by warehouse or region
  • Stock is managed per store
  • Tax rates vary by country
  • Some products are active in certain stores only
If all stores share identical product data, you may use only the Products dataset.

Data schema

Field NameRequiredTypeFormatDescriptionAlternative NamesExample
item_id✅ YesstringTextUnique SKU-level identifier (must match item_id in the Products dataset)itemId, sku_idSKU-1001
store_id✅ YesstringTextStore / market / sales channel identifierstoreId, store_code, market_id, channel_id, location_idFI-HELSINKI
price✅ YesfloatDot separatorCurrent selling priceselling_price, current_price119.99
unit_cost⬜ NofloatDot separatorCost per unitcost, purchase_cost, landed_cost75
status⬜ NostringTextProduct status in this store (active / discontinued / out_of_stock)availability_status, lifecycle_statusactive
stock⬜ NofloatNumericAvailable inventory unitsinventory, stock_qty, quantity_available42
regular_price⬜ NofloatDot separatorNon-discounted base pricelist_price, base_price129.99
tax_rate⬜ NofloatPercentage (0–1 or 0–100)VAT or sales tax ratevat, vat_rate, tax24
currency⬜ NostringISO 4217Currency codecurrency_codeEUR
price_effective_date⬜ NodatetimeYYYY-MM-DDDate when price becomes effectiveeffective_from, valid_from2026-02-01
You may include additional attributes as separate columns.

Matching logic

  • item_id must match the Products dataset
  • store_id must match a store defined in Stores management
Matching can be configured using:
  • Exact match
  • Composite keys (item_id + store_id)
  • Custom identifiers

Load by CSV or by API

Store-level data can be loaded two ways:
  • CSV / XLSX upload - via the Datasets page, following the format requirements below.
  • Public API - push product-store records programmatically, one record per product-store combination. The upsert key is (item_id, store_id); payloads that omit store_id remain product-level and behave as before. See the API changelog for details.

Price interpretation logic

Retailgrid applies the following logic:
  • If regular_price exists and price < regular_price → product is considered on promotion
  • Margin is calculated as:
    Margin = price - unit_cost
    Margin % = (price - unit_cost) / price
    
  • If tax_rate is provided, gross/net calculations are supported

Store / market / channel flexibility

store_id can represent:
  • Physical store
  • Country
  • Warehouse
  • Online shop
  • Marketplace (Amazon, Zalando, etc.)
  • B2B vs B2C channel
Retailgrid treats this as a location dimension.

Currency handling

If multiple stores use different currencies:
  • Currency must be provided
  • FX conversion rules must be configured
Recommended:
Keep price and cost in the same currency per row.

Time handling

This dataset is typically a current snapshot, not time-series. If price_effective_date is provided:
  • Future price simulations become possible
  • Scheduled price changes can be modeled

Data format requirements

Supported formats:
  • CSV (recommended)
  • XLSX
Encoding:
  • UTF-8
  • Dot (.) as decimal separator
Rules:
  • One row = one product × one store
  • Do not duplicate identical product-store combinations
  • Use consistent store_id formatting

Validation rules

Upload will fail if:
  • item_id is missing
  • store_id is missing
  • price is missing or non-numeric
  • Matching with Products dataset fails

Example row

item_idstore_idpriceunit_coststatusstockregular_pricetax_ratecurrencyprice_effective_date
SKU-1001FI-HELSINKI119.9975active42129.9924EUR2026-02-01

How Retailgrid uses store-level data

This dataset powers:

Margin analysis per store

  • Store-level profitability
  • Margin leakage detection

Local price optimization

  • Dynamic pricing by store
  • Market-based pricing

Assortment strategy

  • Store-specific availability
  • Stock-based pricing decisions

Promotion strategy

  • Local promo activation
  • Regional discount benchmarking

Advanced recommendations

For best results:
  • Always provide unit_cost for margin optimization
  • Keep store identifiers consistent
  • Provide stock for AI-driven replenishment signals
  • Include tax_rate for cross-country operations