Category and brand promotions (catalogue price rules)
ps_manage_catalog_price_rules
Puts one discount on whole categories or brands at once, and it also covers products you add later.
Free TellMyShop Audit: No. This tool is only in the paid version of TellMyShop. The free TellMyShop Audit has only tools that read your store.
Ask Claude
„Black Friday: 20% off all wellies and raincoats from Friday 00:00 to Monday 23:59.”
Example preview
New rule "Black Friday – wellies and raincoats -20%": categories 31 Wellies, 32 Raincoats (with subcategories), -20%, 2026-11-27 00:00 to 2026-11-30 23:59, all customer groups. 86 products. Example: Wellies Dots 149.00 -> 119.20 PLN gross. Warning: 4 products already have a promotion, PrestaShop applies only one.
Technical details
A promotion for many products at once: whole categories (with subcategories), manufacturers, feature values, as a PrestaShop catalogue price rule. Use it instead of ps_manage_specific_prices when more than a few products are involved: one rule, and PrestaShop applies it to products added later too. action=list shows rules with conditions and the number of products covered; action=add creates a rule; action=delete removes one (rule_id). Conditions: the product must be in ANY of category_ids AND (if given) have ANY of manufacturer_ids AND (if given) any of feature_value_ids. Discounts don't add up: when a product has several promotions PrestaShop picks one (the preview warns). The preview shows the number of products and sample prices before and after.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| action | enum: list | add | delete | yes | list | add | delete. |
| shop_id | integer | no | Shop ID in a multistore installation. Defaults to the shop in the connector address. IDs are listed by ps_get_shop_info. |
| lang | string | no | ISO language code, for example pl or en. Defaults to the shop's default language. |
| name | string | when: action=add | add: rule name (shown in the back office, for example "Black Friday – wellies -20%"). Max 255 characters. |
| category_ids | array of integer | no | add: categories (IDs from ps_get_category_tree). Max 50 items. |
| include_subcategories | boolean | no | add: also cover subcategories (on its own PrestaShop counts only products assigned directly to the category). Default true. |
| manufacturer_ids | array of integer | no | add: manufacturers (brands). Max 50 items. |
| feature_value_ids | array of integer | no | add: feature values (IDs from ps_list_features). Max 50 items. |
| whole_shop | boolean | no | add: a rule for ALL products of the shop (no conditions), only on explicit request. Default false. |
| reduction_type | enum: percentage | amount | when: action=add | add: percentage or amount discount. |
| reduction | number | when: action=add | add: a percentage (20 = 20%) or an amount in the shop currency. Max 1,000,000. |
| tax_included | boolean | no | add: an amount discount applies to the gross price (default) or the net price. |
| date_from | string (YYYY-MM-DD) | no | add: start (default now), YYYY-MM-DD. |
| date_to | string (YYYY-MM-DD) | no | add: end (inclusive). No date = no end, YYYY-MM-DD. |
| time_from | string (HH:MM) | no | add: start time (HH:MM). Default 00:00. |
| time_to | string (HH:MM) | no | add: end time (HH:MM). Default 23:59. |
| customer_group_id | integer | no | add: only for a customer group (0 = all). Default 0. |
| from_quantity | integer | no | add: from how many units of the product in the cart. Default 1. |
| allow_big_change | boolean | no | add: allow a discount above 90% (after the user confirmed). Default false. |
| rule_id | integer | when: action=delete | delete: rule ID from action=list. |
| only_current | boolean | no | list: only running and scheduled rules (no finished ones). Default false. |
| limit | integer | no | Maximum rows (default 50, max 200). |
| confirm | boolean | no | false (default) returns a preview and saves nothing. true executes, only after the user approved the preview, together with change_token. |
| change_token | string | when: confirm=true | Token from the preview. Required with confirm=true. Valid 30 minutes, single use, bound to the previewed arguments and data state. |
Limits
Up to 50 categories, manufacturers and feature values each. Discount above 50%: warning; above 90%: needs allow_big_change. whole_shop only on explicit request. List max 200 rows (default 50). It is a write tool, so in read-only mode it is hidden, list included. Revertible with ps_revert_change.
What you see before anything is saved
Claude first calls the tool without confirming it. The module returns a preview (current and new values) and a single-use token valid for 30 minutes. Claude shows you the preview and saves the change only after your yes.
Related tools
- Manage sale prices (specific prices) ps_manage_specific_prices
- Manage cart rules and voucher codes ps_manage_cart_rules
- Category tree ps_get_category_tree
- Revert change ps_revert_change
Use cases with this tool
- Set a time-limited sale on a category
- Prepare a Black Friday campaign across the shop
- Run a promotion on a whole brand or category
- Get the whole shop ready for Black Friday
- Clean up after a promotion
Last updated: 2026-10-05