PHPackages                             shopgate/cart-integration-shopware6 - 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. shopgate/cart-integration-shopware6

ActiveShopware-platform-plugin

shopgate/cart-integration-shopware6
===================================

Shopgate Shopping App Plugin for Shopware 6

3.10.2(2mo ago)224.0k↓30.8%1proprietaryPHP

Since Jan 7Pushed 2mo ago8 watchersCompare

[ Source](https://github.com/shopgate/cart-integration-shopware6)[ Packagist](https://packagist.org/packages/shopgate/cart-integration-shopware6)[ RSS](/packages/shopgate-cart-integration-shopware6/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (8)Versions (109)Used By (0)

Shopgate Shopware6 Integration
==============================

[](#shopgate-shopware6-integration)

Install
-------

[](#install)

### Packagist install (recommended)

[](#packagist-install-recommended)

This plugin is available on `packagist.org`. To install simply add the composer package to the shopware's root composer:

```
cd [shopware6 root folder]
composer require shopgate/cart-integration-shopware6
```

Afterward just increment the plugin version inside `root/composer.json`, and run `composer update` to get the latest version.

#### Folder install

[](#folder-install)

It can be installed manually by copying the plugin folder to `custom/plugins` directory. Like so `custom/plugins/SgateShopgatePluginSW6`. Then you can install &amp; enable like any other plugin. For this install method, please make sure that there is a `vendor` directory inside the plugin folder as we have composer dependencies. You could do it yourself by running:

```
cd [plugin folder]
# this is because we do not want to install shopware core files
composer remove shopware/core
```

#### Composer symlink (development)

[](#composer-symlink-development)

Place the plugin in the `custom/plugins` folder. You can now link it to composer by running this command in the root directory:

```
cd custom/plugins
git clone git@github.com:shopgate/cart-integration-shopware6.git
cd ../..
composer require shopgate/cart-integration-shopware6
```

Enable &amp; Activate
---------------------

[](#enable--activate)

Install and activate the module:

```
cd [shopware6 root folder]
php bin/console plugin:refresh
php bin/console plugin:install -a SgateShopgatePluginSW6
```

You may install and activate via the Shopware administration panel instead, if you prefer.

### Indexing

[](#indexing)

A full re-index is required after installation or update to 3.3.0+ for product-&gt;category export to work. Can be done via Admin: `Admin > Settings > System > Cache & Indexes > Update Indexes`

Can be done via CLI:

```
bin/console dal:refresh:index
```

Can also be done with the API as well, see `tests/Postman/indexer_check.collection.json` for details

Known errors
============

[](#known-errors)

- `No SaleChannel domain exists corresponding to the SaleChannel default language` - indicates an issue when there is a default language set for a domain, but no domain URL exists that has that language. In short:
    1. go to `SalesChannels`
    2. select SaleChannel that is being queried by Shopgate API
    3. Check `General Settings` default language (e.g., English)
    4. Check `Domains` list, see that there is no domain URL with default language (e.g., English)
- `Cannot declare interface XXX, because the name is already in use` - happens after installing of our plugin via symlink. This is because there is a `vendor` directory inside our plugin folder. Either remove `vendor` directory from our plugin directory **or** do not install via symlink. These are two different ways of installing our plugin.
- `ConstraintViolationException: Caught 1 violation errors` during a `check_cart` or customer `registration`. One of the known errors is when the Shopgate App does not require the phone number to be set, but the Shopware does. So when the `check_cart` attempts to create the address a constraint violation occurs.
- Export prices are too long (e.g. `"unit_amount":2.3999999999999999`) - there is a server setting that should help narrow down prices to 3 decimals, in short try php.ini setting `serialize_precision = -1`. Link to issue on [stack](https://stackoverflow.com/questions/42981409/php7-1-json-encode-float-issue).

Configuration
=============

[](#configuration)

### Administration

[](#administration)

##### Export

[](#export)

- Flysystem - uses Flysystem to write SDK file export

#### Advanced

[](#advanced)

- Type of writing for the indexer - performant selection will be ignored if deletion is not set to "always" because the performant writer cannot handle duplicate entries in the DB. Performant should be slightly faster than the safe one.
- Type of deletion for the indexer. Always means that category/product map is generated every time a product or category gets updated or a full index is ran. The "Full" type only runs when all indexers are being indexed. None just means it never deletes mappings. Only updates them &amp; leaves mappings hanging. Can be problematic after a while as it will degrade export performance over time.

### Email template variable usage

[](#email-template-variable-usage)

For create order emails:

```
{% set shopgateOrder = order.extensions.shopgateOrder|default(false) %}

Selected shipping type:
{% if shopgateOrder %}
  {{ shopgateOrder.getShippingMethodName() }}
{% else %}
  {{ delivery.shippingMethod.translated.name }}
{% endif %}

Payment Type:
{% if shopgateOrder %}
  {{ shopgateOrder.getPaymentMethodName() }}
{% endif %}
```

### Set settings API

[](#set-settings-api)

- **server** - `live`, `pg` or `custom`
- **api\_url** - `http://my.url.com`
- **product\_types\_to\_export** - `simple,variant` (a comma separated list)

### Custom fields

[](#custom-fields)

These values can be set inside Shopgate admin panel or script to pass to Shopware &amp; will bind to the Entities. One can also pass non-existing or existing customFields to Shopware. If a Custom Set exists for an entity (e.g. Order), and it has a customField defined, it will map.

#### Customer

[](#customer)

- `title` - customer title
- `affiliate_code`
- `campaign_code`
- `account_type` - `business` or `private`
- `vat_ids` - provide a **single** VAT ID, `accountType` must be `business` for this to be set

#### Customer Address

[](#customer-address)

- `department` - department of a company
- `phone_number` - phone number can be passed via `customFields` as an alternative to `address->phone`

#### Order

[](#order)

- `affiliate_code`
- `campaign_code`
- `customer_comment` - a comment string from the customer

###  Health Score

54

—

FairBetter than 97% of packages

Maintenance86

Actively maintained with recent releases

Popularity30

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 98.2% 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 ~17 days

Recently: every ~48 days

Total

108

Last Release

71d ago

Major Versions

1.8.7 → 2.0.0-beta.32022-02-17

1.8.8 → 2.0.0-beta.112022-04-08

1.9.0 → 2.0.0-beta.122022-04-24

2.10.1 → 3.0.02023-07-06

2.10.2 → 3.1.22024-02-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/d3f2154c032da9f97644b2bc9f2a44bd62aaac17444aa759006a56d8becd63af?d=identicon)[shopgate](/maintainers/shopgate)

---

Top Contributors

[![augsteyer](https://avatars.githubusercontent.com/u/844601?v=4)](https://github.com/augsteyer "augsteyer (961 commits)")[![Stereck](https://avatars.githubusercontent.com/u/1629282?v=4)](https://github.com/Stereck "Stereck (8 commits)")[![Skistims](https://avatars.githubusercontent.com/u/31098520?v=4)](https://github.com/Skistims "Skistims (7 commits)")[![andre-kraus](https://avatars.githubusercontent.com/u/15677786?v=4)](https://github.com/andre-kraus "andre-kraus (2 commits)")[![skati-apite](https://avatars.githubusercontent.com/u/110820468?v=4)](https://github.com/skati-apite "skati-apite (1 commits)")

---

Tags

mobileapp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/shopgate-cart-integration-shopware6/health.svg)

```
[![Health](https://phpackages.com/badges/shopgate-cart-integration-shopware6/health.svg)](https://phpackages.com/packages/shopgate-cart-integration-shopware6)
```

###  Alternatives

[mobiledetect/mobiledetectlib

Mobile\_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

10.7k159.4M431](/packages/mobiledetect-mobiledetectlib)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[giggsey/libphonenumber-for-php

A library for parsing, formatting, storing and validating international phone numbers, a PHP Port of Google's libphonenumber.

5.0k148.7M416](/packages/giggsey-libphonenumber-for-php)[jenssegers/agent

Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect

4.8k67.8M440](/packages/jenssegers-agent)[giggsey/libphonenumber-for-php-lite

A lite version of giggsey/libphonenumber-for-php, which is a PHP Port of Google's libphonenumber

8912.9M47](/packages/giggsey-libphonenumber-for-php-lite)

PHPackages © 2026

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