Omnibus Price Compliance: setup and help
Quick start
- Install the ZIP through Modules > Module Manager > Upload a module and open Omnibus Compliance > Configuration for the intended shop.
- In History, review Enable module, Jurisdiction profile and Jurisdiction policies by country (JSON); the initial policy is PL with a 30-day window.
- Keep Enable daily snapshots and Enable dirty-price worker on; set Daily snapshot start and processing bounds, then Save.
- Schedule the token-protected module cron URL or a compatible task runner so Process Omnibus price-history work runs regularly; its task interval is 300 seconds.
- Review Show on product pages, Show in product listings, Show in the cart, Show in quick view and all Legal text translations.
- Use Product Policies and Save policy for offering-date, perishable or unit-price exceptions; keep optional Disclosures off until their wording matches your shop.
- Check Dashboard progress and Price History eligibility, then verify an evidenced reduction and combination changes on every enabled storefront surface.
Requires PrestaShop 1.6.1 or later and PHP 7.1 or later.
Setup manual
Install and establish recording
Requirements
Requires PrestaShop 1.6.1 or later and PHP 7.1 or later.
You need a regular scheduler and a theme with the supported product, listing, quick-view and cart hooks. No external pricing-service account is required. The module records public product prices; it does not create a complete history for dates before installation.
Installation sequence
- Upload and install the ZIP through Modules > Module Manager > Upload a module.
- Click Configure, or open Omnibus Compliance > Configuration.
- Select the shop whose settings you are changing. Review History, Display, Legal text and Disclosures, then click Save.
- Configure regular execution of Process Omnibus price-history work.
- Open Omnibus Compliance > Dashboard and Price History to confirm that initial work and later observations are recorded.
- Test the enabled storefront locations with a qualifying reduction after enough history exists.
Installation creates module tables, registers hooks and the scheduled task, seeds default public market contexts, starts processing existing specific prices and queues initial snapshot work. A fresh installation can correctly show no prior-price statement.

Set the history and country policy
History tab
Open Omnibus Compliance > Configuration > History. These values start with the defaults below. Settings are saved for the selected shop.
| Setting | Initial value | What to do |
|---|---|---|
| Enable module | On | Keep on to record and resolve public price history. Turning it off also stops this shop's scheduled processing. |
| Jurisdiction profile | PL |
Set the two-letter fallback country code for your shop's chosen policy. The policy JSON must contain this code. |
| Jurisdiction policies by country (JSON) | PL: 30-day window, progressive off, introductory 30 days | Maintain country-specific policy objects. A matching address country uses its object; otherwise the fallback profile applies. |
| Perishable category IDs (JSON array) | [] |
Enter positive category IDs, for example [12,34], when those goods should use perishable treatment. A saved product policy takes precedence. |
| History retention days | 400 |
How long older price records are kept. The minimum is 45 days. Back up any records you need for longer. |
| Allowed unverified history gap (seconds) | 3600 |
The longest gap in the recorded prices that the module still accepts. With a longer gap, no reference price is shown. Raising the number accepts longer gaps; it does not fill in prices that were never recorded. |
| Context activity days | 45 |
Include active public market contexts seen within this many days, plus the default country/currency context. Minimum 1. |
| Priority contexts (JSON) | [] |
Stored as a JSON array; does not extend or reprioritize snapshot coverage. |
| Enable daily snapshots | On | Queue recurring catalogue snapshots. |
| Daily snapshot start | 02:00 |
Set the local daily start as a valid HH:MM time. This controls cycle creation, not the frequency of worker calls. |
| Snapshot chunk size | 250 |
Targets in a processing chunk. Accepted range: 1 to 2000. |
| Maximum targets per run | 2000 |
Work limit per shop per invocation. Accepted range: 1 to 50000. A large catalogue continues over later runs. |
| Worker time budget (seconds) | 45 |
Save 5 to 300 seconds, but the current worker caps its per-shop budget at 50 seconds and shares a 50-second invocation deadline. |
| Enable dirty-price worker | On | Process pending changes reported by supported price mutations. |
| Enable cross-request resolution cache | On | Reuse eligible computed results between requests. Supported mutations and pending work can invalidate or bypass reuse. |
| Cache TTL safety bound (seconds) | 300 |
Bound cache reuse. Accepted range: 1 to 3600 seconds. |
Enter country policy JSON
The supplied initial policy is:
{
"PL": {
"window_days": 30,
"progressive": false,
"introductory_days": 30
}
}
Use uppercase two-letter country keys. Each entry needs window_days, progressive and introductory_days. The form requires a window of at least 30 days, a JSON boolean for progressive, and 1 to 30 introductory days. Runtime resolution caps the window at 365 days.
With progressive enabled, a supported continuing sequence of reductions can retain the reference period before the first reduction. Leave it off unless that is the policy you intend to apply. Keep your translated wording consistent with the configured period.
These are shop-maintained policy settings. The module does not provide an automatically updated legal policy database for every country. Choose the policy and wording for the shop's actual practices before relying on the output.
Run and monitor scheduled work
Schedule the worker
The included task Process Omnibus price-history work is due every 300 seconds. It handles pending changes, snapshots, installation backfill and eligible retention cleanup. The 02:00 daily default determines when a new snapshot cycle becomes due. Several worker runs may be needed to complete it.
Use your installed compatible task manager or the host's scheduler. Cron Manager is optional. This task does not opt in to the bundled scheduler's visitor fallback. Page visits do not run this task; configure external scheduled execution.
The module has a token-protected cron front controller. A server administrator can obtain its actual URL by running this against the installed shop, replacing the path:
php -r 'require "/absolute/path/to/shop/config/config.inc.php"; echo Module::getInstanceByName("mpromnibus")->getCronURL(), PHP_EOL;'
Use the returned URL in your host scheduler, for example every minute. The runner processes tasks that are due. Keep the token private and update scheduled URLs if the shared cron token changes. Prefer the actual generated URL over constructing one from an assumed friendly-URL format.
Check progress
Open Dashboard in a single-shop context. Read Queued changes, Last job, Processed targets, Errors and Last activity. Reopen it after scheduled runs to see the progress. If Last job does not change, the scheduled worker is not running.
Snapshots cover active products available for order in tracked public markets. Each market includes the shop, country and currency. They cover recently active contexts plus the shop's default country/currency, not every possible country and currency pair. Priority contexts (JSON) does not add markets in this version.

Configure storefront output and wording
Display tab
| Setting | Initial value | How to use it |
|---|---|---|
| Show on product pages | On | Allow full product reference output in supported price locations. |
| Show in product listings | On | Allow compact references on supported product cards. |
| Show in the cart | On | Allow compact references on eligible cart lines. |
| Show in quick view | On | Allow references in supported quick views. |
| Enable unit-price output | On | Show a unit price when a valid quantity basis exists. |
| Assume catalogue shipping weight is the sale content quantity | Off | Enable only when shipping weight actually describes the content sold. It is a fallback when native unit information is absent. |
| No-history behavior | Hide the reference price and warn in admin | This is the only supplied choice. Unsupported references are hidden. The configured dedicated warning text is not currently rendered as its own admin alert. |
Check each enabled location in your theme. Product combination updates clear the old reference and unit text before requesting the new selection's result. A failed refresh leaves the comparison hidden. The price-history chart belongs to the back office and is not a storefront chart.

Legal text tab
Edit all shop languages, then Save. Nonempty values are required for the supplied wording fields.
| Setting | Initial English wording or purpose |
|---|---|
| 30-day reference sentence | Lowest price in the 30 days before the reduction: {lowest_price}. |
| Introductory-product sentence | Lowest price since the product was first offered on {window_start}: {lowest_price}. |
| Perishable-product sentence | Price before the first application of this reduction: {lowest_price}. |
| Short listing sentence | Lowest prior price: {lowest_price}. Used for compact listing and cart output. |
| No-history admin notice | Explains that the applicable history period is not fully evidenced. The text is saved but is not displayed as a separate admin alert. |
The formatter accepts {lowest_price}, {current_price}, {discount_percent}, {window_days}, {window_start} and {window_end}. Preserve the tokens you need. If you configure a period other than 30 days, change any fixed 30-day wording in every language.
Set product policies and unit prices
Create a product or combination policy
Open Omnibus Compliance > Product Policies with one shop selected. The panel is Product-specific legal and unit basis.
- Select one Product.
- Set Combination ID to
0for the product-wide default, or enter a valid combination belonging to the product. - Choose History mode: Standard 30-day / introductory rule or Perishable: price before first reduction.
- Leave Offered-since override empty to use the available offering information, or enter the actual offering date and time when catalogue creation does not describe it. The saved wall time is the shop-local value.
- Set the unit-price fields as described below.
- Click Save policy. This requires edit permission.
A combination-specific policy takes precedence over a product-wide policy. A saved explicit policy also takes precedence over category-derived perishable treatment. Saving the policy invalidates the shop's payload cache.
Select a unit-price mode
| Unit-price mode | Use |
|---|---|
| Use native data, then configured fallback | Initial choice. Use the product's native unit information and applicable combination unit-price adjustments. The shipping-weight fallback runs only when its separate switch is on. |
| Manual content and basis | Enter positive Content quantity and Basis quantity, and both Content unit code and Basis unit code. |
| Exempt with audit reason | Enter Unit exception reason. The reason is required. |
| Disabled | Suppress unit-price output for this policy. |
A new policy starts with standard history, an empty offering override, automatic unit pricing, basis quantity 1, and empty quantity/unit/reason fields. Invalid or incompatible quantity data produces no unit-price statement.
For a 500 g pack compared per 100 g, select Manual content and basis, enter content quantity 500, content code g, basis quantity 100, and basis code g. At a current pack price of 10, the calculated price per 100 g is 2 in the same currency. This is an illustrative calculation, not a catalogue record. Check the storefront result and rounding.

Configure optional disclosures
Disclosures tab
All four disclosure switches start off. Enable them only after supplying wording that describes your shop.
| Setting | Purpose and initial state |
|---|---|
| This shop uses automated personalised pricing | Off. Allows Personalised-pricing statement on supported product/cart surfaces when the displayed price is outside the public comparison scope. That condition is broader than proven automated personalization. |
| Show search ranking disclosure | Off. Shows Search ranking statement and its configured parameter notes on supported search output. |
| Show category ranking disclosure | Off. Shows Category ranking statement and notes on supported category output. |
| Show review authenticity disclosure | Off. Shows Review authenticity statement and Review processing points (one per line). |
| Ranking details URL | Empty. Optional validated URL with translated Ranking details link label, initially Learn more about ranking in English. |
| Review verification mode | No origin checks. Other choices are Purchase checked, Product use checked and Mixed configured process. This is descriptive configuration, not a purchase-verification engine. |
| Review source module | Empty. Records the source name; entering a module name does not connect or verify a review service. |
Search ranking parameters (one Label|Note per line) and Category ranking parameters (one Label|Note per line) start empty. Use a line such as:
Relevance|How closely the result matches the search terms
The other statement fields come with translated text. The initial review processing text says that the shop does not check whether reviews come from real buyers. Replace it only when your process differs. Most translated statement fields need a value in every installed language; the ranking parameter lists may stay empty.
These settings publish explanations. They do not inspect ranking algorithms, verify review authorship or establish whether a displayed price was chosen by automated decision-making.
Understand recorded prices and comparisons
Public price scope
The history records the effective public quantity-one price for the relevant product or combination, shop, country and currency. It retains prices with and without tax. The storefront comparison concerns the matching public tax-inclusive price. Customer-specific prices, wholesale/group prices, quantity tiers and cart discounts are outside that public history.
Supported native product, combination, specific-price and catalogue price-rule changes create recording work. Compatible pricing tools can report committed mutations through the module's integration hook. Confirm support for your particular importer or pricing tool. Direct database changes that bypass hooks need special attention.
Installation examines existing specific prices. It records current eligible observations and can keep older projections for inspection. Historical projections are marked ineligible for reference resolution because their historic winning priority, tax and displayed price are not proven. They do not supply a missing earlier 30-day record.
Reference selection
For the standard policy, the module selects the lowest eligible public price in the applicable period before a supported reduction start. The default period is 30 days. An earlier sale within that period can therefore become the reference.
Introductory treatment uses the evidenced offering period under the configured policy. Perishable treatment uses evidenced price information before the first reduction. Progressive treatment needs a supported continuing reduction episode. The resolver checks the boundary and history coverage before it shows a comparison.
For example, if a fully evidenced 30-day period contains both the regular price and an earlier lower sale price, the earlier sale price is the standard reference. Do not replace that result with a higher regular price simply because the earlier price was promotional.
When output is suppressed
A reference stays hidden when the history period, reduction boundary or accepted coverage is insufficient. It is also suppressed when the displayed offer differs from the public price or is otherwise outside the public comparison. Tax-exclusive storefront displays do not receive that public reference.
Cart rules, gifts, unknown cart-line prices and line prices that differ from the expected public price suppress the cart reference. Unit-price output additionally needs its own enabled switch and a valid quantity basis.

Review history and troubleshoot
Inspect a product and market
Open Omnibus Compliance > Price History. Select the product, combination and recorded market context. Review the Effective price timeline and the reduction start marker. The table includes Applied price, Currency, Announced, Resolver eligible, Confidence, Time precision, Source, Applied from and Applied until.
Read these columns together. A row counts toward the reference price only when Resolver eligible says so. The reduction start display shows whether a start date was supplied, inferred or cannot be determined. Check the exact combination and market before comparing it with the storefront.

No reference after installation
Check whether enough earlier price records exist. The module records prices from installation onwards and cannot create past records. Backfilled historical estimates are not used for the reference price. When the required period is not covered, the reference price stays hidden, as expected.
Old or incomplete observations
Check Enable module, Enable daily snapshots, Enable dirty-price worker, scheduler execution, Last activity and Errors. Confirm that the market is tracked and active. Increasing the accepted gap cannot reconstruct the missing period. Resume regular recording and investigate the pricing tool's mutation integration.
Reference missing only in one location
Check its switch in Display, theme hooks and product-update behavior. In a cart, check rules, gifts and line-price matching. Compare a public tax-inclusive customer context with the corresponding recorded market. Custom themes and checkout modules need a functional test.
Settings do not save
Keep JSON valid. Include the selected Jurisdiction profile in the policy object. Use positive category IDs, valid numeric ranges, a valid ranking URL and required wording in all installed languages. In Product Policies, select one shop, a valid product/combination, positive manual quantities and an exemption reason when required.
Retention, privacy and uninstall
Keep price records
The scheduled worker deletes expired price records according to History retention days, with internal safety limits. Cleanup works in small batches and can take several runs. Keep separate backups or exports of records you must keep longer.
The catalogue price record excludes personalized observations. The resolve endpoint nevertheless stores a salted fingerprint derived from the visitor's connecting address for rate limiting. Do not describe the whole module as handling no visitor-related information.
Disable or uninstall
To stop this shop's processing temporarily, turn Enable module off and save. Existing observations remain until cleanup or removal.
Before uninstalling, back up or export the price records and policy data you need. Uninstall removes the module's recorded history, module tables, settings, menu and task registration, so the stored compliance history is deleted. Reinstalling does not bring it back without a separate backup.
Questions
No questions about this module yet
Ask anything about installation, compatibility or setup. Answers appear here.
Known Issues
9
Short back-office labels remain untranslated
Configure and Save and stay do not work correctly
Reference price notice disappears after daily checks
Reference price notice does not appear after changing variant
Incorrect promotion start when no date is declared
Incorrect unit prices for product variants
Rounded discounts display a zero-percent reduction
Latest job details and product dates do not display or save correctly
Product selection starts with an unintended product
Feature Requests
2
Implemented
Price history and promotion reference prices
Unit prices and configurable disclosures
Changelog
v1.1.42026-10-08
- Configure in the module manager opens the Omnibus settings page.
- "Save and stay" on the settings page saves your changes, the same as "Save".
Older releases
v1.1.32026-10-07
- Saving a product price policy requires edit permission; employees with view access see the policies without a Save button.
- After a product policy is saved, the page reopens that product instead of an empty form.
- Multistore: product policies, their lists and exports, and the dashboard work on one selected shop; in group or all-shops context they show a notice and change nothing.
- The dashboard shows the last price job with its type and status translated and its times in the shop's time zone.
- "Offered since" dates save at minute or second precision from any browser, and impossible dates are refused.
- Leaner code with no change to how the module works.
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.