> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrated Data Interface (IDS)

> Exchange baskets between tradesman software and the shop in both directions, including automatic login.

A tradesman puts together a quote in his software, needs material from your shop for it and has so far had to type in the item data by hand. IDS eliminates this: he switches from his software to the shop, fills the basket there and sends it back to his system. If his customer accepts the quote, he triggers the order from the same software, and the order data comes back to him.

The benefit lies in this two-way exchange. Product and order data are recorded exactly once, namely in your shop.

> [!NOTE]
>
> The TAIFUN and LABELWIN systems are supported directly. For other systems that support IDS, contact your WEBSALE representative.

## The four processes

All processes begin with the tradesman software calling the shop with parameters. The `action` parameter determines which process is meant.

### Automatic login

The software appends the tradesman's access data to the shop call.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihr-shop.de/?name_kunde=<E-Mail>&kndnr=<Kundennummer>&pw_kunde=<Passwort>
```

### Basket from the shop to the software

The software calls the shop with `action=WKE` and a return address.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihr-shop.de/?name_kunde=<E-Mail>&pw_kunde=<Passwort>&action=WKE&hookurl=<Hook-URL>
```

The tradesman places products in the basket in the shop and goes through the checkout up to the order overview. There, next to "Zahlungspflichtig bestellen", is a second button that sends the basket back to the `hookurl`.

### Basket from the software to the shop

With `action=WKS`, the software sends a basket stored in it to the shop via POST, thereby triggering an order.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihr-shop.de/?name_kunde=<E-Mail>&pw_kunde=<Passwort>&action=WKS&hookurl=<Hook-URL>&warenkorb=<XML-Warenkorbdaten>
```

> [!WARNING]
>
> The `hookurl` parameter must always be included. Without it, no transfer back is possible, and the order data does not reach the tradesman software.

### Deep link to a product

With `action=ADL`, the software links directly to a product. The access data may be included.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihr-shop.de/?name_kunde=<E-Mail>&pw_kunde=<Passwort>&action=ADL&ghnummer=<Produktnummer>
```

> [!NOTE]
>
> A detailed description of the process, including examples of the XML data, can be found in the technical interface documentation.

## Setup

### Step 1: Activation

The function must be technically activated by WEBSALE AG.

### Step 2: Create the section in the shop.config

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<IDSSchnittstelle>
   SupplierName             =
   SupplierStreet           =
   SupplierPCode            =
   SupplierCity             =
   SupplierCountry          =
   SupplierPhone            =
   SupplierEmail            =

   WriteToOrderFile         = yes
   SendVatInPercent         = yes
   RueckgabeKZ              = yes
   EncodeOrderInfo          = no
   GenerateOrderInfoIfEmpty = yes
   ResetStateAfterSend      = yes
   ClearBasket              = yes
   SurchargeAsOrderItem     = yes
</IDSSchnittstelle>
```

The `Supplier` details describe you as the supplier and are passed to the tradesman software.

| Parameter | Default | Effect of a non-default value |
| - | - | - |
| `WriteToOrderFile` | `no` | writes an `<IDS>` area into the order data |
| `SendVatInPercent` | `no` | transfers the VAT as a percentage |
| `RueckgabeKZ` | `no` | transfers whether an order has been placed |
| `EncodeOrderInfo` | `yes` | sends the order data without XML encoding |
| `GenerateOrderInfoIfEmpty` | `no` | generates missing mandatory fields itself, such as shipping method and currency |
| `ResetStateAfterSend` | `no` | resets the internal status after sending |
| `ClearBasket` | `no` | deletes the previous basket with every new request |
| `SurchargeAsOrderItem` | `no` | creates a separate item for the small-quantity surcharge |

> [!WARNING]
>
> For LABELWIN, the non-default value is mandatory for all parameters except `WriteToOrderFile` and `ResetStateAfterSend`.

Reference: Section IDSSchnittstelle

### Step 3: Define error messages

Two cases need a message: unknown product numbers from the tradesman software and an incomplete call.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   ...
   IDSNoBasketInput    = Bitte beachten Sie, dass nicht alle übergebenen Produkte in den Warenkorb übernommen werden konnten.
                         Folgende Produktnummern sind ungültig oder unbekannt: ~IDS-PRNumbers~
   IDSParameterMissing = Fehlender Parameter. Der Aufruf dieser Seite ist nur mit allen Parametern möglich.
   ...
</NotifyMessages-Txt>
```

The `IDS-PRNumbers` tag outputs all product numbers that the shop could not find.

### Step 4: Output the messages

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MSG-IDS_Notify}
   ~MSG-IDS_Notify~
{/MSG-IDS_Notify}
```

The place for this is the basket page, because that is where the tradesman notices that items are missing.

Reference: Section NotifyMessages-Txt · IDS-PRNumbers · MSG-IDS\_Notify

### Step 5: Send the basket back

There are three ways to do this. They differ in how much the tradesman has to do himself.

**Option A: a button on the order overview.** The tradesman decides for himself when to go back.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-IDSSchnittstelle}
   <a href="~WS-IDSSentBasketLink~">Warenkorb zum Handwerkersystem per IDS senden</a>
{/ST-IDSSchnittstelle}
```

**Option B: redirect after a short wait.** On the order confirmation, in the header area.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-IDSSchnittstelle}
   <meta http-equiv="refresh" content="3; URL=~WS-IDSSentBasketLink~">
{/ST-IDSSchnittstelle}
```

**Option C: automatic transmission.** Also on the order confirmation, in the body of the page.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-IDSSchnittstelle}
   ~WS-TriggerIDSSent~
{/ST-IDSSchnittstelle}
```

> [!WARNING]
>
> The `{ST-IDSSchnittstelle}` bracketing only applies if the shop was called with `action=WKE`, `WKS` or `ADL`. A visitor who calls the shop normally sees neither notices nor button. Therefore always test via a call with the `action` parameter, otherwise you will be looking for a button that is not supposed to exist in this situation.

Reference: ST-IDSSchnittstelle · WS-IDSSentBasketLink · WS-TriggerIDSSent

## Displaying the delivery address from the tradesman software

The delivery address passed by the software can be displayed, for example on the order overview.

> [!WARNING]
>
> This address is purely informative. It is included in the additional order information. Delivery is made to the default address stored in the shop.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{IDS-Delivery}
   {IDS-Delivery_name1}~IDS-Delivery_name1~{/IDS-Delivery_name1}
   {IDS-Delivery_Street}~IDS-Delivery_Street~{/IDS-Delivery_Street}
   {IDS-Delivery_PCode}~IDS-Delivery_PCode~{/IDS-Delivery_PCode}
   {IDS-Delivery_City}~IDS-Delivery_City~{/IDS-Delivery_City}
   {IDS-Delivery_Country}~IDS-Delivery_Country~{/IDS-Delivery_Country}
{/IDS-Delivery}
```

The following suffixes are available following the same pattern:

`Name1`, `Name2`, `Name3`, `Name4`, `Street`, `PCode`, `City`, `Country`, `ILN`, `Contact`, `Phone`, `Fax`, `Email`

Reference: IDS-Delivery

## Related topics

* Guide: Using the merchandise management info data interface
* Guide: Order overview and order confirmation
* Guide: Displaying the basket


## Related topics

- [IDS- (Integrated data interface)](https://dokumentation.websale.de/en/v8s/referenz/tags/ids-schnittstelle.md)
- [Using the ERP info data interface](https://dokumentation.websale.de/en/v8s/externe-dienste/wws-infodatenschnittstelle.md)
- [External services and interfaces](https://dokumentation.websale.de/en/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md)
- [Wish list, comparison, upload and external services](https://dokumentation.websale.de/en/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md)
- [External services: Overview](https://dokumentation.websale.de/en/v8s/externe-dienste/externe-dienste.md)


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