--- title: "Product and Customer Identifiers" slug: "mapp-fashion-product-and-customer-identifiers" description: "Which identifier goes where in Mapp Fashion: Style ID and Variant ID in product data, tracking and API requests, plus customer and order IDs." status: "update" updated: 2026-10-14T13:56:18Z published: 2026-10-14T13:56:18Z canonical: "docs.mapp.com/mapp-fashion-product-and-customer-identifiers" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.mapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Product and Customer Identifiers Mapp Fashion links product data, tracking events, transaction data and API requests through identifiers. If an identifier does not match across these sources, events cannot be assigned to products, recommendations lose relevance, and API requests return errors or empty results. This page shows which identifier belongs in which field. --- ## Identifier Levels Fashion product data is organized in three levels. The example shows a black dress in size 36. | Level | Description | Example | | --- | --- | --- | | Product | All variants of a product, regardless of color and size. | `DRESS-5892` | | Style | All sizes of a product in one color. This level is also called style and color. | `DRESS-5892-BLK` | | Variant (SKU) | One purchasable item, defined by style, color and size. | `DRESS-5892-BLK-36` | For Mapp Fashion, the Style ID and the Variant ID are the key identifiers. API requests use the Style ID by default. Tracking and transaction data identify the viewed or purchased item by its Variant ID. --- ## Product Data The identifiers come from your Product Catalog. Use the same values in tracking, in the Transaction Feed and in API requests. | Identifier | Product Catalog attribute | Transaction Feed column | | --- | --- | --- | | Product ID | `product_id` | Not used | | Style ID | `style_id` | Not used | | Variant ID (SKU) | `variant_id` | `ProductId` | | Barcode (GTIN or EAN) | `gtin` or `ean` | `EAN` | | Set ID | `set_id` | Not used | For all attributes, see [Product Attribute Model](/v1/docs/connect-product-catalog-product-attributes-model) and [Transaction Feed Attributes Reference](/v1/docs/attributes-reference-mapp-fashion). > [!WARNING] > Warning > > In the Transaction Feed, the column `ProductId` contains the Variant ID of the purchased item, not the Product ID. --- ## Tracking Tracking events carry the Style ID and the Variant ID of the product. | Level | Smart Pixel | Standalone Tracking (Legacy) | | --- | --- | --- | | Style | `fashionStyleId` | `productCode` | | Variant (SKU) | `id` | `sku` | In the Smart Pixel, the product parameter `id` contains the Variant ID. ### Recommendation Tracking If you render recommendations yourself, track clicks on recommended items with [Recommendation Tracking](/v1/docs/recommendation-tracking-fashion). It uses the identifiers from the recommendation response, not your own product identifiers. Pass them on unchanged: | Smart Pixel retrieval call | HTTP response | Used in Recommendation Tracking as | | --- | --- | --- | | `response_id` | `event_id` | `data-dressipi-event-id` or `requestId` | | `content_id` | `content_id` | `data-dressipi-content-id` or `setId` | | `dressipi_item_id` | `raw_garment_id` | `data-dressipi-raw-garment-id` or `itemId` | > [!WARNING] > Warning > > Without the internal Mapp Fashion ID, clicks on recommendations are not tracked. You do not need to match this ID to your product data, only pass it on. Over HTTP, the v2 endpoints only return it as `raw_garment_id` if you set `include_fashion_ids=true`. The Smart Pixel retrieval calls always return it as `dressipi_item_id` in the detailed format, in the simple format only with `include_fashion_ids: true`. Hosted widgets are not affected because they track interactions automatically. Attributing purchases to recommendations in Mapp Intelligence is a separate feature. See [Recommendation Tracking in Mapp Intelligence](/v1/docs/recommendation-tracking-plugin-intelligence). --- ## API Requests Item-based API requests pass one identifier in `id`. The `identifier_type` parameter defines how Mapp Fashion interprets it. Identifiers in `excluded_ids` must be of the same type. | identifier_type | Matches | Note | | --- | --- | --- | | `product-code` | Style ID | Default. | | `sku` | Variant ID | Works on all endpoints. | | `gtin` | Barcode, for example EAN-13 or UPC | Only works if barcodes are included in your product data. | | `fashion-id` | Internal Mapp Fashion ID (`raw_garment_id`) | Called `dressipi-id` in v1. | The following rules apply: - Not every identifier type is available in every integration. It depends on what your product data contains and how it is processed. - Identifiers must match completely. There is no fallback for partial matches. - Identifier values must be sent exactly as they appear in your product data. - In v2, `outfits` and `partner_outfits` return `422` if the item in `id` cannot be found. `similar` returns fallback recommendations instead, so if the results look unrelated, check the identifier. - `basket` ignores identifiers in `ids` that cannot be found. To check whether Mapp Fashion knows an identifier, request [Get information about an item by id](/v1/apidocs/get-information-about-an-item-by-id) with the same `identifier_type`. This is a v1 endpoint, so send `fashion-id` as `dressipi-id` there. ### Identifiers in API Responses | Field | Content | | --- | --- | | `garment_id` | The identifier of the item from your product data. It has the same type as the identifiers in the request (`identifier_type`), by default the Style ID. | | `product_id` | The product level identifier, Product ID in your Product Catalog. Only returned if your product data contains it. | | `ancillary_product_code` | An alternative product code. Only returned if it is included in your product data. | | `raw_garment_id` | The internal Mapp Fashion ID. For recommended items, v2 only returns it with `include_fashion_ids=true`. | | `available_skus` | The Variant IDs of each recommended item that are in stock, keyed by `garment_id`. | | `event_id`, `content_id` | Identify the request and each set of items. Needed for Recommendation Tracking. | > [!WARNING] > Warning > > `product_id`, `ancillary_product_code` and `available_skus` are only correct if Product ID, Style ID and Variant ID in your Product Catalog are filled at the right level, see Identifier Levels above. `available_skus` also requires that your products have their real product images from the first import on. If products were imported with placeholder images or dummy URLs, `available_skus` can contain Variant IDs of other products. For request parameters and response formats, see [Recommendation Items](/v1/docs/mapp-fashion-recommendation-items) and the [Mapp Fashion API](/v1/apidocs/mapp-fashion-api-documentation). --- ## Customer and Order Identifiers Purchases are linked to shoppers through customer and order identifiers. Use the same values in tracking and in the Transaction Feed. | Identifier | Smart Pixel | Transaction Feed | | --- | --- | --- | | Customer ID | `id` in `wtSmart.customer.data` | `CustomerId` | | Customer email | `registrationEmail` in `wtSmart.customer.data`, pseudonymized automatically | Not used | | Order ID | `id` in `wtSmart.order.data` | `OrderId` | - Use a stable customer ID, such as a database ID. An opaque identifier is preferred over a hashed email address. - If `CustomerId` contains a hashed email address, document how the hash is generated, for example lowercase followed by SHA-256. - `OrderId` must match the order number sent with the order confirmation tracking.