# shoppingfeed/magento2-manager

> Official module for Shopping Feed integration.

`composer require shoppingfeed/magento2-manager`

Canonical URL: https://packagento.com/shoppingfeed/magento2-manager

## At a glance

- **Vendor**: shoppingfeed (https://packagento.com/shoppingfeed.md)
- **Latest version**: 1.19.0 — released 2026-06-15
- **Pricing**: Free
- **Package type**: Magento 2 module
- **Status**: active, accepting new buyers

## Installation

Packagento is licence-gated, so even free packages need a licence on a project before Composer can resolve them.

1. **Sign in or create an account** at https://packagento.com/customer/account/.

2. **Add the package to your account.** Open https://packagento.com/shoppingfeed/magento2-manager and complete the free checkout. A licence is minted automatically.

3. **Create or pick a project, then activate the licence on it.**
   - Projects represent the Magento installs you deploy to. Manage them at https://packagento.com/projects/.
   - Activate the new licence on the project you'll deploy this package to. Activation is what generates the Composer credentials scoped to that project.

4. **Add the project credentials to your Magento codebase.**

   Grab the project's public + private key from https://packagento.com/projects/ (open the project, then its Credentials tab), and add them to `auth.json`:

   ```json
   {
     "http-basic": {
       "packagento.com": {
         "username": "ppk_live_...",
         "password": "psk_live_..."
       }
     }
   }
   ```

   Add the Packagento Composer repository to `composer.json`:

   ```json
   {
     "repositories": [
       { "type": "composer", "url": "https://packagento.com" }
     ]
   }
   ```

5. **Install and apply.**

   ```bash
   composer require shoppingfeed/magento2-manager:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

Official module for Shopping Feed integration.

## README

### Installation

The extension must be installed via `composer`. To proceed, run these commands in your terminal:

```
composer require shoppingfeed/magento2-manager
php bin/magento module:enable ShoppingFeed_Manager
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
```

### Update

To update the extension to the latest available version (depending on your `composer.json`), run these commands in your terminal:

```
composer update shoppingfeed/magento2-manager --with-dependencies
php bin/magento setup:di:compile
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```

##### What to do when the module does not get updated

Sometimes, running `composer update` does not actually update the module to the desired version, for example because it does not match the [version constraints](https://getcomposer.org/doc/articles/versions.md#versions-and-constraints) specified in your `composer.json` (run this command to know the exact reason why: `composer prohibits shoppingfeed/magento2-manager`).

When this happens, simply adapt your `composer.json` to point to the new version you want to install, before re-running the update commands (and if that would still not be sufficient, do not hesitate to [post an issue](https://github.com/shoppingflux/module-magento2/issues/new) so that we can have a look at it).

### Maintenance mode

You may want to enable the maintenance mode when installing or updating the module, __especially when working on a production website__. To do so, run the two commands below before and after running the other setup commands:

```
php bin/magento maintenance:enable
## Other setup commands
php bin/magento maintenance:disable
```

### Compatibility

| Branch  | Magento versions  |
| ------- | ----------------- |
| `1.x`   | **>=** `2.3.x`    |
| `0.x`   | **>=** `2.1.x`    |

## Changelog

### [1.19.0] - 2026-06-15
#### Added
- Handle new `taxMode` field when importing marketplace orders
- Implement workarounds for the new address field validation behaviors

### [1.18.0] - 2026-05-05
#### Changed
- Improve synchronization of order ticket statuses

### [1.17.1] - 2026-03-16
#### Fixed
- Fix implicit conversion error when importing bundle items
- Fix syncing of partial shipments

### [1.17.0] - 2026-03-06
#### Added
- Implement compatibility with the `Fooman_PdfCustomiser` module for invoice PDF synchronisation

### [1.16.0] - 2026-02-24
#### Changed
- Optimize execution context for order import observers and plugins

#### Fixed
- Fix deactivation of required item options check when importing orders

### [1.15.0] - 2026-01-28
#### Added
- Implement a command to allow refreshing of exported product data only
- Implement handling of new `province` order address field
- Implement custom order statuses
- Implement (optional) syncing of partial shipments

#### Changed
- Force loading of products when refreshing price data

#### Fixed
- Fix export of short description if description is missing
- Handle the case of multiple options within single-option attributes

### [1.14.0] - 2025-08-05
#### Changed
- Improve the use of attributes for exporting product categories

#### Fixed
- Fix M2 setup when the module is already installed

### [1.13.1] - 2025-07-17
#### Fixed
- Fix compatibility with PHP 8.4

### [1.13.0] - 2025-07-16
#### Changed
- Optimize performance of the sales order listing

#### Fixed
- Fix compatibility with Magento 2.4.8
- Fix handling of discounts when the base and order currencies differ
- Fix recurring upgrade of account configurations

### [1.12.0] - 2025-06-05
#### Added
- Add new "Update Token" account action
- Implement invoice PDF and order delivery synchronization

### [1.11.1] - 2025-04-01
#### Fixed
- Fix compatibility with older Magento versions

### [1.11.0] - 2025-03-26
#### Added
- Implement compatibility with remote media storage
- Add `child_export_state` filter to CLI feed commands
- Allow customization of batch size for feed data updates
- Add an option to (not) disable tax for business orders
- Show `customized_url` marketplace item field on order view

#### Changed
- Optimize redundant filters when refreshing feed data

### [1.10.0] - 2025-01-29
#### Added
- Add option to disable country validation when importing orders
- Import item marketplace fields to order item options

### [1.9.1] - 2024-12-05
#### Fixed
- Fix potential issue with feed export in multi-account configurations

### [1.9.0] - 2024-11-13
#### Changed
- Allow customizing the mapping of Spain regions using DI
- Allow 3rd party plugins to choose which store view to import orders into

### [1.8.2] - 2024-07-15
#### Changed
- Improve multi-store notification on the account import form

#### Fixed
- Improve handling of marketplace order discounts

### [1.8.1] - 2024-07-14
#### Fixed
- Fix validation of sales rules on older Magento versions

### [1.8.0] - 2024-07-03
#### Added
- Implement new command to export feeds without refresh using cron tasks
- Implement support for marketplace cart discounts

#### Changed
- Rework account and store management
- Optimize refreshable feed data prioritization

### [1.7.2] - 2024-05-13
#### Added
- Allow exporting the `url_key` attribute in the feeds

#### Changed
- Change the format of the `platform` metadata in the feeds

### [1.7.1] - 2024-04-22
#### Fixed
- Prevent rare problems with options-based columns in the feed product listing
- Fix action drop-down overflow in listings
- Fill the "Company" field with a default value if required but missing
- Prevent old customer addresses from being validated

### [1.7.0] - 2023-12-19
#### Added
- Import relay point IDs from the new API field

#### Fixed
- Fix result of CLI commands with Magento **2.4.6** 

### [1.6.4] - 2023-12-06
#### Fixed
- Fix saving of empty forced category from the product page

_(Changelog truncated for .md surface. Full history on https://packagento.com/shoppingfeed/magento2-manager.)_

## Recent Versions

| Version | Released |
|---|---|
| 1.19.0 | 2026-06-15 |
| 1.18.0 | 2026-05-05 |
| 1.17.1 | 2026-03-16 |
| 1.17.0 | 2026-03-06 |
| 1.16.0 | 2026-02-24 |
| 1.15.0 | 2026-01-28 |
| 1.14.0 | 2025-08-05 |
| 1.13.1 | 2025-07-17 |
| 1.13.0 | 2025-07-16 |
| 1.12.0 | 2025-06-05 |

Showing 10 of 125 versions. Full release history on https://packagento.com/shoppingfeed/magento2-manager.

## Dependencies

### Require

| Package | Constraint |
|---|---|
| guzzlehttp/guzzle | ^6.3 \| ^7.0 |
| shoppingfeed/php-feed-generator | ^1.2 |
| shoppingfeed/php-sdk | ^0.13.0 |

## Quality

Latest release (1.19.0) fails the Packagento QA pipeline. Verdicts below are per-cell (Magento line × PHP version) for the matrixed tools, and run-once for the static / security tiers.


### Compatibility

Each Magento line is installed on its supported PHP versions, then the module is built (DI compile + static-content deploy). Cells show passed / failed / untested; staircase gaps render as `–`.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | Pass | Pass | – | – |
| 2.4.8 | – | Pass | Pass | – |
| 2.4.9 | – | – | 1 | 1 |


### Code Quality

Advisory checks against the module's source. Never affect the Compatibility verdict — a phpcs finding can't make a module incompatible.

#### Static Analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Warning | 1071 | 1071 warnings (ruleset: Magento2) — 178 auto-fixable with phpcbf |
| PHPMD | Warning | 386 | 386 rule violations (IfStatementAssignment:118, UnusedFormalParameter:91, MissingImport:43, CyclomaticComplexity:32, ExcessiveMethodLength:23) |
| Cpd | Warning | 3 | 3 duplicated chunks spanning 114 total lines (min-lines=5, min-tokens=70) |
| Composer validate | Info | 1 | valid; 1 advisory note (composer validate --strict) |

#### PHPStan

Type-checks the module against a real Magento install. Re-runs per Magento + PHP version because resolvable symbols differ between releases.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | 259 | 259 | – | – |
| 2.4.8 | – | 254 | 254 | – |
| 2.4.9 | – | – | 250 | 252 |


### Tests

Unit and integration suites run per Magento + PHP cell. Test failures speak to the module's behaviour, not its compatibility with a line, so they're reported here separately.

#### Unit Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |

#### Integration Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |


### Security

Dependency-advisory audit (composer audit) plus a source malware scan. A malware detection fails the version outright.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| Composer audit | Pass | 0 |  |
| Malware scan | Pass | 0 |  |

## Licence and pricing

Free. A licence is still minted on checkout and bound to your project for Composer access — no payment step.

Refundable within 14 days of first purchase via https://packagento.com/account/refunds/.

## Install via Claude Code or any MCP client

The Packagento MCP server can run the licence + project + Composer steps above in one tool call:

```
purchase_and_install_packages(
  composer_names=["shoppingfeed/magento2-manager"],
  project_id="proj_xxx"
)
```

This handles cart, checkout, licence minting, project activation, and writes auth.json credentials. Connect a client with `claude mcp add packagento https://mcp.packagento.com`. Full setup at https://packagento.com/docs/mcp-setup.

## Vendor

shoppingfeed is a Magento 2 vendor on Packagento. See https://packagento.com/shoppingfeed.md for their full catalogue.

