Skip to main content
Product master data specification. Check the sample Sample_products.csv.
You can also load product data programmatically via the public Retailgrid REST API. API payloads use slightly different field names and required fields — see Loading via the API below.

1. Objective

The Product Master dataset supports:
  • Linking transactions to products
  • Margin calculation (via unit_cost)
  • Category-level analytics
  • Brand & assortment analysis
  • Elasticity modeling
  • Price corridor analysis
Each row represents:
One sellable item (SKU level)

2. Referential integrity (critical)

The following fields must match exactly with Transaction history: If item_id does not match, transactions cannot be linked.

3. Product master — unified specification

4. Alignment with transaction schema

4.1 Keys Mandatory alignment:
4.2 Currency Consistency If transactions include currency, product file must include currency. 4.3 VAT Consistency If VAT is included in transaction prices:
  • Provide vat_rate in product file
  • Clarify whether unit_price in transactions is gross or net

5. Data format requirements

5.1 Dates
Example:
5.2 Numeric Fields
  • Decimal separator: .
  • No currency symbols
  • No thousand separators

6. Custom attributes (extensibility model)

You can add additional attributes as extra columns. Examples:
  • material
  • color
  • season
  • gender
  • supplier_id
  • competitor_reference
  • margin_group
  • elasticity_cluster
Rules for custom attributes
  • Must not overwrite required column names
  • Must follow consistent naming
  • Must contain a single value per row
  • No nested JSON inside Excel cells
  • CSV / XLSX upload only — the JSON API rejects unknown fields (see Loading via the API)
Example:

7. File format

Accepted:
  • CSV (UTF-8 preferred)
  • XLSX
One row per SKU. No pivot tables.
No formulas.
Raw data only.

8. Minimal product dataset (absolute minimum)

If system limitations exist:
However, for pricing analytics it is strongly recommended to include:

9. SQL schema example

10. Loading via the API

The public REST API accepts the same data through POST /v1/products/bulk (JSON records) or POST /v1/imports/products (CSV import). JSON payloads use different names for some fields and a different required set. Required fields in API payloads: item_id, sku, sku_name, current_price, unit_cost. All other fields keep the same names as the CSV columns above.
Custom attributes as extra columns are supported for CSV / XLSX upload only. The JSON API rejects unknown fields — payloads containing fields outside the schema fail validation.