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

# EU Consumer Guarantee

Part of the [EU Consumer Guarantee (Notice & GARAN) - Platform Setup Guides](/eu-consumer-guarantee-platform-setup-guides).

## One-time setup

1. In **Stores → Attributes → Product → Add New Attribute**, create a text attribute to hold the GARAN URL. Example: label `GARAN Image URL`, attribute code `ge_garan_image_url`. Catalog Input Type = **Text Field**, Values Required = No.
2. Add the attribute to the relevant attribute set in **Stores → Attributes → Attribute Set**, so it appears on the product edit page.
3. Go to **Stores → Configuration → Global-e → API Settings → Products Settings**. In **GARAN Image URL attribute**, enter the attribute's **code** (not the label) — e.g. `ge_garan_image_url`.
4. Click **Save Config**, then flush Magento cache (**System → Cache Management → Flush Magento Cache**).

Leaving the configuration field empty turns the feature off. The setting is available at default, website, and store-view scope, so a different attribute can be mapped per store if needed.

## Per product

Set the mapped attribute on the product record Global-e sends for that line — on the **simple product** for non-configurable products, or on each **child simple** for configurable products. Use the full HTTPS URL of that product's GARAN PNG. Leave it empty where there is no guarantee.

| Product | Attribute value |
| - | - |
| Alpine Insulated Jacket — JKT-4471-BLK-M | `https://cdn.example.com/garan/JKT-4471.png` |
| Alpine Insulated Jacket — JKT-4471-BLK-L | `https://cdn.example.com/garan/JKT-4471.png` |
| Cotton Crew Tee — TEE-1102-WHT-L | (empty — no guarantee) |

For bulk population use **Catalog → Products → select products → Actions → Update Attributes**, or a CSV import via **System → Import**.

## When the value syncs

The value is picked up automatically on:

| Event | Trigger |
| - | - |
| Product save | Saving a product in admin |
| Mass attribute update | **Actions → Update Attributes** on a product selection |
| Full catalog push | **Stores → Configuration → Global-e → API Settings → Products Settings → Send Product Catalog via SaveProductsList API with queue** |
| Checkout | At checkout, on the cart path |

Run the full catalog push once after initial setup to backfill existing products. On large catalogs this runs through the queue and can take some time.

## Prerequisites

| Requirement | Value |
| - | - |
| Minimum module version | GE Module version 1.24.2 or later |
| Configuration | Make sure the value exists for the relevant product or child |
| Feature enablement | Confirm with your Customer Success Manager that this feature is enabled for your account |

## Delivery paths

The value reaches Global-e on two paths: the catalog sync (`SaveProductsList`) and at checkout.

## Platform notes

<Warning>
  Enter the attribute **code** in configuration, not its storefront label. Mapping `GARAN Image URL` instead of `ge_garan_image_url` is the usual reason the field is missing from the payload. Flush cache after saving the config.
</Warning>

The module forwards the attribute value exactly as entered. Use a full public `https://` URL. A relative path such as `/media/garan/x.png` will not work.

Clearing **GARAN Image URL attribute** turns the feature off. Product data is left untouched, so it can be switched back on later.

## Payload reference

For technical readers. The field name is `GaranImageURL` on catalog and at checkout. GetCart uses array name `productsList` (camelCase); product fields stay PascalCase.

**Catalog — POST /Browsing/SaveProductsList**

```json theme={null}
[
  {
    "ProductCode": "JKT-4471-BLK-M",
    "Name": "Alpine Insulated Jacket",
    "ImageURL": "https:\/\/cdn.example.com\/products\/jkt-4471-blk.jpg",
    "GaranImageURL": "https:\/\/cdn.example.com\/garan\/JKT-4471.png",
    "OriginCountryCode": "PT",
    "GenericHSCode": "620193"
  },
  {
    "ProductCode": "JKT-4471-BLK-L",
    "Name": "Alpine Insulated Jacket",
    "ImageURL": "https:\/\/cdn.example.com\/products\/jkt-4471-blk.jpg",
    "GaranImageURL": "https:\/\/cdn.example.com\/garan\/JKT-4471.png",
    "OriginCountryCode": "PT",
    "GenericHSCode": "620193"
  },
  {
    "ProductCode": "TEE-1102-WHT-L",
    "Name": "Cotton Crew Tee",
    "ImageURL": "https:\/\/cdn.example.com\/products\/tee-1102-wht.jpg",
    "GaranImageURL": null,
    "OriginCountryCode": "PT",
    "GenericHSCode": "610910"
  }
]
```

Both jacket SKUs carry the same URL because the attribute was populated on both child simples. The t-shirt has no guarantee — `GaranImageURL` is `null` and no attachment is generated for it. Omitting the property entirely has the same effect as `null`.

**Checkout cart — `productsList[]`**

```json theme={null}
{
  "productsList": [
    {
      "ProductCode": "24-MB01",
      "Name": "Joust Duffle Bag",
      "URL": "https:\/\/cdn.example.com\/products\/mb01-blue.html",
      "ImageURL": "https:\/\/cdn.example.com\/products\/mb01-blue.jpg",
      "GaranImageURL": "https:\/\/cdn.example.com\/garan\/MB01.png",
      "OrderedQuantity": 1,
      "CartItemId": "95"
    }
  ]
}
```

Do not put a GARAN URL in `ImageURL`.

## Verify

| Check | Done |
| - | - |
| `GaranImageURL` appears in a test catalog payload for a product with a populated mapped attribute | ☐ |
| `GaranImageURL` appears in GetCart `productsList[]` for a product with a populated mapped attribute | ☐ |
| A product with an empty attribute sends `GaranImageURL` as null or omits it | ☐ |
| The mapped attribute is populated on the relevant simple product or child | ☐ |

<Note>
  Activation modes and the general preparation steps — opting in, identifying qualifying products, and creating and hosting the GARAN PNG — are covered on the [EU Consumer Guarantee Information (Notice & GARAN)](/eu-consumer-guarantee-notice-and-garan) overview page.
</Note>

## FAQ

<AccordionGroup>
  <Accordion title="Do product variants each need their own URL?">
    For configurable products, set the attribute on each child simple Global-e sends. For simple products, set it on that product.
  </Accordion>

  <Accordion title="Can I use a relative path such as /media/garan/x.png?">
    No. The value is forwarded exactly as entered. Use a full `https://` URL.
  </Accordion>

  <Accordion title="Why is the value missing from my payload?">
    Most often the configuration holds the attribute **label** instead of its **code**, cache was not flushed after the config change, or the attribute is empty on that product. Check in that order.
  </Accordion>

  <Accordion title="How do I turn the feature off?">
    Clear **GARAN Image URL attribute**. Product data is left untouched.
  </Accordion>
</AccordionGroup>
