> ## Documentation Index
> Fetch the complete documentation index at: https://soran.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Product catalog

> How products sync from your store and why it matters for reports.

Your products sync from your store into a catalog Soran keeps. It does two jobs.

It gives report rows real names, so the products report shows what you sell
rather than an identifier. And it gives your costs something to attach to — a
unit cost is recorded against a catalog entry, which is why the catalog has to be
present before per-product profit can be calculated.

## Products, variants, and SKUs

The catalog holds all three, and they are matched separately because the same
string can legitimately be a valid SKU *and* a valid product identifier. Keeping
them distinct is what stops a lookup matching the wrong thing.

This is also what lets the [products report](/docs/reports/products) group by product,
variant, or SKU.

## If products are missing

A product that has never appeared in a synced order or catalog pull will not be
there, and report rows for it fall back to whatever identifier the order carried.
Check the sync on
[Data sources](/docs/data/data-sources) before entering costs — costs recorded against
a missing product have nothing to attach to.

## Related

> **[Cost of goods](/docs/data/cogs)**
>
> Attach unit costs to catalog entries.

> **[Products report](/docs/reports/products)**
>
> Where the catalog's names and costs surface.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.