Importing data
Get supplier and catalog data into Foundry via CSV upload, FTP/FTPS, Google Sheets, or vendor SFTP push — with column mapping and scheduling.
Foundry pulls inventory and catalog data from your suppliers through inbound channels (sources). Every import method lands rows as ChannelSkus that you then link or promote into your catalog, and they all share one column-mapping model.
Import methods
| Method | How it runs | Best for |
|---|---|---|
| Manual upload | Drag a file into the admin (CSV, TSV, Excel .xlsx/.xls, or Apple Numbers) | One-off loads, first contact with a new supplier feed |
| FTP / FTPS | On-demand or scheduled fetch from a supplier server | Suppliers who host a feed file you pull |
| Google Sheets | Reads a published-to-web sheet, manual or scheduled | Feeds a supplier or team maintains in a spreadsheet |
| Vendor SFTP push | The vendor uploads to Foundry-hosted sftp.foundryims.com | Suppliers who prefer to push; no server for you to run — see Vendor SFTP feeds |
Supported pull protocols: FTP (plain, port 21), FTPS explicit (AUTH TLS, 21), FTPS implicit (990 — used by suppliers like Keystone), and SFTP (22). Google Sheets reads the published CSV export.
How an import runs
Imports process asynchronously. A manual upload or scheduled pull creates an import job; the file is parsed and each row is upserted as a ChannelSku on the target channel. Large files are chunked automatically, so a multi-hundred-thousand-row feed streams through in batches rather than timing out. The admin shows live progress (rows processed, created, updated, skipped) and a summary when the job finishes.
Newly imported rows are unmapped until you connect them to your catalog:
- Rows land as ChannelSkus with no variant link.
- Link an unmapped SKU to an existing variant, or promote one or more into a new product/variant.
- Once linked, every subsequent import keeps that variant’s cost and supplier quantity current.
Mapping rules can automate step 2 — active rules for a channel run against newly-imported SKUs to auto-link them. When an import completes, Foundry fires the import.completed webhook rather than thousands of per-row events, so external integrations get one signal to re-read.
Column mapping
A mapping tells Foundry which column in the file feeds which field. It’s a set of field → source pairs, where the source can be:
- A column name —
brand: "Manufacturer" - A fixed default for every row —
brand: "__default:Acme" - A formula over other columns (basic arithmetic) —
cost: "__formula:{Retail} * 0.85"
Two metadata markers handle awkward files: __delimiter__ for non-comma files (tab, pipe), and __headerRow__ to skip decorative rows above the real header.
Commonly mapped fields:
| Foundry field | Typical column names |
|---|---|
channelSku | sku, Item Number, product_sku |
inventoryQuantity | qty, Qty Available, stock |
cost | cost, wholesale, dealer_cost |
price | price, MSRP, retail |
map | map, MAP |
upc / gtin / mpn | upc, ean, barcode, mfg_part |
brand | brand, manufacturer, Vendor |
title | title, name, description |
imageUrl | image, Variant Image |
option1Name / option1Value | Option1 Name / Option1 Value |
groupKey | Handle (for Shopify exports) |
Match your mapping to the file’s real headers. The single most common import failure is a mapping that points at columns the file doesn’t contain — it completes with zero rows matched. Foundry surfaces a “matched 0 rows” warning when this happens; if you see it, open the mapping and compare its SKU column against the file’s actual header row.
Spreadsheet quirks handled for you
- Excel/Numbers files are converted to CSV, and Excel’s
="..."force-as-text cells are stripped, on every path (browser and server). - Stray quote characters (inch marks like
19") are tolerated. - Shopify exports put product-level fields (Title, Vendor, Handle) only on each product’s first row; Foundry detects the format and carries them forward to the variant rows.
Scheduling
FTP/FTPS and Google Sheets feeds can run on an hourly, daily, or weekly schedule. Foundry checks the remote file’s modification time and skips the import when the file hasn’t changed, so a scheduled feed only does work when there’s new data.
Related
- Vendor SFTP feeds — let suppliers push files to a Foundry-hosted SFTP account.
- Core concepts — the ChannelSku → variant model imports feed into.
- The Catalog management guide walks the admin UI for imports, linking, and promotion step by step.