• Enhancements · OpenCart 3.x and 4.x

Importing supplier prices into the online store: a self-populating catalog

The import of suppliers' prices into the online store is not based on the "upload file" button, but on a single key - the value by which the position can be recognized both between sources and between updates. There is a key — the catalog lives according to its own schedule: new items appear, withdrawn ones are hidden, prices and balances are tightened. There is no key - manual matching begins, and it eats up most of the budget. Therefore, we start with your real files, and not with a list of formats.

See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
Where do we start?
from your real prices, not from the description in words
after a free audit
Price
30
Guarantee

days after project sign-off

from your real prices, not from the description in words
Where do we start?
unique key: article number, barcode or manufacturer code
What is import based on?
5,830
Measured volume of the directory

goods, confirmed by two methods, measured on 07/31/2026

hide, not delete - the address remains alive
Removed items
10-30
Term of works

working days from the approval of the rules

free price audit, 3-5 working days
Before the estimate
Process steps

Transparent stages with approval at every step

Total duration:10–30 days

  1. Rules and comparison scheme

    1-3 working days

    We record in writing: key, priority of sources, margin, fields under protection, fate of withdrawn items. This is the cheapest stage and the most expensive if you skip it.

  2. Price processor: accepting and mapping fields

    3-10 working days

    Reading of your formats, key normalization, layout of characteristics by attributes, intermediate table of correspondences. Here we decide what to do with strings without a key.

  3. Prices, markup and protection of manual fields

    1-4 working days

    The markup rule with rounding, summation of prices and balances between sources, a list of fields that the price does not touch. We check the items that you controlled with your hands.

  4. Test run on a copy of the catalog

    2-4 working days

    Full run on a copy with analysis of the report: how many were matched, what was created extra, which lines were dropped. Edits after this run are the norm, not a sign of an error.

  5. Combat launch and schedule

    1-3 working days

    First run on live catalog with new product creation disabled, then schedule, portions, pauses, and block parallel runs.

  6. Two weeks on live data and transfer

    2-6 working days

    We look at reports of real runs, adjust the rules to what suppliers actually send, and give instructions to the manager.

Technologies & integrations

What we build on and what it connects to

Stack

  • OpenCart 3.x and 4.x — we write the handler under the kernel. Restrictions: After the kernel is updated, it is checked
  • PHP and MySQL — several thousand lines are passed in batches. Limitations: heavy XLSX eats memory
  • XML, CSV, XLSX parsing. Restrictions: PDF and scan are not read by anyone
  • Intermediate mapping table. Restrictions: after changing the supplier, it is cleaned by hand
  • cron with batch processing. Limitation: Schedule is silent if not supervised
  • A queue of tasks for a big price. Restrictions: parallel runs must be blocked
  • Import journal. Limitations: Shows that the run has worked, not that the data is correct

Integrations

  • supplier prices
  • download by link
  • files from mail
  • Provider's FTP directory
  • 1C / BAS
  • XML feed to marketplaces
  • Google Merchant Center
  • Telegram — post-run report
What's included

Complete list of work and what you get as a result

  • Acceptance of prices in your formats: table, XML, CSV, link, attachment from mail, file on FTP — there is no need to convert anything else by hand.
  • Key normalization before mapping: case, spaces, and hyphens are reduced to the same form, so "AB-1200" and "ab 1200" remain the same product.
  • Intermediate table of correspondences: once the matched position is further recognized by itself, manual work remains only on new lines.
  • The rule of intersection of the assortment: whose price is the main one, whose balance is the main one, what to do in case of disagreement - the catalog stops jumping between suppliers.
  • The markup rule is general, by categories or by suppliers, with rounding to the usual price tag.
  • Distribution of characteristics in separate fields instead of dumping in the description: after import, the filter in the category really filters something.
  • Protection of manual edits: an explicit list of fields that the price never touches - your title, your description, your photo.
  • Processing of removed items: the product disappears from the showcase, remains in the database and is returned in one movement when it appears at the supplier.
  • Scheduled import in batches with pauses and skipping of unchanged lines by hash: the update happens at night and touches only what has really changed.
  • Report after each run: added, updated, hidden, not matched and for what reason, in mail or messenger.
  • Test run on a copy of the catalog before the combat launch, written instructions to the manager, payment by stages, a guarantee of 30 calendar days.
When this service isn't right

What's not included — so there are no surprises at delivery

  • Agreements with suppliers about the format of the download are your area of ​​​​negotiation.
  • Writing descriptions and photographing products that are not in the price list.
  • Manual proofing of unmatched items: content work, counted separately.
  • Liability for errors in supplier data.
  • Hosting, domain, acquiring.
Who it's for

Situations where this service delivers results

Scenario 1 of 5

Prices are in the mail, and the catalog is updated by the manager

The files arrive on Monday, the manager opens them one by one and transfers the prices to the admin. At two hundred items, this is half a day, at two thousand - a week, which no one has. Importing takes away that work, leaving the human with only strings that didn't match.

We'll review your situation in a free audit
Handler under your prices against box module import

How this option differs from the alternative

Multiple sources simultaneouslyare summarized in one correspondence table by a single key
Protection of manual fieldsthe list of fields that the price does not touch is specified explicitly
Removed itemshide, the address remains alive
Strings that didn't matchremain in the report with a reason
The price format has changedwe rule, according to our own documentation
Cost at the starthigher: this is a development for your files

Free audit of your prices

We take your real files and see what can be assembled automatically and what will have to be proven by hand. This is not a theoretical assessment - it is work with the same tables that are sent to you every week.

What we measure

  • Formats and regularityWhat are the prices, how often are they updated, is the file structure stable. A price in which the order of the columns changes every week requires separate processing.
  • The only product keyIs there an article number, barcode or manufacturer code that identifies the item between sources and between updates. Without the key, automatic mapping is not possible, and this is the main fork.
  • Completeness of attributesAre the specifications in separate columns in the price, or is everything in the name. It depends on whether the filter will work after import.
  • Cross section of the assortmentHow many items are present in several prices at the same time and at what price to take them. This rule must be adopted before development.
  • Volume and speedHow many items are processed in one run and can the server handle it. For reference: in the wholesale catalog we measured, 5,830 products were confirmed by two independent methods — and this volume is convenient to update in parts, rather than in one run.
  • What will happen to withdrawn itemsThe product has disappeared from the price list - remove it, hide it or mark it as missing. Deleting breaks addresses that are already in the search, so we hide by default.

What you get

  • Parsing your files: what of them is taken automatically, what needs to be proven by hand.
  • Mapping scheme: according to which key items are compiled between sources.
  • Update rules: what is overwritten by the price, and what remains yours forever.
  • Conversation for 30–40 minutes on the document.

Timeline: 3-5 working days

Why is it free

Because it is impossible to estimate the import without your files: the difference between a neat price and a table with combined cells is a difference several times in terms of labor intensity.

What's next

After the audit — amount and term, contract, account, act. We do the first import on the test site and show the result before anything gets into the combat catalog.

Short form: your contact and site URL

Did not find your case?

Describe how it works on your side — we will tell you whether “Import of suppliers' prices into the catalog” fits and what it means in your situation. No brief and no call: one question, one answer.

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

What affects the price

Why two seemingly identical tasks are priced differently

  • Number of sourcesOne price - one analysis. Five prices - five different sets of names of the same characteristics and five ideas about how to write the article. Work grows from here, not from the number of items.
  • The quality of the keyCompleted unique article in all sources - mapping is set up in a day. Empty articles mean a vague comparison by name and manufacturer plus manual proofing of the first batch.
  • File statusThe flat machine table is read immediately. Excel with merged cells, subheadings inside the table, and variable order of columns is parsed by separate code and checked on each run.
  • Cross section of the assortmentSources do not intersect - each lives separately. The same position in three prices adds a layer of rules for price, balance and priority, and each rule must be tested on real differences.
  • Where are the characteristicsIndividual columns become attributes almost verbatim. When everything is merged into a name like "Drill 650 W Blue", the analysis is written for each supplier separately and never works flawlessly.
  • Volume and frequencyA few thousand items once a day is a normal schedule. Tens of thousands several times a day require transmission of only changed lines, queues and dilution with peak hours.
Cases

Tasks and results in numbers — all metrics measured by us

wholesale supplier of goods from China, B2B catalog of almost 6,000 items

Task
Maintain a wholesale assortment on the website, which the business client sorts through himself: a large catalog, clear delivery conditions, and a short path from finding an item to an application.
Solution
Store on OpenCart 3 with two language versions and a separate sitemap for each. Search markup on the site, breadcrumbs and a block of questions and answers in the micromarkup. Cash on delivery and cash on delivery, four delivery methods, chat and callback widget.
Result
Measured on 07/31/2026. There are 5,830 products in the catalog, and the figure is confirmed in two independent ways: the regular search of the platform gave 58 pages of 100 positions and another 30, the site map — 6,234 addresses for each of the two languages, a total of 12,468. The first response of the server is 506.9 ms, the full download is 552.7 ms with 333.1 KB of HTML. We call the limit directly: we measured the catalog and speed, not the import work. The figure is useful to others — it shows what scale it no longer makes sense to update in one run.

wholesale store of cosmetics for the beauty industry, catalog of almost 4,000 items

Task
Compile a catalog for professional buyers: navigation by brands and categories, wholesale prices, fast registration on a large assortment.
Solution
An OpenCart store with a canonical sitemap declared in robots.txt. Payment through a payment service, cash on delivery and to a bank account, two delivery services. Structured store data with contacts and schedule, two language versions with switch.
Result
Measured on 07/31/2026. 3,947 products, 166 brands and 47 categories — 4,167 addresses in the canonical site map, two consecutive measurements gave the same number. TTFB 576.8ms at 192.4KB HTML. And a defect was found, exactly from the class that is born with several parallel data sources: an outdated map with 7,782 records lives nearby, which has only 2,755 unique addresses (2,454 repeated three times) and approximately 2,706 commercial ones against 3,947 in the canonical one. Simultaneously duplicated and incomplete.
What we need from you

We can't start without this — best to prepare in advance

  1. Real prices from all suppliers as you receive them - with postage, weird file names and all.
  2. Price markup and rounding rule, including category exceptions, if any.
  3. Assortment crossing decisions: whose price is the main one, whose balance is the main one, whether the balances of different suppliers are added up.
  4. A list of fields that you control with your hands and which prices cannot be touched.
  5. Access to the site, database and hosting, as well as a place for a copy of the directory for a test run.
  6. One person to be in charge of the directory after launch: Unmatched rows must be parsed weekly by someone.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

There are no articles in the price list - what to do?

This is the main problem, and it is solved worse than we would like. Without a single key, items are matched by name and manufacturer by fuzzy comparison, and some by hand through an intermediate table of correspondences. Once matched, the position is then recognized by itself, so the main load falls on the first launch. But to be honest: asking the supplier for articles is cheaper than any development, and you should start with this letter.

Will the import overwrite my descriptions and photos?

It shouldn't, and it's a setting, not a side effect. We divide the fields into two groups before starting work: what comes from the price (price, balance, availability), and what belongs to the site forever (your title, your description, your photo). The second group is not overwritten by any run. If the list is not specified explicitly, the default behavior of most ready-made modules is the opposite - they erase everything they find in the file.

The same product at three prices - at what price should I buy it?

According to the rule you set: the lowest price, a specific priority supplier or the one who currently has a balance. It must be approved before development, because the structure of the comparison depends on it. Separately, we agree on the balances: sum them by source or take the maximum. And one more question, which is usually mentioned late: what to do when one supplier removed the goods, and the other did not.

What will happen to products that have disappeared from the price list?

By default, we hide, not delete. A deleted position takes with it an address that could already be in the index, and instead of the page that brought conversions, you get a 404. The hidden one remains in the database and is returned in one move when the product appears again. Removal makes sense except as a scheduled cleaning once a year, when it is clear that the supplier no longer carries this line.

Will the site not put a big price?

It won't work if you don't try to swallow the file whole. The import goes in batches with pauses according to the schedule, and the rows that have not changed since the last time are not touched at all - the difference between "updated 5,000 products" and "updated 120" is right here. We measured a wholesale catalog of 5,830 products - approximately the limit after which a full run at a time on an average hosting is felt in the speed of the site.

How will I see that the run is correct?

From the report after each run: added, updated, hidden, not mapped and for what reason. The last line is the most important — it shows where the price has changed and where your attention is needed. We send the report to the post office or messenger, because no one goes to the admin office for it. The boundary is also fair: the log confirms that the run worked, not that the vendor's data is correct.

Will balances after import become accurate?

As accurate as the price is accurate. Import does not correct someone else's account: if the supplier gives an outdated balance, the site will quickly and accurately show the outdated balance. Plus periodicity — there is a window between two runs in which the position is ordered after it has ended. This is reduced by the refresh rate, not the architecture, and never fully disappears.

Will new products immediately appear in the search?

Appearing in the directory and in the sitemap is not the same as in search. Google directly writes that the sitemap helps to find pages, but does not guarantee either crawling or indexing. A card assembled from a price line with only a name and a price competes with a dozen of the same cards in nearby stores. Imports make pages exist, demand for them gives content.

Will the filter in the category work after import?

It will work if the characteristics come in separate columns. When the parameters are merged into a name, we parse the name — and this parsing is never perfect, some of it has to be done by hand. The second thing you should know in advance: filters produce combinations of addresses, so canonical addresses and rules for robots are laid simultaneously with import, otherwise thousands of almost identical pages will go to the index.

Send supplier prices as you receive them.

In response, file parsing, mapping scheme, update rules and assessment of works by stages. If it is clear from the files that it is necessary to ask the supplier for articles first, we will say so in the very first letter.

From measured casesMeasured on 07/31/2026

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.