Smart Wholesaler Feed Sync

Wholesaler Catalogue Sync - Match Supplier Feeds by EAN & SKU with Dry-Run Diffs, Circuit Breakers & Rollback

Price: €149.00
Tax excluded
Feed Workbench matching a wholesaler feed to PrestaShop products

Smart Wholesaler Feed Sync keeps your PrestaShop catalogue in step with your suppliers — stock, price and availability — and is built above all not to hurt it. A below-cost price guard quarantines a supplier typo or a bad match before it ever reaches the storefront, a truncated or half-downloaded feed can never mass-change your products, and when an item quietly disappears from a wholesaler's feed it is retired gracefully — with a "no longer available" notice linking shoppers to the right category — and restored automatically if the feed brings it back.

It reads XML, CSV, JSON, XLSX and Google Sheets over HTTP, FTP, FTPS, SFTP or a local file, and matches every feed item on identity that stays put: EAN first, then supplier SKU, then supplier id. Every run starts as a dry-run with a line-by-line diff, every apply is recorded and can be rolled back, and it can create products and combinations, convert currencies and forward dropship orders — one self-hosted tool for PrestaShop 1.7, 8 and 9.

Share
  • Never sells below cost. A price guard checks every downward price write against your recorded cost and current price; an implausible value — a supplier typo, a shifted decimal, a wrong-EAN mismatch — is quarantined with a visible warning and the reason recorded, while the product's stock and availability keep syncing normally.
  • Graceful "gone from feed" handling. When a wholesaler drops a product, it is only treated as gone after it has been absent for several consecutive runs and days; you choose the outcome per feed — from a report-only log entry to hiding the buy button or disabling the product — and shoppers can see a configurable notice linking to the parent category. Fully reversible: the product is restored automatically if the feed lists it again.
  • Mismatch-proof matching. Feed items bind to your products by EAN, then manufacturer code or SKU, and only last by supplier id — and a match made on a volatile supplier id is held at low confidence so a reused or renumbered code can never anchor to the wrong product and overwrite its price and stock.
  • A broken download cannot wreck the catalogue. A run that parsed far fewer items than the feed's recent baseline, or hit fetch or parse errors, is barred from retiring anything, and circuit breakers cap mass-disable and mass-create actions before they apply.
  • Any feed, any connection. XML, CSV, JSON, XLSX and Google Sheets pulled over HTTP, FTP, FTPS, SFTP or a local file, with gzip handled for you — you are never tied to one wholesaler's format.
  • Real combinations, not flat duplicates. Variant feeds become PrestaShop combinations — attribute groups and values, per-variant reference, EAN, stock, price impact and images — so a supplier's colours and sizes sell as one product.
  • Your categories, brands and currency. Map each feed category and brand to your own, and convert feed prices with live National Bank of Poland rates or a fixed rate before your markups apply.
  • Stock across locations. Read per-warehouse quantities and combine them into the single figure your storefront shows.
  • Hands-off dropshipping. Forward supplier-owned order lines to the wholesaler by email, endpoint or export file — off until you switch it on.

A supplier typo can never underprice your shop

One shifted decimal in a wholesaler's export — 210.00 becoming 19.90 — is all it takes to sell a product below cost, and a duplicate barcode in the feed can do the same by pairing an expensive product with a cheap item's price. Smart Wholesaler Feed Sync inspects every downward price change before it is written: a value that falls below a configurable share of your recorded cost, or drops implausibly far from the current price, is refused and quarantined.

The blocked row stays in the run report as a warning with the exact reason and the price the feed intended, so you can correct the source or approve it deliberately — while the product's stock and availability continue to sync. Genuine promotions and thin margins pass straight through, and prices you set by hand are never second-guessed.

Connect any wholesaler and match on identity that stays put

Point the module at a feed URL, an FTP, FTPS or SFTP server, a Google Sheet or a file on your host, in XML, CSV, JSON or XLSX — a Test source button verifies the connection before you save, and a visual mapper lines up each feed field with its PrestaShop counterpart and previews the result.

Matching then runs on the keys that survive a supplier's housekeeping: EAN first, manufacturer code or SKU second, supplier id only as a last resort and always at low confidence. Before any existing pairing is trusted again, it is re-checked against the product's stable identity — so a reused or renumbered supplier code re-matches cleanly instead of quietly rewriting the wrong product's price and stock.

Connect a supplier feed over SFTP and set the match priority

When a product leaves the feed, retire it gracefully

Wholesalers discontinue products silently — one day the row is simply missing. Instead of leaving an orphan on your storefront, the module notices the absence, waits until the product has been gone for a number of consecutive runs and days you define, and then applies the action you chose: log it for review, mark it unavailable for order, zero its stock too, or disable it entirely. Products you manage by hand are never touched.

Shoppers who land on a retired product from a search engine or an old link see a notice in your own words, with placeholder tags that render as links to the product's direct, default or top-level category — so the visit ends in your catalogue, not on a dead page. The whole state is reversible: if the supplier lists the product again, the module restores what it changed and the page sells as before.

Dry-run first, circuit breakers always, rollback whenever

Nothing is written until you have seen it: every run produces a complete before/after diff, and after you change a feed's configuration, policy or price rules a fresh dry-run is required before anything applies. Circuit breakers hold back a run that would disable or create more products than your thresholds allow, and the gone-from-feed logic is additionally barred whenever a run parsed markedly fewer items than the feed's recent baseline — the signature of a truncated download.

Every run is recorded with its match rate, a breakdown of what changed and why, and warnings for parse spikes, match-rate drops and ambiguous matches. Any apply can be rolled back — removing only what the module itself added and never touching an order or anything you already had.

Run history with dry-run, apply, rollback and safety breaker status
  • Reference
    mprfeedsync
  • PrestaShop Compatibility
    PS 1.7 – 9.x
  • Pricing Model
    One-time Purchase
  • Module Type
    Front & Back-office
  • GDPR Relevant
    Yes
  • Business Goal
    Streamline Operations
  • External Account Needed
    No
  • Module Complexity
    Complete Solution
  • Customer Journey Stage
    Manage Store
  • Works With Platform
    No External Platform

What customers say about us

Company reviews
5.0 (4 reviews)
Loading customer reviews...
No product reviews yet

Be the first to share your experience with this module.

Write a Review
Rate specific aspects (optional)
Quality
Price / Quality
Stability
Compatibility
Support

What the module does

MPR Feed Sync is a back-office feed synchronisation module for PrestaShop. It fetches wholesaler product feeds, normalizes records into a common product model, matches them to existing products and combinations, stores dry-run diffs, and applies catalog changes only after the configured safety gates allow the run.

The module can update stock, price, availability, category, brand/manufacturer, names, descriptions, images, combinations, attributes, and features. Each area is controlled by per-feed switches, so a feed can be limited to stock and price only or expanded to product creation and variant handling when the shop is ready.

Back-office location

After installation, use Sell > Feed Sync. The module dashboard shows the last run, match rate, active feeds, managed products, open alerts, next schedule label, recent runs, and quick links to Feeds, Mapper, Runs, and Configuration. Opening the module configuration redirects to the mapper/preview controller.

Global configuration

Open Sell > Feed Sync > Configuration to copy the token-gated cron URL and adjust runtime limits.

  • Global apply enabled: master switch for apply mode. Apply still also requires a fresh dry run and confirmation token.
  • Fetch timeout seconds, Fetch connect timeout seconds, and Fetch max bytes: transport limits used by feed fetching.
  • Sync lock TTL seconds: lock lifetime for feed runs so overlapping runs are skipped instead of writing concurrently.
  • Product create max count, Combination create max count, and Create max percent: global creation caps used by safety gates.
  • Image max count, Image max bytes, Image timeout seconds, and Image connect timeout seconds: limits for image import.

Creating a feed

Open Sell > Feed Sync > Feeds and add a feed. Required fields are the feed name and feed URL/path. Choose the wholesaler, source type, adapter or mapping profile, matching priority, priority order, sync scope, category behavior, safety thresholds, schedule, and active status.

  • Feed URL / path accepts HTTP(S), FTP, FTPS, SFTP, Google Sheets URL/ID, or an absolute local path inside the configured import directory.
  • Source type supports url, ftp, ftps, sftp, file, and google_sheets.
  • Compression can auto-detect gzip, force gzip, or disable decompression.
  • Source settings JSON stores advanced options such as Google Sheets gid and range.
  • FTP/FTPS/SFTP authentication fields store username/password and optional SFTP private-key path/passphrase. Blank password/passphrase fields keep the existing secret when editing.

Mapping feeds

Use Sell > Feed Sync > Mapper to probe a source, sample records, create or save mapping profiles, and preview normalized items. Canonical fields include ean, sku, supplier_id, name, price, stock, location_quantities, avail, category, brand, variant_group_key, variant_key, variant_attributes, features, combination_ean, combination_reference, combination_price_impact, combination_stock, combination_images, images, and raw attrs.

Available transforms include trim, digits_only, decimal_normalize, lower, upper, prefix, suffix, regex_replace, split, concat, default_if_empty, and map_values. Presets include Corsan XML, generic Google Shopping XML, generic Ceneo XML, generic CSV, and generic JSON.

Dry runs, apply, and rollback

Use Dry-run on the Feeds screen or run the cron endpoint with action=dryrun. A dry run fetches the feed, parses it, builds a product index, matches feed items, writes mprfeedsync_run and mprfeedsync_run_diff rows, and stores a configuration signature on the feed.

Use Apply only after reviewing the dry-run result. Apply mode requires apply enablement, a valid confirmation token, a fresh dry-run signature, currency-rate readiness, and passing safety gates. Apply writes planned rows and records applied/skipped/error status per diff row. Rollback actions are available from the Feeds and Runs screens for apply runs.

Matching and overrides

Matching uses existing module maps first when coherent, then the configured match_priority. Unique EAN and SKU/reference matches are high confidence; supplier-reference-only matches are low confidence and are blocked from writes unless policy allows them. Duplicate feed keys, ambiguous catalog candidates, ignored maps, and unsafe skipped rows are not treated as writable rows.

The Mappings controller lets admins freeze a map, unfreeze it, ignore/unignore it, manually remap it to another product ID, or set/clear a product category override. Freezing protects stock, price, availability, name, description, and images for that map.

Categories and brands

Category strategy can be default, manual, or auto_path. Product category overrides win first, active category maps win next, manual strategy relies on those maps, and auto-path can create or resolve category paths under the configured root category during apply.

Brand sync uses the brand map table. A feed brand can map to a PrestaShop manufacturer, or Create if missing can create a manufacturer from the feed brand value during apply. Product overrides can also supply a manufacturer override.

Stock locations

When sync_location_stock is enabled, feed location_quantities are written to module location ledgers and the shop stock quantity is updated from the selected aggregation strategy. Supported strategies are sum, max, primary_location, and specific_location. Stock locations can be virtual module-managed locations or linked to Advanced Stock Management warehouses.

Currency and pricing

If source_currency is set and differs from the shop currency, the module requires a configured rate provider before apply. Rate source can be manual or nbp, with optional rate margin and settings JSON. Rates are cached in mprfeedsync_currency_rate; missing or stale required rates block apply.

Dropship order forwarding

Open Sell > Feed Sync > Dropship Orders to configure order forwarding per feed. It is disabled by default. The default generic_export adapter writes an order document to disk and does not contact a supplier. To send externally, choose email_csv, email_xml, or http_post, set the trigger order status ID, and provide supplier email, endpoint URL, options JSON, or auth JSON as needed.

The module listens to actionValidateOrder and actionOrderStatusPostUpdate. When an order reaches the configured status, it resolves only lines owned by the feed, creates an idempotent queue item per order/feed pair, dispatches it, and keeps response/error data. The retry cron action processes due queued or failed forwarding records up to the configured attempt limit.

Cron endpoint

The front controller is /module/mprfeedsync/cron and requires the stored token. Supported actions are parse, sync, dryrun, apply, status, and forwarding retry aliases such as forwarding_retry. Optional parameters include id_feed, ad-hoc url, adapter_key, profile, id_mapping_profile, confirm or apply_token, limit, and scoped products.

Operational notes

  • The module supports PrestaShop from 1.7.0.0 up to the installed _PS_VERSION_ according to the module constructor.
  • Install creates module tables for feeds, profiles, product maps, overrides, run history, diffs, categories, brands, currency rates, locations, order forwarding, images, price rules, alerts, and locks.
  • Runtime schema reconciliation and hook checks are performed before admin and cron operations when available.
  • Run locks are stored in mprfeedsync_sync_lock and prevent overlapping runs for the same feed or ad-hoc URL.
  • System integrity checks and module table maintenance are available from the integrity controller.

v1.0.0 — 2026-07-04

  • Released the full competitive-parity milestone and bumped the module version to 1.0.0 in mprfeedsync.php and config.xml.
  • Added the module foundation, declarative schema, admin menu, cron registration, token-gated front cron endpoint, integrity/license/support/update controllers, and default Corsan wholesaler data.
  • Added feed fetching and parsing for Corsan XML plus generic XML/CSV/JSON/XLSX mapping profiles, mapping presets, source probing, Google Sheets CSV exports, FTP/FTPS/SFTP/local-file transports, and gzip decoding.
  • Added product matching, product maps, dry-run diff persistence, apply execution, rollback support, run history, dashboard metrics, alerts, and safety gates for match-rate drops, mass creates, mass disables, and stale configuration.
  • Added category mapping, brand/manufacturer mapping, price rules, manual and NBP currency conversion, per-product overrides, Workbench UI, freeze/ignore/remap actions, and scoped apply controls.
  • Added product creation, image import, variant group planning, combination creation/updating, attribute and feature writing, combination image assignment, and rollback metadata for created catalog objects.
  • Added multi-location stock support with virtual locations, optional Advanced Stock Management warehouse mapping, aggregate stock strategies, per-location ledgers, and per-location mass-zero protection.
  • Added opt-in dropship order forwarding with generic export, email CSV, email XML, and HTTP POST adapters, queue persistence, retry cron, resend/cancel/download actions, and per-feed trigger status configuration.
  • Fixed run-diff persistence regressions, robust AJAX JSON encoding for malformed feed UTF-8, additive/non-additive schema reconciliation, and PrestaShop 8/9 product-attribute ObjectModel compatibility while preserving PrestaShop 1.7 behavior.
Have a question about this product? Our experts are here to help. Ask anything about installation, compatibility, or specifications.
1256 questions
9 categories
2014 building modules since
1.7–9 PrestaShop versions

Works Well With Smart Wholesaler Feed Sync

Modules our team genuinely pairs with this one — and exactly why each belongs in the same setup.

Complement

Smart Wholesaler Feed Sync brings your supplier catalogue in; Smart Google Merchant Feed Manager sends it back out. Once stock, prices and availability are synced, push the same catalogue to Google Shopping with a clean, validated feed — one consistent import-and-export toolchain.

Mass Price Updater
€149.00
Complement

Feed Sync keeps supplier prices current automatically; Mass Price Updater lets you layer your own margins, rounding and promotions on top in bulk. Use the feed for the base cost and the updater for your retail strategy, without the two fighting over the same products.

Complement

Smart Wholesaler Feed Sync writes stock, including per-location quantities through its advanced stock bridge; Warehouse Revolution gives you the multi-warehouse management to organise it. Together they keep incoming supplier stock mapped to the right warehouse and visible at checkout.

0 open 0 resolved
Report an issue
View all known issues

Loading feature requests...

View full roadmap
30 days return right
Easy return - no questions asked
Plug & Play Modules
Install, set up and take profit
Dedicated Support First
Priority Help & Satisfaction Over Sales

You might also like

Marketing Revolution
€299.00
Loading...
Back to top