CSV import creates new products from a spreadsheet. You choose one attribute family, map each column to a product field or attribute, and run it. Each row is checked on its own, so failed rows don’t stop the others. Import only creates products. To change existing ones, use bulk editing.
In the admin
- Go to Catalog → Products and click Import CSV.
- Upload CSV: drop the file or click to choose it. The first row must be the column headers.
- Destination family: choose the family every row will be created in.
- Column mapping: for each column, choose a target. The targets are name (product name), slug (URL), status (draft/active/archived), one entry for each attribute in the family, or (skip). Columns headed
name,slugorstatusare mapped for you. - Preview (first 3 rows) shows the JSON that will be sent.
- Run: click Import N rows. You’ll see how many were created and up to 50 failed rows, each with its row number and reason.
A column must be mapped to name before you can import.
How cells are converted
| Attribute type | What to put in the cell |
|---|---|
| number, decimal | A number: 12, 12.5 |
| boolean | true, yes, y, 1 or on (any case) for true. Anything else is false |
| multiselect | Comma-separated option values: cotton, linen |
| select | One option value (the value, not the label) |
| date | YYYY-MM-DD |
| datetime | ISO 8601, e.g. 2026-10-07T09:00:00Z |
| json | Valid JSON. Cells that don’t parse are skipped |
| text, textarea, richtext, url, email | Taken as written. Rich text is Markdown |
Empty cells are skipped. Money and measurement values are objects, which a CSV cell can’t express, so set those afterwards with bulk editing or the API.
With the API
The importer calls POST /v1/products/bulk, which you can call directly to import from your own tooling:
curl -X POST https://api.minipim.com/v1/products/bulk \
-H 'Authorization: Bearer pim_…' -H 'Content-Type: application/json' \
-d '{ "products": [
{ "familyId": "FAMILY_ID", "name": "Canvas Tote",
"attributes": { "material": [{ "locale": null, "channel": null, "value": "cotton" }] } }
] }'
The response is { results: [{ ok, index, id? , error? }] }, with one entry per input row in order. Each row takes familyId and name, plus optional slug, status and attributes. The bulk endpoint doesn’t currently save tags or brandId, so set them afterwards. Use bulk editing for tags and a product update for the brand. Full reference: api.minipim.com/docs.
Rules and limits
- 500 rows per request. A larger file is rejected as a whole, so split it.
- Rows with an empty name are left out before sending.
- Rows are created as draft unless a status column says
activeorarchived. Status values must be exactlydraft,activeorarchivedin lowercase, or they’re ignored. - Required attributes are only enforced for rows imported as
active. Drafts can come in incomplete, and readiness shows what’s missing. See Product status. - Without a slug column, the slug is generated from the name. Slugs are unique within an organization, so make sure they’re unique in the file and don’t clash with existing products.
- Values for a closed select must match an existing option value. An open select adds new values to its options.
- Default values are applied to attributes a row leaves empty.
- Localizable attributes are written to the
en_USlocale. Every value is written as the shared value, not a channel-specific one. - Only the chosen family’s attributes can be mapped, so split a file that mixes product types and import each family separately.
- Import doesn’t create variants, categories, tags, media or identifiers.
- Each created product emits
product.createdfor webhooks.
See also
- Bulk editing — Change many products at once: set an attribute, status, tags or categories, move family, or delete. Up to 500 ids per API call, with a result for each product.
- Attribute families — Attribute families define which attributes a minipim product carries: attaching attributes, requirement overrides, ordering, moving products, deletion.
- Attribute types — All 19 minipim attribute types, the JSON value shape each one accepts, the validation options per type, and which types the admin can create, edit and default.
- Products — How minipim products work: family, slug, attribute payload and tags, plus creating, editing, duplicating and deleting them in the admin or via the API.