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

# EU Product Identifiers

Part of the [EU Customs Reform - Product Identifiers (PID)](/eu-product-identifiers-pid).

On SAP Commerce (Hybris), the Global-e addon reads the product attributes you list in configuration and sends them to Global-e at checkout as `standardcode` and `mididentifier`. Your SKU is already sent separately, so there is no new SKU field to add. Do not use the US MID fields for EU PID.

For what each identifier is, see [The three identifiers](/eu-product-identifiers-pid#the-three-identifiers) on the overview page.

## Prerequisites

| Requirement | Value |
| - | - |
| Minimum plugin version | Global-e plugin `2211.12` |

## What you need to do

1. Confirm with your Global-e CSM that EU PID is enabled for your account and that you are on a Global-e addon release that supports it (`2211.12`).

2. **Store the values in product attributes defined in the Type System** (`items.xml`). The native SAP Commerce attributes `ean` and `manufacturerAID` work out of the box. Classification attributes and Dynamic Attributes are not supported.

3. **Populate the values on each variant** that can appear in the cart. If a variant has no value, the addon uses the value on the parent (base) product.

4. **Set the two Global-e configuration properties**, in the Administration Console (HAC) or in `local.properties`:

   ```
   globale.product.metadata.attributes=ean,manufacturerAID
   globale.product.metadata.attributes.map={"ean":"standardcode","manufacturerAID":"mididentifier"}
   ```

   * `globale.product.metadata.attributes` is a comma-separated list of the attribute qualifiers to send.
   * `globale.product.metadata.attributes.map` maps each qualifier to the key Global-e receives. The values must be exactly `standardcode` and `mididentifier` (lowercase).
   * If your barcode or manufacturer code is stored in a different attribute, replace `ean` or `manufacturerAID` with that attribute's qualifier in both properties.

5. Place a test order and confirm both keys appear when values exist and are omitted when blank.

| Sent as | What it holds | When to leave it out |
| - | - | - |
| **`standardcode`** | The barcode for that variant (UPC, EAN, or GTIN) | When the item has no barcode. Global-e declares the "no barcode" code automatically. |
| **`mididentifier`** | The manufacturer's product code for that variant | When you have no manufacturer code to send. |

## How Global-e reads the values

For each cart line and each mapped attribute, the addon uses the first non-empty value:

1. The attribute on the variant in the cart
2. The same attribute on the parent (base) product
3. Otherwise omit

## Key points

* **Type System attributes only.** Values held in Classification attributes or Dynamic Attributes are not read.
* **Exact lowercase keys.** The keys Global-e receives are whatever you put in the map, so use exactly `standardcode` and `mididentifier`.
* **The original attribute is also sent.** Each listed qualifier is sent under its own name as well as under the mapped key, for example both `ean` and `standardcode` with the same value. Global-e uses only `standardcode` and `mididentifier` for EU PID; the extra keys are expected.
* **Omit, don't fake.** When an attribute is blank, the addon leaves it out. Never enter a placeholder such as NA, 0 or -.
* Keep separate from US MID fields and from other product fields such as `MerchantHSCode`.

<h2 id="quick-check-before-go-live">
  Quick check before go-live
</h2>

| Check | Done |
| - | - |
| Global-e addon on a release that supports EU PID, and EU PID enabled by your CSM | ☐ |
| Barcode and manufacturer code stored in Type System attributes (for example `ean`, `manufacturerAID`) | ☐ |
| Both configuration properties set, with the map using lowercase `standardcode` and `mididentifier` | ☐ |
| `standardcode` and `mididentifier` appear in SendCart when values exist | ☐ |
| Keys omitted when a variant and its parent have no value | ☐ |
| Each variant in the cart sends its own pair | ☐ |

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do I need new attributes named standardcode or mididentifier?">
    No. Those are the keys Global-e receives. Keep your values in your existing attributes and map them in `globale.product.metadata.attributes.map`.
  </Accordion>

  <Accordion title="Our barcodes are in Classification attributes. Can Global-e read them?">
    No. Only Type System attributes are supported. Store the values in a Type System attribute such as `ean`, or contact your CSM.
  </Accordion>

  <Accordion title="Only a manufacturer code, no barcode?">
    Map only the manufacturer code attribute. `standardcode` is omitted and Global-e declares the "no barcode" code.
  </Accordion>
</AccordionGroup>


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