Where data comes from
File upload, URL, FTP, JSON endpoint, a connected store, or by hand — product import vs price and stock sync, and updating by SKU.
Products can arrive four ways from a source. The choice is made once, and every subsequent run re-reads the same source. You can also add products without a source: by hand, by pasting rows, or from photos — see Without a source.
File upload
Upload a CSV directly. Your original filename is kept, so a month later it is still obvious which export it was. A re-run of an upload-sourced import needs a fresh upload — there is nothing for MarketplaceHub to go and fetch.
URL
A location your supplier or ERP publishes to. Each run collects whatever is there at the time, which makes this the usual choice for a scheduled import.
FTP
The same as a URL, with credentials. Each run connects and collects the current file.
JSON endpoint
An API that returns your products. It is read like any other feed — the shape is mapped to system fields the same way a CSV's columns are, so there is no middleware to write.
Or skip files entirely
If your products already live in a connected Shopify, Etsy, Amazon or eBay account, or in Google Merchant Center, import from there directly. No export step, and products arrive carrying the category the source marketplace already filed them under — which lets classification be skipped entirely when you are publishing back to the same platform and country. See Marketplace integrations.
Without a source
The + Add products menu on the Products page adds products with no file to fetch:
- Create a product — one product, typed in a form: photos, title, SKU, folder, hub price, cost, stock, channels, and optional variants.
- Paste rows — up to 200 rows copied from Excel or Google Sheets. Each row is checked like a hand-made product. A SKU you already have is skipped.
- Start from photos — up to 10 photos. AI writes a draft product from them, one AI credit per product, and you check every field before saving.
All three go the same way as an import: one staged row per channel you tick, then AI classification, then Needs review. Nothing is published until you approve it. They are kept in their own manual journey for each channel, never in the channel's import journey.
Products you already have
A spreadsheet, feed or store import started from the Products page's Import products panel adds new products only by default: a row whose SKU is already live, or already staged by another import, is skipped and listed in the run's Download list.
For a spreadsheet or feed you can instead choose Also update products with the same SKU and tick what to update: Title, Description, Photos, Price and Stock.
- Title, description and photos are written to each channel listing. This is refused when another system owns the catalogue.
- Price sets the hub price. A listing with its own price keeps it.
- Stock sets the quantity.
- A variant SKU gets stock only.
- A pull from a connected store never updates existing products.
- The first run with these fields ticked only checks: it reads the whole file, changes nothing, and lists what would change, with the value before and after. Starting the import from that list runs it for real. Later scheduled runs do not ask again.
Checks before the AI runs
When a file import finishes, the rows it staged are checked before you start the AI: an empty title; a price that is missing, unreadable or 0; a quantity below 0 or not a whole number; a barcode of 11 digits, or of 12, 13 or 14 digits with a wrong check digit (EAN-8, UPC-E and ISBN-10 are left alone); an image that is not an http or https address; a SKU in scientific notation, which a spreadsheet produces; and a SKU repeated in the file, where the last row wins. The check only reads, costs nothing and never blocks.
A note on fetched URLs
URLs you supply are fetched through a path that resolves the host and refuses to connect to private or reserved addresses. This is checked at connection time and on every scheduled re-fetch, including after redirects, so a host cannot pass validation during setup and later resolve somewhere internal.
Two kinds of import
There are two, and they are configured separately because they do different work:
- Product import — brings products in, classifies them and publishes listings.
- Price and stock sync — updates numbers on products that already exist. No AI, no publishing. See the price and stock feed.