# normalizeProductDetails

> **normalizeProductDetails**(`candidate`): [`ProductDetails`](/developers/references/core-sdk/index/type-aliases/productdetails/) \| `undefined`

Defined in: utils/product/sanitizeProducts.ts:60

Normalise one untrusted candidate into its [ProductDetails](/developers/references/core-sdk/index/type-aliases/productdetails/) scope
fields, or `undefined` when none survived. Unlike
[normalizeSharingProduct](/developers/references/core-sdk/index/functions/normalizesharingproduct/), no `title` is required — callers that only
need scope fields for reward selection never render a product card.

## Parameters

### candidate

`unknown`

## Returns

[`ProductDetails`](/developers/references/core-sdk/index/type-aliases/productdetails/) \| `undefined`