Products

Products represent the type of good being sold and variants are the specific version. A simple example is "t-shirt" is the product and "black small t-shirt" could be a variant. A product must have at least one variant.

States

We maintain a state for each product to understand what's required for successful trade. Below are the range of states a product can be in:

Product States

  • Active status is managed by the supplier and allows the supplier to make old products inactive. If a product is inactive, it's not visible to the retailer. It should and will be removed from the retailers ordering it.
  • Priced / Not priced if the product gets priced by the supplier, active and visible it can be selected or ordered by the retailer. A product is priced by adding it to the price list assigned to the partnership.
  • Finally, selected / Deselected allows the retailers to manage which products they have selected. With apps like Shopify, products will only be synced when selected. If there's an issue with the product (Ex. Price removed), it will be Deselected automatically (and on a ongoing basis).

The final events that could have an impact on product states is the partnership.

  • Partnership active & priced - Happy path refer to states above.
  • Partnership is missing a price list. All products will be visible but not selectable and cannot be ordered.
  • Partnership is inactive. Often if a trading relationship is paused, you want to keep relevant product details. All products will be deselected.
  • Partnership deleted. All products will be removed and products will no longer be visible to the retailer.

What details are on a product & variants?

We store products in a normalized state. This makes it agnostic to each Product Informatino Management (PIM) system, or e-commerce platform. The basics details are:

  • Title
  • Description
  • Google Product Category
  • Product Options
  • Brand
  • Images

On the variants, we store:

  • Title
  • Retail Price
  • SKU
  • Barcode
  • Weight
  • Dimensions
  • Inventory levels (total & per location)
  • Attributes (Flexible key-value pairs)