Convert product data to an import file
schema_normalizeConverts a product table (supplier list, ERP or shop export; CSV, TSV or XLSX up to 20 MiB) into an import file for Shopify (product CSV), Google Merchant Center, WooCommerce (built-in importer) or the properties of a custom JSON Schema. Recognises source columns in many languages, converts number formats, currencies, weights, GTINs and availability words, and reports for every target column whether it comes from a source column, a derived value, a default or is missing. Shopify and Google output is checked with the platform feed rules. Unclear values stay empty with an issue. Returns a summary, the mapping, issues and the CSV text.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | The product table. A file uploaded in ChatGPT (object with download_url and file_id). | |
| target | No | Target format: shopify_products_csv, google_merchant, woocommerce_products_csv or json_schema (then give options.json_schema). | shopify_products_csv |
| options | No | Optional NormalizeOptions, e.g. {"defaults": {"brand": "Acme", "condition": "new"}, "default_currency": "EUR", "column_overrides": {"price": "VK netto"}, "max_output_rows": 500} or {"json_schema": {"properties": {"item_no": {"type": "string", "x-canonical": "sku"}}}}. Schema: /v1/schemas/schema-normalize-options. | |
| file_url | No | The product table. Public URL of the file (http/https). Google Drive, Google Sheets and Dropbox share links are converted to direct downloads. Max 20 MiB. | |
| filename | No | Original filename with extension (e.g. prices.xlsx); used to detect the format. | |
| file_path | No | Local file path; only allowed when the server runs locally over stdio. | |
| file_text | No | The product table. The table as CSV or TSV text, header row first (e.g. 'SKU;Price;Currency\nA1;12.50;EUR'). | |
| file_base64 | No | The product table. File content as Base64 (standard alphabet). Max 20 MiB decoded. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||