---
title: "Academy App"
canonical_url: "https://academy.laioutr.com/en/apps/connect-jtl-wawi"
locale: en
meta:
  "og:title": "Academy App"
---

[Go to home](https://academy.laioutr.com/en)

- [Apps](https://academy.laioutr.com/en/bereiche/apps)

- [Commerce platforms](https://academy.laioutr.com/en/leitfaeden/commerce-platforms)

- [Connect JTL-Wawi](https://academy.laioutr.com/en/apps/connect-jtl-wawi)

# Connect JTL-Wawi

The JTL Platform app connects a JTL-Wawi ERP Cloud tenant to Laioutr through the native GraphQL API. It supplies items for product lists and full-text search, read-only.

## Before you start

<dl>

<dt>Plan</dt>
<dd>Any Laioutr plan plus a JTL-Wawi ERP Cloud tenant</dd>

<dt>Role</dt>
<dd>Developer role on the environment</dd>

<dt>Duration</dt>
<dd>8 min</dd></dl>

### Prerequisites

- Access to the JTL developer portal
- Tenant ID of the merchant
- items.read permission for the registered app

Last reviewed on October 15, 2026

Reads items from a JTL-Wawi ERP Cloud tenant through the native GraphQL API and supplies product lists and full-text search with name, description, manufacturer and gross price. Read-only, without cart, checkout or customer accounts.

[Developer documentation](https://docs.laioutr.com/apps/app-docs/jtl-platform)

## How it works

1. Register a cloud app and note the client credentialsWhere: JTL developer portal · Role: JTL admin · Duration: 10 min
2. Grant items.read and look up the tenant IDWhere: JTL developer portal · Role: JTL admin · Duration: 5 min
3. Install the app from the catalogueWhere: Laioutr Cockpit, Apps · Role: Developer · Duration: 2 min
4. Enter, test and save values under ConfigurationWhere: Laioutr Cockpit, Configuration · Role: Developer · Duration: 5 min
5. Deploy the environment and check data in StudioWhere: Laioutr Cockpit and Studio · Role: Developer, content manager · Duration: 10 min

## Configuration

| Field | Purpose | Where to find it | Required | Per environment |
| --- | --- | --- | --- | --- |
| `clientId` | OAuth2 client ID of the registered cloud app. | JTL developer portal. | Yes | Yes |
| `clientSecret` | OAuth2 client secret, used server-side only. | JTL developer portal. | Yes | Yes |
| `tenantId` | Tenant whose data is read, sent as X-Tenant-ID. | Merchant tenant ID in the JTL Cloud. | Yes | Yes |
| `graphqlUrl` | GraphQL endpoint, default https://api.jtl-cloud.com/erp/v2/graphql. | Only set when the tenant runs on a different host. | No | Yes |
| `tokenUrl` | OAuth2 token endpoint, default https://auth.jtl-cloud.com/oauth2/token. | Only set when the tenant runs on a different host. | No | Yes |
| `scope` | Optional OAuth2 scope. | As defined by the app registration. | No | Yes |

## Common errors

<dl>

<dt>Queries fail with 400 TenantIdMissing.</dt>
<dd>**Cause:** The tenant ID is missing.</dd>
<dd>**Fix:** Enter tenantId under Configuration, save and deploy.</dd>

<dt>Data queries fail with 403.</dt>
<dd>**Cause:** The registered app lacks the items.read permission.</dd>
<dd>**Fix:** Grant items.read in the JTL developer portal.</dd>

<dt>Studio shows sample products instead of the shop's real items.</dt>
<dd>**Cause:** No credentials are in effect, so the connector serves built-in sample data.</dd>
<dd>**Fix:** Enter client ID, client secret and tenant ID and deploy the environment.</dd>

<dt>New credentials have no effect on the storefront.</dt>
<dd>**Cause:** Saved settings only apply from the next deployment of the environment.</dd>
<dd>**Fix:** Rebuild the environment with Deploy.</dd></dl>

JTL-Wawi is a widely used inventory management system among mid-sized businesses in German-speaking markets. The **JTL Platform** app turns a JTL-Wawi ERP Cloud tenant into a data source for the Laioutr storefront. It talks to the native JTL GraphQL API and maps the items through Orchestr into the unified Laioutr product model.

The connector is a pure catalogue connector and works read-only. It supplies product lists and full-text search with name, description, short description, manufacturer and gross price. Cart, checkout, customer accounts and media library are not included; other apps in the project take on those tasks. Rendering comes from the standard Laioutr Sections.

Authentication uses OAuth2 client credentials. The client secret stays on the server and never reaches the browser. Without credentials, the connector serves built-in sample data so a storefront renders end to end even before the connection is in place.

## Step by step

1. 1 ### Step 1: Register a cloud app

   Register a cloud app in the JTL developer portal and note the client ID and client secret.
2. 2 ### Step 2: Clarify permission and tenant

   Grant the registered app the `items.read` permission and look up the merchant tenant ID.
3. 3 ### Step 3: Install the app

   In Cockpit under **Apps**, add the JTL Platform app to the project with **Install** in the **Ecommerce** tab.
4. 4 ### Step 4: Enter and test the values

   Open **Configuration** in the environment menu, enter the values, check them with **Test connection** and store them with **Save settings**.
5. 5 ### Step 5: Deploy and check

   Rebuild the environment with **Deploy**, then check in Studio that products and categories appear in the preview.

## Check the result

The connection test reports success, and product lists and search results in Studio show the merchant items from JTL-Wawi instead of the sample data.

## Frequently asked questions

Are cart and checkout available with JTL?

Not through this app. It only supplies catalogue data. Cart and checkout come from another app in the project.

Why does the preview show unfamiliar sample products?

Without credentials, the connector serves built-in sample data. Once client ID, client secret and tenant ID are saved and deployed, the merchant items appear.

Do the endpoints need to be set?

No. The default GraphQL and token addresses apply to the JTL Cloud. They are only overridden when the tenant runs on a different host.

## Related

- [Find, install and configure apps](https://academy.laioutr.com/en/artikel/find-install-and-configure-apps)6 min

  Apps are listed in the Cockpit catalogue under Apps, installed per environment and set up under Configuration. The storefront uses them from the next deployment onwards.
- [Enter credentials and test the connection](https://academy.laioutr.com/en/artikel/enter-credentials-and-test-the-connection)5 min

  App credentials are entered per environment under Configuration, checked with Test connection and stored with Save settings. They take effect with the next deployment.
- [Set up product listings with filters and sorting](https://academy.laioutr.com/en/artikel/set-up-product-listings-with-filters-and-sorting)6 min

  A product listing is built in Studio from the Product Listing Grid, the Filter Bar and the sort selector; products, filters and sort options come from the connected commerce app through Orchestr. Which filters appear depends on what the backend provides.
- [Set up search and the search results page](https://academy.laioutr.com/en/artikel/set-up-search-and-the-search-results-page)6 min

  Search consists of the search field with suggestions in the shop header and the search results page with search term, result count, filters and product grid. Suggestions and results come from the search or commerce app through Orchestr, so search quality depends on the connected search service.
- [Check live data in Studio](https://academy.laioutr.com/en/artikel/check-live-data-in-studio)5 min

  The Studio preview shows real data from connected apps. On dynamic pages such as the product detail page, the Preview Data field selects which product the preview shows.

## [Commerce platforms](https://academy.laioutr.com/en/leitfaeden/commerce-platforms)

Search this guide

1. [Connect Shopify](https://academy.laioutr.com/en/apps/connect-shopify)10 min
2. [Connect Shopware with the checkout plugin](https://academy.laioutr.com/en/apps/connect-shopware-with-the-checkout-plugin)12 min
3. [Connect VTEX](https://academy.laioutr.com/en/apps/connect-vtex)8 min
4. [Connect Sylius](https://academy.laioutr.com/en/apps/connect-sylius)8 min
5. [Connect JTL-Wawi](https://academy.laioutr.com/en/apps/connect-jtl-wawi)8 min
6. [Connect B2B Sellers for Shopware](https://academy.laioutr.com/en/apps/connect-b2b-sellers-for-shopware)8 min
7. [Connect Magento 2](https://academy.laioutr.com/en/apps/connect-magento-2)10 min In preparation

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://academy.laioutr.com/#website",
      "@type": "WebSite",
      "inLanguage": "en",
      "name": "Default",
      "url": "https://academy.laioutr.com/",
      "translationOfWork": {
        "@id": "https://academy.laioutr.com/#website"
      }
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#webpage",
      "name": "Academy App",
      "url": "https://academy.laioutr.com/en/apps/connect-jtl-wawi",
      "@type": [
        "WebPage",
        "FAQPage"
      ],
      "breadcrumb": {
        "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#breadcrumb"
      },
      "isPartOf": {
        "@id": "https://academy.laioutr.com/#website"
      },
      "mainEntity": [
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/1"
        },
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/2"
        },
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/3"
        }
      ],
      "potentialAction": [
        {
          "@type": "ReadAction",
          "target": [
            "https://academy.laioutr.com/en/apps/connect-jtl-wawi"
          ]
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#breadcrumb",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "name": "Home",
          "item": "https://academy.laioutr.com/en",
          "position": 1
        },
        {
          "@type": "ListItem",
          "name": "Apps",
          "item": "https://academy.laioutr.com/en/bereiche/apps",
          "position": 2
        },
        {
          "@type": "ListItem",
          "name": "Commerce platforms",
          "item": "https://academy.laioutr.com/en/leitfaeden/commerce-platforms",
          "position": 3
        },
        {
          "@type": "ListItem",
          "name": "Connect JTL-Wawi",
          "item": "https://academy.laioutr.com/en/apps/connect-jtl-wawi",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/1",
      "@type": "Question",
      "inLanguage": "en",
      "name": "Are cart and checkout available with JTL?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Not through this app. It only supplies catalogue data. Cart and checkout come from another app in the project.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/2",
      "@type": "Question",
      "inLanguage": "en",
      "name": "Why does the preview show unfamiliar sample products?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Without credentials, the connector serves built-in sample data. Once client ID, client secret and tenant ID are saved and deployed, the merchant items appear.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-jtl-wawi#/schema/question/3",
      "@type": "Question",
      "inLanguage": "en",
      "name": "Do the endpoints need to be set?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>No. The default GraphQL and token addresses apply to the JTL Cloud. They are only overridden when the tenant runs on a different host.</p>"
      }
    }
  ]
}
```
