---
title: "Academy App"
canonical_url: "https://academy.laioutr.com/en/apps/connect-sylius"
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 Sylius](https://academy.laioutr.com/en/apps/connect-sylius)

# Connect Sylius

The Sylius app connects a Sylius store to Laioutr through Shop API v2. It reads products, variants, categories and menus and manages cart line items.

## Before you start

<dl>

<dt>Plan</dt>
<dd>Any Laioutr plan plus a Sylius instance from 1.13</dd>

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

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

### Prerequisites

- Reachable Sylius Shop API v2
- Channel with locale, currency and hostname
- Taxon as menu root

Last reviewed on October 15, 2026

Connects Sylius through Shop API v2: reads products, variants, categories from taxons, menu and breadcrumbs, and adds, changes and removes cart line items. Checkout and customer login are not in scope.

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

## How it works

1. Check channel, catalogue and slugsWhere: Sylius admin · Role: Shop admin · Duration: 15 min
2. Create a taxon as menu rootWhere: Sylius admin · Role: Shop admin · Duration: 5 min
3. Define the image filter in the Sylius configurationWhere: Sylius configuration · Role: Sylius developer · Duration: 10 min
4. Install the app from the catalogueWhere: Laioutr Cockpit, Apps · Role: Developer · Duration: 2 min
5. Enter, test and save values under ConfigurationWhere: Laioutr Cockpit, Configuration · Role: Developer · Duration: 5 min
6. 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 |
| --- | --- | --- | --- | --- |
| `apiURL` | Base URL of the Sylius Shop API v2. | Address of the Sylius instance with the path /api/v2/shop. | Yes | Yes |
| `defaultLocale` | Fallback locale when no locale comes from the market. Default en\_US. | Locale code from the Sylius channel. | No | Yes |
| `imageFilter` | Image filter Sylius applies before delivery. Default sylius\_large. | Name of a LiipImagine filter defined in Sylius. | No | Yes |
| `itemsPerPage` | Default number of products per page in lists. Default 20. | Project decision. | No | Yes |

## Common errors

<dl>

<dt>The menu stays empty.</dt>
<dd>**Cause:** The menu alias does not match the code of the root taxon.</dd>
<dd>**Fix:** Set the taxon code, for example MENU_CATEGORY, as the alias.</dd>

<dt>Product images are missing or the wrong size.</dt>
<dd>**Cause:** The image filter in imageFilter is not defined in Sylius.</dd>
<dd>**Fix:** Define the filter in Sylius or use the default sylius_large.</dd>

<dt>Product or category pages are not found.</dt>
<dd>**Cause:** Slugs are not translated for the locale or products are not assigned to the channel.</dd>
<dd>**Fix:** Translate the slugs and assign products to the channel.</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>

Sylius is an open-source commerce platform built on Symfony. The Sylius app talks to the **Shop API v2** and maps its data through Orchestr into the unified Laioutr data model. It reads products and variants for product lists and product detail pages, categories from taxons, the menu and breadcrumbs. On the write side, the app manages cart line items: add, change quantity, remove.

The scope is deliberately lean. Checkout, customer login, addresses, payment and shipping are not part of the app; checkout is solved separately in the project. The app only calls the Shop API, never the Admin API.

On the Sylius side, it needs a channel with locale, currency and hostname, products with taxons, prices, images and translated slugs, a taxon as menu root and an image filter that returns ready-made image URLs.

## Step by step

1. 1 ### Step 1: Check channel and catalogue

   In the Sylius admin, check that the channel has locale, currency and hostname and that products with taxons, prices, images and translated slugs are assigned to it.
2. 2 ### Step 2: Create the menu root

   Create a taxon as menu root, for example with the code `MENU_CATEGORY`. This code later serves as the menu alias.
3. 3 ### Step 3: Install the app

   In Cockpit under **Apps**, add the Sylius 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, the menu shows the categories below the root taxon, the product detail page in Studio shows variants and images, and a test item can be added to the cart.

## Frequently asked questions

Is there a checkout with Sylius?

Not in this app. It only manages cart line items; checkout is solved separately in the project.

Where does the menu come from?

From the taxon tree below the root taxon. Its code, for example `MENU_CATEGORY`, is used as the menu alias.

How large are the product images?

Sylius delivers images through an image filter, `sylius_large` by default. The `imageFilter` field selects another filter, which must be defined in Sylius.

## 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.
- [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.
- [Set up shop navigation and footer](https://academy.laioutr.com/en/artikel/set-up-shop-navigation-and-footer)10 min

  Header Shop, Mega Menu or Menu Side by Side, Top Bar and Footer form the navigation of a storefront and are usually maintained as global sections. In Studio, menu items, search, service links, contact details and footer columns are set up once and adapted per language.
- [Set up and check the storefront cart](https://academy.laioutr.com/en/artikel/check-and-set-up-the-storefront-cart)5 min

  The cart opens as a side panel (Cart Sheet) with line items, a coupon field, progress towards free delivery and totals; there is also a separate cart page. Prices, discounts, shipping costs and the path to checkout come from the commerce backend.

## [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-sylius#webpage",
      "name": "Academy App",
      "url": "https://academy.laioutr.com/en/apps/connect-sylius",
      "@type": [
        "WebPage",
        "FAQPage"
      ],
      "breadcrumb": {
        "@id": "https://academy.laioutr.com/en/apps/connect-sylius#breadcrumb"
      },
      "isPartOf": {
        "@id": "https://academy.laioutr.com/#website"
      },
      "mainEntity": [
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/1"
        },
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/2"
        },
        {
          "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/3"
        }
      ],
      "potentialAction": [
        {
          "@type": "ReadAction",
          "target": [
            "https://academy.laioutr.com/en/apps/connect-sylius"
          ]
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-sylius#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 Sylius",
          "item": "https://academy.laioutr.com/en/apps/connect-sylius",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/1",
      "@type": "Question",
      "inLanguage": "en",
      "name": "Is there a checkout with Sylius?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Not in this app. It only manages cart line items; checkout is solved separately in the project.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/2",
      "@type": "Question",
      "inLanguage": "en",
      "name": "Where does the menu come from?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>From the taxon tree below the root taxon. Its code, for example <code>MENU_CATEGORY</code>, is used as the menu alias.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/en/apps/connect-sylius#/schema/question/3",
      "@type": "Question",
      "inLanguage": "en",
      "name": "How large are the product images?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Sylius delivers images through an image filter, <code>sylius_large</code> by default. The <code>imageFilter</code> field selects another filter, which must be defined in Sylius.</p>"
      }
    }
  ]
}
```
