Bulk imports
Create or update records by the thousand with file uploads instead of one call at a time — products, price/stock, orders and customers. The advanced companion to Sync your catalog and Manage stock & prices.
The pattern
Every importable entity follows the same two steps:
- Get the template —
GETthe upload endpoint to retrieve the expected column headers (they vary by org, e.g. custom attributes). - Upload the file —
POSTa CSV asmultipart/form-data. Large files are processed asynchronously.
Products
# 1. Column template
curl "https://zopping.com/api/catalogue-service/product-upload?organizationId=<org-id>" \
-H "Authorization: Bearer $ZOPPING_TOKEN"
# 2. Upload
curl -X POST https://zopping.com/api/catalogue-service/product-upload \
-H "Authorization: Bearer $ZOPPING_TOKEN" \
-F "organizationId=<org-id>" -F "file=@products.csv"
Other entities
| Import | Template (GET) | Upload (POST) |
|---|---|---|
| Products | /api/catalogue-service/product-upload | same |
| Orders | /api/order-service/order-upload | /api/order-service/order-file |
| Customers | /api/customer-service/customer-upload | same |
| Customer tags | — | /api/customer-service/customer-tag-file |
Use your own identifiers (clientItemId / clientId) as columns so rows map to
your system and re-uploads update rather than duplicate.
Async processing
Bulk jobs are queued and processed in the background, so a successful upload means
accepted, not finished. Reconcile afterwards by reading the affected records
(e.g. list products with your clientIds) rather than
assuming row-by-row success.
Good practices
- Always fetch the template first — columns differ per organization.
- Chunk very large files for easier error isolation.
- Re-read to confirm; treat the upload response as an acknowledgement.