Smart Carrier Rules: setup and help
Quick start
- Upload and install the Smart Carrier Rules ZIP through Modules > Module Manager, then select the intended shop.
- Open Shipping Rules > Settings > Configuration, review Enable rule engine and Show cost note, then Save.
- Open Shipping Rules > Carrier Setup when you need category/zone restrictions or supported PS8/9 Ignore weight behavior.
- Add a Shipping Rule under Rules; set Rule name, Priority, Root operator and a narrow Conditions and actions selection, then Save.
- Open Shipping Rules > Simulator, choose actual Cart contents and matching address, group and subtotal inputs, then click Run simulation.
- Check Shown/Hidden results, condition traces and NO CARRIER LEFT, then compare a matching and non-matching cart in the installed checkout.
- On PrestaShop 9, verify the actual charged shipping total with a test order before relying on surcharge or free-shipping actions.
Requires PrestaShop 1.7 or later and PHP 7.1 or later.
Setup manual
Install Smart Carrier Rules
Requirements
Requires PrestaShop 1.7 or later and PHP 7.1 or later.
Upload the release ZIP through Modules > Module Manager > Upload a module and install it. Open Shipping Rules > Rules. The menu also contains Carrier Setup, Simulator and Settings.
Select the intended shop before creating rules or carrier profiles. Rules and carrier profiles are scoped by shop. Configure the carriers themselves in PrestaShop before adding module restrictions.
Version-dependent behavior
| Function | PrestaShop 1.7 | PrestaShop 8 | PrestaShop 9 |
|---|---|---|---|
| Carrier visibility | Front JavaScript plus a server-side carrier-selection guard | Native delivery-option filter | Native delivery-option filter |
| Rename and ETA presentation | Front layer | Native filtered carrier data | Native filtered carrier data |
| Surcharge and free-shipping calculations | Presented in labels/simulator; native charged cost is unchanged | Presented in labels/simulator; native charged cost is unchanged | Applied through the native package-shipping-cost hook |
| Ignore native weight ranges | Unavailable | Available for the supported carrier case | Available for the supported carrier case |
The module adds no core class override. Test the real checkout you use, including any one-page or express checkout. Custom checkout compatibility depends on that checkout using the relevant hooks and carrier data.
Review configuration
Open Shipping Rules > Settings > Configuration.
| Setting | Default | Use |
|---|---|---|
| Enable rule engine | Yes | Turns the module's live checkout processing on or off. |
| Front debug data | No | Enable temporarily when checking the PrestaShop 1.7 front layer. Turn it off after diagnosis. |
| Show cost note | Yes | Shows the version-dependent cost-enforcement explanation. |
| Simulator subtotal basis | Tax incl. | Chooses which simulator subtotal override is marked as preferred. It does not change the tax-excluded free-shipping threshold basis. |
Click Save.
Configure individual carriers
Open Shipping Rules > Carrier Setup and edit a carrier.
- Active starts as Yes for a new profile. Set No to leave that carrier under native PrestaShop behavior for this profile.
- Restrict to categories offers the carrier only if the cart contains a product from the selected categories. Selected categories include their descendants. Leave the selection empty for every category.
- Restrict to zones limits the profile to the selected delivery zones. Leave it empty for every zone.
- Weight mode starts as Respect native weight ranges. On PrestaShop 8/9, Ignore weight (stay available beyond weight ranges) can keep a weight-billed carrier available beyond its ranges when its native out-of-range behavior would disable it. Cost uses the highest defined weight range. This does not bypass unrelated native carrier restrictions.
Click Save, then test the carrier in the simulator and checkout. Carrier profiles use carrier references so normal PrestaShop carrier revisions can retain the association.
Create a rule
General
In Shipping Rules > Rules, add a Shipping Rule and complete General.
| Field | Initial value or behavior |
|---|---|
| Rule name | Required name for staff to recognize. |
| Description | Optional internal explanation. |
| Active | Yes. Turn off while preparing a rule that should not yet affect checkout. |
| Priority | 0. Higher values run first. Ties use the lower rule ID. |
| Root operator | AND. Choose OR when any condition should be sufficient. |
| Start date | Empty means no start boundary. |
| End date | Empty means no end boundary. |
An active rule with no conditions matches without a condition restriction, subject to its date window. Start with a narrow condition while testing.
Conditions and actions
Open Conditions and actions. Use Add condition, then choose Type, Operator and Value. Negate reverses the condition. Entity pickers can supply IDs through Copy selected entity IDs to focused condition.
The available condition types are Customer group, Category, Product, Manufacturer, Postcode, Country, Zone, Subtotal, Weight, Quantity and Date/time.
- Use entity IDs for group, category, product, manufacturer, country and zone selections.
- Use numeric comparisons for subtotal, weight and quantity. between min:max takes two numeric bounds, such as
10:20. - Postcode patterns support
*wildcards, such asAB*, and numeric ranges, such as10000-19999. - Stock-availability conditions are not available in this release.
- Date/time accepts a JSON object with boundaries and optional weekday/time constraints. Weekdays use 1 for Monday through 7 for Sunday. For example:
{"days_of_week":[1,2,3,4,5],"time_start":"09:00","time_end":"17:00"}
Use Add action and select the desired action:
| Action | Fields and behavior |
|---|---|
| Hide carrier | Select the target Carrier IDs. |
| Show only carriers | Select the carriers to keep from the eligible list. It does not normally make a natively unavailable carrier available. |
| Fixed surcharge | Enter Amount excl. in the shop's default currency. |
| Percent surcharge | Enter Percent. |
| Free shipping over threshold | Enter a positive Free-shipping threshold (tax excl.) in the default currency. |
| Rename label | Enter Label for the relevant languages. |
| Append label | Enter text to append to the carrier's final label. |
| ETA text | Enter ETA for the relevant languages. This is text, not a calculated delivery date. |
Use the carrier picker to copy current carrier IDs into the focused action. Saved associations resolve carrier references. Leave targets empty only for an action that permits applying to all eligible carriers. Hide and show-only actions require carrier targets.
The action text language controls let you enter translated label and ETA text. Save the rule, then use its Test action or open Simulator.
If Label or ETA is empty in the current storefront language, the action loader uses the default shop language's text. Fill the default-language fields if you want a fallback for untranslated languages.
Understand overlapping rules
The engine applies active matching rules in descending priority and then ascending ID.
- All matching hide actions apply first. A show-only action does not restore a hidden carrier.
- The highest-priority usable show-only action wins. Lower show-only actions do not keep narrowing its result.
- Fixed surcharges are added first. Percentage surcharges then apply successively to the running shipping total.
- A qualifying free-shipping action makes the final shipping amount zero, overriding surcharges. Its threshold compares the tax-excluded subtotal.
- The first non-empty rename and first non-empty ETA win in priority order. All applicable append-label texts are accumulated.
Fixed amounts and thresholds use the shop's default currency and are converted to the cart currency for evaluation. A single rule is not necessarily the winner for every action: visibility, cost, name and ETA can come from different rules.
Use the simulator
Open Shipping Rules > Simulator.
- Select real products under Cart contents. Category/manufacturer selection uses representative products rather than reproducing every possible cart from that selection.
- Set Customer groups, Country, Zone and Postcode.
- Supply Subtotal excl. override, Subtotal incl. override, Weight override or Quantity override only when needed.
- Set Date/time for date-based rules.
- Click Run simulation.
Inspect each carrier's Shown or Hidden result, matched rules, expected and actual condition values, surcharge breakdown, free-shipping result, final label and ETA. NO CARRIER LEFT means this simulated cart has no remaining delivery choice.
The simulator uses the same rule engine as checkout, with a temporary cart and address that it removes afterwards. Its result still depends on the inputs, native eligibility and carrier integrations; read any notes about external carriers. On PrestaShop 1.7 and 8, simulated surcharge and free-shipping results are informational; a test order still uses the native shipping cost.
Verify and troubleshoot
Checkout test
Create one matching cart and one non-matching cart using the same products, quantities, address, group and time as your simulation. Confirm the carrier list, labels and ETA. On PrestaShop 9, verify the actual shipping total and test an order before enabling cost rules for customers.
Common problems
- A carrier is missing before rules apply. Check its native shop, group, zone, product and range settings. Show-only generally filters available carriers.
- No carrier remains. Read the hide/show-only traces and carrier-profile restrictions. Disable the responsible rule or adjust its targets.
- A surcharge appears but is not charged. Native cost mutation requires PrestaShop 9. Labels on 1.7/8 are informational.
- The wrong label appears. Check priority, the current language and any append-label actions from other matching rules.
- Simulation differs from checkout. Match the complete inputs, choose actual products, and read external-carrier replay notes. Test the installed checkout integration.
- PrestaShop 1.7 visibility is unchanged. Confirm the front script is loading and the checkout exposes the expected carrier markup and selection flow.
- Tables, menu or hooks are missing. Open Shipping Rules > Settings > System Check.
The module does not create shipping labels, retrieve live carrier rates, track parcels or manage warehouses.
Uninstall
Record or back up your rules and carrier profiles before uninstalling through Module Manager. Uninstall removes the module menu, declared rule/condition/action/profile tables and its configuration. The checkout then returns to the remaining native and third-party carrier behavior.
Questions
No questions about this module yet
Ask anything about installation, compatibility or setup. Answers appear here.
Known Issues
8
Security hardening
Selection fields could target unintended products or carriers
Delivery estimate reduced to one character
Ignore-weight carriers still disappeared
Rules could hide the wrong carriers
Simulator results could differ from checkout
Time and numeric conditions could match incorrectly
Translated delivery labels were not preserved
Feature Requests
5
Implemented
Conditional carrier rules
Shipping adjustments and delivery labels
Checkout rule simulator
Carrier Setup
Ignore carrier weight ranges
Demo
Test the full module before you buy
Buy a licence later and keep your settings.
- Your 30-day demo Test it on your own shop for 30 days from the first install.
- Ready demo shop Explore a ready demo shop in your browser.
- No registration No account, email or store domain needed.
By downloading, you accept the demo terms and privacy policy.
By opening this demo you accept the demo terms and the privacy policy.