> For the complete documentation index, see [llms.txt](https://docs.solutioo.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solutioo.de/shopware/shopware6_en_us/data-from-shopware-download-and-matching/product-matching-by-sku-and-web-id.md).

# Product Matching by SKU & Web-ID

To prevent an item from being created twice in Shopware, the connector checks before the upload whether the product already exists there. This check is based on the **item number**, which corresponds to the **`productNumber` (SKU)** in Shopware.

**How the matching works**

```mermaid
flowchart TD
    A[Item upload] --> B{Web-ID available?}
    B -->|yes| C[Update via PATCH]
    B -->|no| D[Search in Shopware: productNumber = item no.]
    D -->|exactly 1 match| E[Shopware ID is adopted as the Web-ID]
    D -->|no match| F[Create new via POST]
    E --> C
```

* If the item has **no Web-ID**, the connector searches Shopware for a product with **`productNumber` = item number** (SKU). Technically, this is done through the `search/product` endpoint with a filter on the `productNumber` field.
* If a match is found, its **Shopware ID is adopted as the Web-ID** – the item then counts as linked.
* Updates are then carried out via **PATCH** instead of creating a new record. This prevents duplicates.

{% hint style="info" %}
This requires the **item number in BC** to match the **SKU/productNumber in Shopware**. Make sure the numbers are consistent.
{% endhint %}

**Special cases**

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>No match</strong></td><td>No product with this SKU exists – the item is created as a new product.</td></tr><tr><td><strong>Differing SKU</strong></td><td>The numbers do not match – a duplicate is created. Align the numbers and match again.</td></tr><tr><td><strong>Already linked</strong></td><td>The Web-ID is set – matching is skipped and an update follows directly.</td></tr></tbody></table>

**Resetting the Web-ID**

If you want to remove the link (for example, when switching shops), reset the Web-IDs using the corresponding reset functions. See [Clean Restart via Reset](/shopware/shopware6_en_us/onboarding-and-best-practices/clean-restart-via-reset.md).

**Comprehensive data import**

If **images, attributes, categories, and variants** are also to be imported from Shopware, read the following:

* [Item Matching & Data Import from Shopware](/shopware/shopware6_en_us/master-data-management/item-matching-and-data-import-from-shopware.md)
* [Match Attributes & Properties (Property Groups)](/shopware/shopware6_en_us/data-from-shopware-download-and-matching/match-attributes-and-properties-property-groups.md)
* [Match Variants (Color & Size)](/shopware/shopware6_en_us/data-from-shopware-download-and-matching/match-variants-color-and-size.md)
* [Retrieve Product Images & Media Info](/shopware/shopware6_en_us/data-from-shopware-download-and-matching/retrieve-product-images-and-media-info.md)

### Frequently Asked Questions

#### Which key is used for matching between Business Central and Shopware?

The primary matching key is the item number: it is written to Shopware as the `productNumber` (SKU). Secondarily, the "SOUSHW Web ID" (Shopware product UUID) is used to create a unique link. If the Web-ID is filled in, the connector updates the product via PATCH on `product/{id}`; if it is empty, a new product is created via POST.

#### How does the connector avoid duplicate products when creating new ones?

Before creating a new product (Web-ID empty), the connector uses `search/product` with the filter `field=productNumber`, `value={Artikelnr.}`, `type=equalsAll` to look for an existing product with the same SKU. If one is found, it is removed and then created again cleanly – so no duplicates arise. Spaces in the SKU are encoded as `%20` by `EncodeSKU`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.solutioo.de/shopware/shopware6_en_us/data-from-shopware-download-and-matching/product-matching-by-sku-and-web-id.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
