Supplier Catalog Converter Pro
Pricing
from $1.00 / 1,000 product row converteds
Supplier Catalog Converter Pro
Turn supplier price lists (CSV, TSV, XLSX, text PDF) into a validated product dataset plus WooCommerce and Shopify import CSVs. GTIN checks, duplicate and variant handling, a review queue, nothing invented.
Pricing
from $1.00 / 1,000 product row converteds
Rating
0.0
(0)
Developer
PRIVATEX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
Turn a supplier's price list (CSV, TSV, XLSX or text-based PDF) into clean product rows, plus ready-to-import WooCommerce and Shopify CSV files, a validation report and a review queue. Missing data stays empty: no SKU, GTIN, brand, price, image or stock level is ever invented.
Who needs it
- Online shops that receive supplier catalogs in Excel or PDF and re-type them into WooCommerce or Shopify.
- Agencies and marketplace operators onboarding many suppliers' files in different layouts and languages.
What it does
- Reads the file:
- CSV and TSV (comma, semicolon or tab; quoted multi-line cells; UTF-8 with or without BOM; windows-1254 and other encodings).
- XLSX: every sheet; the header row is found even below title rows; formulas use their stored results.
- Text-based PDF tables, including catalogs with several "SKU | price" column pairs side by side.
- Finds the columns: SKU, name, description, brand, GTIN/EAN/UPC, price, sale price, currency, category, size/colour/material, parent/style, stock, weight and image.
- Header names are matched in English, Turkish, German, Spanish and French.
- Old/previous and change/percentage price columns are skipped (for example "Old List Price" vs "New List Price").
- Every decision is listed in the validation report. You can override any of them with
columnMapping.
- Checks every row:
- GTIN check digits are verified.
- Prices like
1.234,56 €and$1,234.56are parsed. Text such as "Inquire" is never turned into a price. - Exact duplicate rows are merged.
- The same SKU with different data goes to review. Both rows are kept; nothing is merged unless every product field (name, description, brand, GTIN, MPN, price, sale price, currency, category, parent, options, stock, weight, images) is identical.
duplicateConflictFieldslists what differs, and a stock difference is codedDUPLICATE_SKU_STOCK_DIFFERS. - A sale price that is filled in but is not a usable number (text or negative) is flagged
SALE_PRICE_NOT_NUMERICand goes to review, instead of being dropped silently. - GTINs in Excel number cells lose their leading zeros (UPC
012345678905becomes12345678905). The Actor adds back at most one or two zeros, only if the check digit then validates, marks the rowGTIN_LEADING_ZEROS_RESTOREDand sends it to the review queue: a wrong number can pass the check digit by chance, so please confirm the restored GTIN. Otherwise the value is reported asGTIN_INVALID. GTINs stored as text are never changed. - A price read from ambiguous "1.250"-style text that sits 50× away from the catalog median goes to review.
- Groups variants (size, colour, material) by the supplier's parent/style code.
- Writes the import files following the platforms' documented headers (checked 2026-10-30).
- WooCommerce:
- Type, SKU,
GTIN, UPC, EAN, or ISBN, Name, Published, … Regular price, Sale price, Categories, Images, In stock?, Stock, Parent, Attribute 1–3. - Products are drafts (
Published = -1) unless you choose otherwise.
- Type, SKU,
- Shopify:
- Uses the current template: Title,
URL handle, Description, Vendor, … SKU,Barcodes, Option1–3, Price, Compare-at price, Inventory quantity,Product image URL. - Variants share a URL handle.
- Products are drafts unless you choose
active.
- Uses the current template: Title,
- For every target column the report says MAPPED, DEFAULTED, BLANK or UNSUPPORTED. For example, the default WooCommerce importer has no brand column.
- Cells starting with
=,+,-or@(text, not real numbers) are neutralised against spreadsheet formula injection. The count is in the report.
- WooCommerce:
What it does NOT do
- No OCR. Scanned PDFs (pages with no text layer) are reported as
OCR_REQUIRED. - No writes to your shop. It never connects to WooCommerce or Shopify; you import the CSV yourself.
- No made-up data. No currency conversion, no generated SKUs or barcodes, no guessed brands, images or stock.
- No legacy
.xls. Save Excel 97-2003 files as.xlsxor CSV first.
Start in 60 seconds
- Press Start without giving a file. It converts a small synthetic catalog for a fictional brand. The demo shows variants, duplicates, an invalid GTIN and the review queue. No conversion events are charged for demo runs.
- Open WooCommerce import CSV, Shopify import CSV and Review queue in the Output tab.
- Paste the HTTPS link to your supplier file, or pick a key-value store record. Set the catalog currency if the file doesn't state it, then run.
Example input
{"fileUrl": "https://example.com/supplier/price-list-2026.xlsx","defaultCurrency": "USD","wooPublished": "draft","shopifyStatus": "draft"}
Example output row
This row is real: cloud run rZbPV6ENMfPEHfUiy, 2026-10-30, a public Broilmaster retail price list (XLSX). The description field is omitted here for brevity.
{"sku": "P3PK5N","name": "Package 1, Stainless Cart/Base, one Side Shelf with Stainless Bracket, Natural","gtin": "720968971470","price": 2109,"currency": "USD","currencySource": "user-default","brand": null,"stock": null,"weight": "116","issues": [],"needsReview": false,"source": { "file": "2026-27-Broilmaster-Retail-Price-List-Effective-10-1-26-Excel.xlsx", "sheet": "BRM Price List (List Format)", "row": 3 }}
Two real files were converted in the cloud:
- the Broilmaster XLSX: 477 rows,
New List Pricechosen overOld List Price, 0 rows needing review; - a public 26-page Gilson PDF price list: 5,218 rows from 5 side-by-side column groups, 228 rows in the review queue ("Inquire" prices and SKUs listed twice with different prices).
Output
| Where | What |
|---|---|
| Dataset | One row per product: sku, name, description, brand, gtin, gtinRaw, price, salePrice, currency, currencySource, options, stock, issues, needsReview and source (file, sheet, row, or PDF page/line). |
WOOCOMMERCE_CSV | Import file for the WooCommerce Product CSV Importer. |
SHOPIFY_CSV | Import file for Shopify (Products → Import). |
REVIEW_QUEUE_CSV | Rows a person should check first, with the reasons. |
VALIDATION_REPORT | Column-mapping decisions, per-column export status, issue counts, variant groups and notes. |
OUTPUT | Run status: SUCCEEDED, PARTIAL_RESULT, EMPTY_INPUT or FAILED, with an error code such as INPUT_INVALID, ACCESS_DENIED, UNSUPPORTED_FORMAT, PARSE_ERROR, OCR_REQUIRED or INPUT_TOO_LARGE. Also counts and billing. |
All CSV files are UTF-8 with a BOM, so Excel shows non-English characters correctly.
Pricing
Pay per event:
| Event | Price | When it is charged |
|---|---|---|
product-row-converted | $0.001 | Once per product row delivered to the dataset and the export files. |
catalog-converted | $0.03 | Once per run, when at least one row was delivered. |
apify-actor-start | $0.00005 | Once per run, by Apify. |
Examples:
- 500 rows: $0.53.
- 5,000 rows: $5.03.
Platform usage is included.
You are not charged for:
- exact duplicate rows;
- empty rows;
- failed runs;
- demo conversion events.
The Actor respects your maximum cost per run: it converts only as many rows as the limit allows, keeps room for the catalog event and reports the rest as skippedForChargeLimit.
Limits and security
| Setting | Default | Maximum |
|---|---|---|
Rows (maxRows) | 5,000 | 50,000 |
File size (maxFileSizeMb) | 20 MB | 100 MB |
PDF pages (maxPdfPages) | 50 | 300 |
- File URLs must be HTTPS. Private, internal, loopback and cloud-metadata addresses are refused, also after redirects.
- Oversized and compressed-bomb downloads are cut off.
- The Actor runs with limited permissions. It can read only the key-value store you pick.
- Your file is processed in the run and not stored anywhere else.
Known limitations
- PDF table reading relies on a recognisable header row ("SKU", "Item", "Model No.", "Price", "US$" …). It handles single tables and repeated column groups. Complex layouts (merged cells, prices on a different line from the SKU) may need a CSV/XLSX export from the supplier.
- When the file has no name/title column, the description column is used as the product name; the validation report says so.
- WooCommerce variations are linked only when the file has a parent/style code. Variants found by product name alone are exported as simple products, and the report explains why.
- Shopify and WooCommerce import prices in your store currency. Check that it matches the catalog currency.
Support
Use the Issues tab on this Actor's page.