Outlet Module for Magento 2 - Sale Automation

€71.24 €57.92
COMPOSER Installation
M2-OUTLET
PayPal PayPal
Przelew Przelew

Magento Modules: Clear Guidelines

You purchase the module once, with no domain restrictions

Tooltip

Free installation and updates via Composer

Tooltip

Affiliate Program

Tooltip

Technical support for Magento

Tooltip

Clear guidelines for licensing Magento modules

Tooltip

Magento Module Code Security

Tooltip

Kowal Outlet Products is a module for Magento 2 that automates the handling of outlet products, sale items, and end-of-line inventory. The solution helps keep the catalog organized, assign products to the OUTLET category, mark them with a dedicated attribute, and remove them from the outlet when they should no longer be visible as a sale offer.

The module was designed for stores where outlet products change dynamically: some are individual simple products, some are variants of configurable products, and some require support for multiple stores, multiple websites, and different pricing configurations.

Key business value

In standard Magento, managing an outlet section often requires manually monitoring several elements at once: categories, product status, special price, inventory levels, configurable variants, and cache. With a larger catalog, it is easy to end up in a situation where a product still appears in OUTLET despite being sold out, the parent of a configurable product remains in the category without active variants, or the special price is restored in a way that does not match the store configuration.

Kowal Outlet Products streamlines this process. The administrator can add a list of SKUs to the outlet, and the module takes care of assigning them to the correct categories, setting the OUTLET attribute, handling configurable parent products, and later automatically detaching products after the sale ends.

Key features

  • bulk import of products to OUTLET by SKU list,
  • assignment of products to one or more outlet categories,
  • support for simple products and configurable product variants,
  • automatic product marking with the sale attribute,
  • assignment of configurable parent products to OUTLET when their variants are outlet products,
  • automatic detachment of products from the OUTLET category after they are sold out or when the outlet status is disabled,
  • detachment of the configurable parent when none of its variants is an OUTLET product anymore,
  • cyclic product checks via cron,
  • manual recalculation from the Magento console,
  • refreshing indexes and cache for products and categories,
  • support for stock and backorders after the sale ends,
  • backup and restoration of special prices,
  • support for multistore configuration and website scope for prices,
  • OUTLET labels next to variant swatches on the product page.

How the OUTLET process works

The administrator selects outlet categories in the module configuration. Then, from the admin panel, they can paste a list of SKUs and add products to the sale. The module assigns products to the OUTLET category and sets the sale attribute.

For configurable products, the module works on two levels. If a variant is an outlet product, the configurable parent can also be added to the OUTLET category so the customer can see the product in the listing. When the variant is sold out or no longer has OUTLET status, the module verifies whether the parent still has any active outlet variants. If not, the parent is detached from OUTLET.

The module cron regularly checks product status. When a product can no longer be sold, the module removes it from outlet categories, changes its outlet status, and refreshes data in indexes and cache. As a result, the OUTLET category listing stays up to date without manual work from the administrator.

Special price handling

The module can protect special prices from being lost during the OUTLET cycle. When a product is added to the outlet, the current special price is copied to technical attributes. After the outlet ends, the price can be restored or cleared, depending on the configuration.

The backup includes:

  • special_price,
  • special_from_date,
  • special_to_date.

The module respects Magento price scope. If prices are global, it operates at the global level. If prices are set per website, the module saves and restores values according to the default store views of the websites. It does not perform currency conversions because Magento stores prices as base values for a given scope, while store currencies are converted by Magento mechanisms.

Multistore and multi-currency support

Kowal Outlet Products can work in Magento installations with multiple store views and websites. During import, the administrator can specify the websites to which the product should be assigned. The module configuration is available at the default, website, and store levels, making it possible to adapt its behavior to the store structure.

For special prices, the module does not multiply or convert values between currencies. It preserves the amounts saved in Magento for the appropriate price scope. This helps avoid errors caused by manual exchange-rate calculations and leaves currency presentation to standard Magento mechanisms.

Use case example

A store sells clothing and has an OUTLET category where it displays the last units of products from previous collections. The administrator receives a list of variant SKUs that should be added to the sale, for example:

TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42

After pasting the list into the import panel, the module:

  • sets the products as OUTLET,
  • assigns them to the OUTLET category,
  • assigns configurable parent products if their variants are outlet products,
  • saves a copy of the current special prices,
  • optionally updates stock settings,
  • refreshes indexes and cache.

The customer sees the products in the OUTLET category and labels next to variants. When the last unit of a variant is sold, the module cron detects that the product is no longer salable, removes it from OUTLET, and refreshes the listing. If it was the last outlet variant of the given configurable product, the parent is also removed from the OUTLET category.

Who this module is for

The module is designed for Magento 2 stores that:

  • run a permanent OUTLET or SALE section,
  • often work with end-of-line inventory,
  • have configurable products with variants that have different sale statuses,
  • want to reduce manual work when updating categories,
  • need control over special prices in a multistore environment,
  • want to avoid outdated products in category listings.

Technical elements

  • Composer package name: kowal/module-outletproducts
  • Magento module name: Kowal_OutletProducts
  • CLI command: bin/magento kowal_outletproducts:generate
  • Configuration panel: Stores > Configuration > kowal > OUTLET Products
  • Import panel: kowal > Upload Outlet Products
  • Main product attributes: sale, special_price_copy, special_from_date_copy, special_to_date_copy, special_price_copy_active

Implementation result

After the module is implemented, the store gains a consistent outlet management process: products are assigned to the correct categories, variants and parent products are maintained logically, special prices are protected, and catalog data is refreshed after changes. This allows administrators to focus on selecting products for the sale instead of manually cleaning up categories and cache.

Installation and configuration of the Kowal Outlet Products module

Basic information

  • Composer package: kowal/module-outletproducts
  • Magento module: Kowal_OutletProducts
  • Required application type: Magento 2
  • Package dependency: kowal/base
  • Module CLI command: bin/magento kowal_outletproducts:generate

Installation via Composer

Add the module repository:

composer config repositories.module.outlet.products vcs https://github.com/kowalco/magento-2-outlet-products

If the repository is private, configure an access token:

composer config --auth github-oauth.github.com 

Install the module:

composer require kowal/module-outletproducts

Enable the module:

php bin/magento module:enable Kowal_OutletProducts

Run the database update:

php bin/magento setup:upgrade

In a production environment, run DI compilation and static content deployment according to the store deployment process:

php bin/magento setup:di:compilephp bin/magento setup:static-content:deploy

Clear the cache:

php bin/magento cache:flush

Updating an existing installation

After updating the module, run:

composer update kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flush

If the store runs in production mode, also perform the standard deployment steps:

php bin/magento setup:di:compilephp bin/magento setup:static-content:deploy

setup:upgrade is required because the module adds and updates product attributes used to handle OUTLET and special price copies.

Product attributes

The module adds or uses the following attributes:

AttributeMeaning
saleMarks the product as OUTLET.
special_price_copyA copy of the special_price value from before the product entered OUTLET.
special_from_date_copyA copy of the special_from_date date.
special_to_date_copyA copy of the special_to_date date.
special_price_copy_activeA marker indicating that the special price copy has been created.

Configuration in the admin panel

Go to:

Stores > Configuration > kowal > OUTLET Products

Available options:

OptionDescription
Włącz moduł OutletEnables or disables the module.
Usuń ceny specjalne dla produktów po wyprzedażyDefines whether the special price should be cleared after OUTLET ends. If the option is disabled, the module will restore the price from the copy.
Kategorie outletoweA list of categories to which OUTLET products are assigned and from which they are later automatically removed.
Wyłącz zarządzanie stanem magazynowym po wyprzedażyAllows manage_stock to be disabled after the sale ends.
Włącz backorder po zakończeniu wyprzedaży outletowejAllows backorder to be enabled and the product to be marked as available after the outlet sale ends.

Configuration is available at the default, website, and store levels. OUTLET categories used by cron are taken from the default configuration.

OUTLET category configuration

  1. Create a category or categories in Magento intended for the outlet.
  2. Make sure the categories are active and visible in the menu or listing if they should be available to customers.
  3. In the module configuration, select all outlet categories in the Kategorie outletowe field.
  4. Save the configuration.
  5. Clear the Magento cache.
php bin/magento cache:flush

Importing products to OUTLET

Go to the panel:

kowal > Upload Outlet Products

In the form:

  1. Paste the SKU list, one SKU per line.
  2. Select the OUTLET categories.
  3. Optionally select the websites to which the product should be assigned.
  4. Choose whether the module should enable inventory management for the imported products.
  5. Click Importuj.

Example SKU list:

TSHIRT-BLACK-MTSHIRT-BLACK-LJACKET-NAVY-XLSHOES-WHITE-42

During import, the module:

  • assigns products to the OUTLET category,
  • sets the sale attribute,
  • updates configurable parent products,
  • creates a copy of the special price and promotion dates,
  • updates stock according to the selected option,
  • refreshes indexes and cache for products and categories.

Configurable product support

If the imported product is a variant of a configurable product, the module finds the parent and assigns it to the OUTLET category. As a result, the configurable product appears in the category listing, and the customer can select the outlet variant.

During cyclic recalculation, the module checks whether the parent still has active OUTLET variants. If not, the parent is detached from the OUTLET category.

Special price handling

When importing to OUTLET, the module saves a copy of:

  • special_price,
  • special_from_date,
  • special_to_date.

The copy is saved according to the scope of the special price attribute in Magento:

  • for global prices: at the global level,
  • for prices per website: at the level of the default store view of each website,
  • for prices per store: at the store view level.

The module does not convert currencies. Magento stores prices as base values for the appropriate scope, while currency presentation on the frontend remains handled by standard Magento mechanisms.

Behavior after OUTLET ends depends on the Usuń ceny specjalne dla produktów po wyprzedaży option:

  • Tak: the module clears the special price and removes the technical copy,
  • Nie: the module restores the special price and dates from the copy, then removes the technical copy.

Cron

The module includes a cron job:

kowal_outletproducts_outlet

The task runs the OUTLET helper and cyclically checks outlet products. Cron removes products from the OUTLET category when they should no longer be visible there and refreshes indexes and cache.

After installation, make sure Magento cron works correctly:

php bin/magento cron:run

In a production environment, cron should be run from the system crontab of the Magento application user.

Manual recalculation launch

Recalculation can be launched manually from CLI:

php bin/magento kowal_outletproducts:generate

The command performs the same process that is run by cron.

Indexes and cache

After changes, the module refreshes the most important product and catalog indexes:

  • catalog_product_price,
  • catalog_product_category,
  • catalogsearch_fulltext,
  • inventory,
  • cataloginventory_stock.

The module also clears cache tags for OUTLET products and categories, so the category listing should update after a status change or product detachment.

If needed, you can force a full reindex:

php bin/magento indexer:reindexphp bin/magento cache:flush

Post-implementation test

Recommended functional test:

  1. Select a simple product with stock.
  2. Set a special price and promotion dates for it.
  3. Add the product to OUTLET through the import panel.
  4. Check whether the product appeared in the OUTLET category.
  5. Check whether the sale attribute has the value Tak.
  6. For a configurable product, check whether the parent appeared in OUTLET.
  7. Change the product status so it is no longer salable.
  8. Run cron or the CLI command.
  9. Check whether the product was removed from the OUTLET category.
  10. Check whether the special price was restored or removed according to the configuration.

Common issues

The product is still visible in OUTLET

Check:

  • whether Magento cron is running,
  • whether the product still has sale = 1,
  • whether the product is assigned to one of the categories configured as OUTLET,
  • whether indexes and cache have been refreshed.

Helpful commands:

php bin/magento cron:runphp bin/magento indexer:reindexphp bin/magento cache:flush

The configurable parent is still in OUTLET

Check whether any product variant still has sale = 1. The parent is kept in OUTLET as long as it has an active outlet variant.

The special price was not restored

Check:

  • whether the product was previously added to OUTLET after the copy attributes were installed,
  • whether the special_price_copy_active attribute was set,
  • whether the Usuń ceny specjalne dla produktów po wyprzedaży configuration is set to Nie,
  • which price scope is set in Magento.

Prices differ between store views

Check the price scope configuration in Magento. The module does not convert currencies and does not synchronize prices between store views. It restores values saved for the appropriate price scope.

Uninstallation

If the module is to be disabled:

php bin/magento module:disable Kowal_OutletProductsphp bin/magento setup:upgradephp bin/magento cache:flush

Removing the Composer package:

composer remove kowal/module-outletproductsphp bin/magento setup:upgradephp bin/magento cache:flush

Before removing the module, it is recommended to check whether products require manual clearing of the sale attribute or detachment from the OUTLET category.

Questions and Answers

Question
Does the module allow products to be automatically assigned to the “Outlet” or “Sale” category?
Answer
Yes — the module allows products that meet specific conditions (e.g., price reduction, product age, stock level) to be automatically moved to outlet categories, which greatly facilitates managing the sale offer.
Question
Can I set rules according to which products will be marked as “Outlet” (e.g., discount ≥ 50%, older than 90 days)?
Answer
Yes — the module supports creating rules such as “if the promotional price has dropped by at least X%” or “product older than Y days,” then automatically marks the product as an outlet item and can move it, for example, to an outlet store or tag it with the “Sale” label
Question
Can I set rules according to which products will be marked as “Outlet” (e.g., discount ≥ 50%, older than 90 days)?
Answer
Yes — the module is designed for Magento 2 stores and supports multistore, which allows you to define separate conditions for individual stores or language views.
Question
Does the installation require modifying Magento core files or the template?
Answer
No — the module works as an extension compatible with the Magento 2 architecture and does not require overwriting core files. However, it is worth checking compatibility with the theme you are using.
Question
Does it affect store performance if I have a large number of products?
Answer
The module can handle a large number of products, but as with any add-on that adds bulk logic, it is recommended to test its operation in a staging environment. In practice, the module is optimized for automating outlet offers.
Question
Will I receive technical support and updates after purchasing the module?
Answer
Yes — the manufacturer declares technical support and updates for the module, which makes it safe to use in a production environment.
Write Your Own Review
You're reviewing:Outlet Module for Magento 2 - Sale Automation
Your Rating
Products
Aktualizacja preferencji plików cookie