# What belongs in a useful product data feed?

Inspect a fictional CSV and JSON feed, including variants, null prices, source references, and observation time.

Published: 2026-10-03 · Zeneral editorial team

Canonical: https://zeneral.ai/resources/product-data-feed

## Record the product and the observation

A product name is a starting point, not a dependable matching key. Variants such as size, pack count, capacity, and model can change the meaning of a price. Define whether the identifier is supplied by the source or created for the agreed dataset.

Keep the observation separate from the product identity. Price, availability and promotion describe a source at a particular time. A source URL and timestamp help the receiving team investigate a discrepancy and distinguish a recent observation from an older one.


## Make missing values interpretable

In the example below, the second product is out of stock and its price is null. Null means there is no usable price observation in this illustrative record; it does not mean the price is zero. The feed carries a currency code so that the numeric value has a defined unit.

Do not infer availability from a missing price, or a source failure from an empty file. For a real engagement, define field-level null semantics, record-level exceptions and run-level status separately. A delivery can arrive successfully while collection is incomplete.


## Validate the contract before integration

Review records for identity collisions, expected types, currency, timestamp format, required fields, and variant consistency. Compare a representative sample with its source pages. Agree whether the delivery is a full snapshot or an incremental update, and how deletions or discontinued products will be represented.

CSV and JSON can express the same observations, but conversion needs a documented policy. This example uses an empty CSV cell for a JSON null; a real receiving system must agree that convention. The downloads are fictional teaching examples, not a live feed or a representation of a customer project.

- Define record identity and update semantics
- Specify currency, units and timezone
- Agree missing-value and exception handling
- Confirm expected totals and validation checks
- Test the receiving system with accepted samples

Examples are illustrative. Scope and delivery are agreed for each engagement.

Explore services: https://zeneral.ai/ai
Discuss your requirement: https://zeneral.ai/contact

## Illustrative fictional records

```json
[
  {
    "product_id": "luma-500",
    "product": "Luma bottle",
    "variant": "500 ml",
    "price": 49,
    "currency": "USD",
    "availability": "in_stock",
    "source_url": "https://shop.example.invalid/products/luma-500",
    "observed_at": "2026-10-03T09:00:00Z"
  },
  {
    "product_id": "luma-750",
    "product": "Luma bottle",
    "variant": "750 ml",
    "price": null,
    "currency": "USD",
    "availability": "out_of_stock",
    "source_url": "https://shop.example.invalid/products/luma-750",
    "observed_at": "2026-10-03T09:00:00Z"
  }
]
```

CSV: https://zeneral.ai/marketing/examples/product-feed.csv