> ## 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.

# WooCommerce

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

## One-time setup

1. In **Products → Attributes**, create an attribute to hold the GARAN URL. Use slug `garan-image-url` (the name can be something like `GARAN Image URL`).
2. Go to **WooCommerce → Settings → Integrations → Global-e Cross-Border Integration**.
3. In **GARAN image URL attribute**, enter `garan-image-url`.
4. Leave **Enable save product list** switched on if you want the catalog path. If it is off, only the cart path will carry the value.

## Per product

Set the attribute value to the full HTTPS URL of that product's GARAN PNG. Leave it empty for products with no guarantee.

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

For variable products, see [Platform notes](/eu-consumer-guarantee-setup-woocommerce#platform-notes) — variations do not inherit the parent value by default.

## When the value syncs

The catalog path picks the value up when the product is saved or updated, if **Enable save product list** is on. Saving or updating a variable product also sends its variations. The cart path reads the attribute when the shopper checks out.

## Prerequisites

| Requirement            | Value                                                                                    |
| ---------------------- | ---------------------------------------------------------------------------------------- |
| Minimum plugin version | Global-e Cross-Border for WooCommerce 1.17.0 or later                                    |
| Catalog path toggle    | **Enable save product list** must be on to use the Catalog path                          |
| Attribute mapping      | **GARAN image URL attribute** must be set to `garan-image-url`                           |
| 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 (SendCart).

## Platform notes

<Warning>
  The value must live on a WooCommerce **product attribute** with slug `garan-image-url`. A plain custom field or post meta key will not be read.
</Warning>

For variable products, each variation is sent as its own row and reads its own attribute value first. A variation with an empty value falls back to the parent product **only** when **Variation inherit parent attributes** is enabled in the Global-e integration settings. That setting is off by default, so unless you turn it on, set the attribute on every variation you want covered.

## Payload reference

For technical readers. The field name is `GaranImageURL` on both the catalog and cart contracts, with no per-path variation.

**Catalog — POST /Browsing/SaveProductsList**

```json theme={null}
[
  {
    "ProductCode": "JKT-4471-BLK-M",
    "ProductGroupCode": "JKT-4471",
    "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"
  }
]
```

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`.

**Cart — SendCartData.Products\[]**

```json theme={null}
{
  "Products": [
    {
      "ProductCode": "JKT-4471-BLK-M",
      "CartItemId": "1057",
      "Name": "Alpine Insulated Jacket",
      "OrderedQuantity": 1,
      "ImageURL": "https:\/\/cdn.example.com\/products\/jkt-4471-blk.jpg",
      "GaranImageURL": "https:\/\/cdn.example.com\/garan\/JKT-4471.png",
      "GenericHSCode": "620193"
    }
  ]
}
```

## Verify

| Check                                                                                      | Done |
| ------------------------------------------------------------------------------------------ | ---- |
| `GaranImageURL` appears in a test catalog payload for a product with a populated attribute | ☐    |
| `GaranImageURL` appears in the cart payload for that product at checkout                   | ☐    |
| A product with an empty attribute sends `GaranImageURL` as null or omits it                | ☐    |
| Each variation of a variable product carries the URL you expect                            | ☐    |

<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?">
    By default yes — set the attribute on each variation. If you enable **Variation inherit parent attributes**, variations with no value of their own will use the parent product's URL instead.
  </Accordion>

  <Accordion title="Can I use a custom field instead of an attribute?">
    No. The plugin reads the WooCommerce product attribute with slug `garan-image-url` only.
  </Accordion>
</AccordionGroup>
