Skip to content

Bulk Product Operations

Bulk Product Operations adds bulk actions to your product grid’s Actions menu — select products, pick an operation, and apply it to all of them at once. The product-grid menu covers the everyday operations (status, visibility, repricing, categories, copy/remove options & images, attribute set, delete); the full 37-command engine — including find-and-replace text, related/up-sell/cross-sell links, inventory sources and advanced/tier prices — is available headless over GraphQL and the CLI. Every run is recorded in an audit history.

Bulk operations in the product grid Actions menu

Install Bulk Product Operations with Composer using your AgenticEcom licence key (find it on your My Licences page — one key unlocks every module you own):

Terminal window
# 1. Register the AgenticEcom repository (once per store)
composer config repositories.agenticecom composer https://repo.agenticecom.net
composer config --global --auth http-basic.repo.agenticecom.net <YOUR-LICENCE-KEY> x
# 2. Require this module
composer require agenticecom/module-bulkproductoperations
# 3. Apply it
php bin/magento setup:upgrade && php bin/magento setup:di:compile && php bin/magento cache:flush

Magento

Open Source 2.4.9 GA (and later 2.4.x).

PHP

Tested on 8.4 and 8.5.

Where

Product grid Actions menu and GraphQL.

Audit

Every run is logged (command, count, status, user, time).

Change Status · Change Visibility · Change Attribute Set · Update Attributes · Append / Replace text (find-and-replace in name/description).

  1. Go to Catalog → Products (or Catalog → Bulk Product Operations → Run Actions).

  2. Select the products (filter first to target exactly the set you want).

  3. Open the Actions dropdown and choose an operation; enter any parameters it needs (e.g. the new price, the category, the text to replace).

  4. Apply. The result and a per-run entry land in the history.

The same engine is fully scriptable over GraphQL — ideal for PIM syncs and CI jobs:

# List the available operations
{ massActionCommands { code label } }
# Execute one (admin token required)
mutation {
executeMassAction(
command: "update_price"
product_ids: [101, 102, 103]
parameters: "{\"value\": 10, \"type\": \"percent\", \"action\": \"increase\"}"
) { success processed_count error_count message history_id }
}
# Review what's been run
{ massActionHistory(pageSize: 20) {
items { command_label product_count status admin_user created_at } total_count } }
Do bulk status/visibility changes actually apply everywhere?

Yes — status and visibility are written at the default scope so the change takes effect across the store (using Magento’s native bulk-attribute update under the hood, which is also much faster than saving each product individually).

Can I increase prices by a percentage, or from cost?

Yes — the price operations support set / increase / decrease, fixed or percentage, and cost-based modes (e.g. “set price to cost + 40%”), with a configurable rounding rule.

What’s “Fast Delete”?

A high-volume deletion path for clearing large product sets quickly. It’s behind its own ACL resource (fast_delete) so only authorised roles can run it, and bulk deletions above a configurable threshold prompt for confirmation first.

Is there an audit trail?

Yes — every execution records the command, product count, status, the admin user and timestamps, viewable in the admin and over the massActionHistory GraphQL query.

Is it secure?

Operations are grouped under seven separate ACL resources, each grantable per role; the GraphQL mutation requires an admin token, accepts up to 5,000 product IDs per call, and size-limits and JSON-validates its parameter payload. Verified clean on PHP 8.4 and 8.5.