PHPackages                             ergonode/integration-shopware - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. ergonode/integration-shopware

ActiveShopware-platform-plugin

ergonode/integration-shopware
=============================

Shopware Ergonode Integration

3.0.1(1y ago)21313[6 issues](https://github.com/ergonode/integration-shopware/issues)[1 PRs](https://github.com/ergonode/integration-shopware/pulls)proprietaryPHPPHP &gt;= 8.2

Since May 26Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/ergonode/integration-shopware)[ Packagist](https://packagist.org/packages/ergonode/integration-shopware)[ RSS](/packages/ergonode-integration-shopware/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (10)Versions (228)Used By (0)

Shopware Ergonode Integration
=============================

[](#shopware-ergonode-integration)

Description
-----------

[](#description)

This plugin synchronizes data from Ergonode to Shopware. It takes advantage of Ergonode's GraphQL API and utilizes Ergonode's streams.

Key features
------------

[](#key-features)

### Category sync

[](#category-sync)

This plugin synchronizes Ergonode's categories and single category tree into Shopware. First, it looks into categoryTreeStream to see if the main tree has changed since last sync. If it did, the plugin then iterates through all category leaves using the cursor. Categories not found in Shopware are created with code as its name. Translations are not persisted at this point. Categories already existing in Shopware have their parents updated.

After it's done, or when no changes were detected, the categoryStream is fetched and category translations are persisted.

> Missing features:
>
> - Categories removed from the tree in Ergonode are not removed from Shopware
> - Category order within the tree is not synchronized into Shopware

### Product sync

[](#product-sync)

Products are synchronized using productStream. Main fields (fields that are found directly in Shopware's ProductEntity) can be configured in Settings &gt; Ergonode integration &gt; Attribute mappings. One Shopware field can be mapped to one Ergonode field and one Ergonode field can be mapped to many Shopware fields. These mappings are not required; the plugin will use Ergonode's code as product name if no such mapping is provided.

Ergonode attributes of type `select` and `multiselect` will be added as properties in Shopware after attribute sync (see below). Attributes of other type can be added as custom fields by selecting them in plugin's config page under "Ergonode attributes as custom fields".

Deleted products are also deleted in Shopware using productDeletedStream.

### Attribute sync

[](#attribute-sync)

In order for attributes of type `select` or `multiselect` to appear in Shopware as properties, first the attribute sync must be executed.

### Product cross-selling

[](#product-cross-selling)

Product cross-selling can be set up by creating product relations in Ergonode, then in plugin config selecting those fields under "Ergonode attributes as cross selling".

### Product visibility

[](#product-visibility)

Product visibility can be set up using Ergonode's segments functionality. In Shopware plugin configuration segments' API keys can be set per sales channel and product visibility per sales channel will be updated accordingly.

### Languages

[](#languages)

Ergonode languages are synchronized into Shopware.

### Executing sync and scheduling

[](#executing-sync-and-scheduling)

The synchronization process is added as a bunch of scheduled tasks which are run periodically. The process can be triggered manually in Settings &gt; Ergonode integration &gt; Synchronization. Tasks use a lock system so that only one task of given type is ran at once. These tasks utilize Ergonode's cursors where applicable, meaning that they only process changes that occurred since last sync.

### Sync history

[](#sync-history)

Synchronization history can be viewed under Settings &gt; Ergonode integration &gt; Import history.

Configuration
-------------

[](#configuration)

The minimal configuration required involves setting up plugin's configuration in Shopware. The required settings are:

- Ergonode GraphQL API endpoint (global setting)
- Ergonode API key (can be set up per sales channel)
- Code of the category tree to synchronize

Development
-----------

[](#development)

### Dev notes

[](#dev-notes)

ProductSyncProcessor might not properly handle variants that were "detached" since last sync.

When uninstalling plugin and selecting "Remove all app data permanently", all plugin tables and mappings will be removed. This means that all mappings will be lost and next synchronization will create duplicated entities.

### Testing

[](#testing)

In plugin root you can use the make commando and then the test you want to perform:

`make phpstan``make phpunit``make phpmd`

### Building ZIP

[](#building-zip)

To build Store package execute:

`make release`

NOTE: The make file is used from the plugin root.

### Cache

[](#cache)

In order to cache Ergonode GQL API requests you need to change the parameter `ergonode_integration.use_gql_cache`in `src/Resources/config/parameters.yml` to `true` and use `Ergonode\IntegrationShopware\Api\Client\ErgonodeGqlClientInterface` in your classes instead of concrete `Ergonode\IntegrationShopware\Api\Client\ErgonodeGqlClient` class. Cached client class is `Ergonode\IntegrationShopware\Api\Client\CachedErgonodeGqlClient`.

More cache config options can be found in `src/Resources/config/packages/cache.yml`.

In order to clear cache pool run `bin/console cache:pool:clear ergonode_gql_request_cache`.

Available cache pools:

- ergonode\_gql\_request\_cache
- ergonode\_attribute\_mapping\_cache

Plugin version compatibility
----------------------------

[](#plugin-version-compatibility)

ShopwarePlugin6.6 from 6.6.0.0Version 3.x6.5 from 6.5.0.0Version 2.x6.4 from 6.4.0.0Version 1.x

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance24

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity80

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 65.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~18 days

Total

38

Last Release

628d ago

Major Versions

1.1.8 → 2.2.02023-10-03

1.2.0 → 2.6.02024-01-29

1.2.2 → 2.6.42024-03-15

2.6.8 → 3.0.02024-08-21

2.7.0 → 3.0.12024-08-28

PHP version history (3 changes)1.0.0PHP &gt;= 7.4

2.0.0PHP &gt;= 8.1

3.0.0PHP &gt;= 8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/46092482?v=4)[Rafał Przędzik](/maintainers/rprzedzik)[@rprzedzik](https://github.com/rprzedzik)

---

Top Contributors

[![fkowalikv](https://avatars.githubusercontent.com/u/45207633?v=4)](https://github.com/fkowalikv "fkowalikv (351 commits)")[![mpiatek-strix](https://avatars.githubusercontent.com/u/88190201?v=4)](https://github.com/mpiatek-strix "mpiatek-strix (105 commits)")[![Strix-Tomasz](https://avatars.githubusercontent.com/u/143812971?v=4)](https://github.com/Strix-Tomasz "Strix-Tomasz (64 commits)")[![thijsMemoICT](https://avatars.githubusercontent.com/u/69138923?v=4)](https://github.com/thijsMemoICT "thijsMemoICT (12 commits)")[![strix-ladamczuk](https://avatars.githubusercontent.com/u/118906483?v=4)](https://github.com/strix-ladamczuk "strix-ladamczuk (5 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ergonode-integration-shopware/health.svg)

```
[![Health](https://phpackages.com/badges/ergonode-integration-shopware/health.svg)](https://phpackages.com/packages/ergonode-integration-shopware)
```

###  Alternatives

[shopware/production

178190.0k](/packages/shopware-production)[shopware/storefront

Storefront for Shopware

684.2M148](/packages/shopware-storefront)[kiener/mollie-payments-plugin

Mollie Payments

6257.6k](/packages/kiener-mollie-payments-plugin)[shopware/administration

Administration frontend for the Shopware Core

413.9M75](/packages/shopware-administration)[frosh/tools

Provides some basic things for managing the Shopware Installation

79709.7k2](/packages/frosh-tools)[shopware/elasticsearch

Elasticsearch for Shopware

153.6M8](/packages/shopware-elasticsearch)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
