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
productId✅ YesstringTextProduct identifier (must match Products dataset)product_id, sku_id, item_idP001
storeId✅ YesstringTextStore / market / sales channel identifierstore_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

  • productId must match the Products dataset
  • storeId must match the Stores dataset (if configured)
Matching can be configured using:
  • Exact match
  • Composite keys (productId + storeId)
  • Custom identifiers

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

storeId 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 storeId formatting

Validation rules

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

Example row

productIdstoreIdpriceunit_coststatusstockregular_pricetax_ratecurrencyprice_effective_date
P001FI-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