Prepare XML Source Data Files
Prepare Product data for the XML Source Platform using the required products.xml filename, product/item hierarchy, and 43-field record structure.
Prepare XML Source Data Files
Section titled “Prepare XML Source Data Files”When XML is selected as the Source Platform, Next-Cart reads Product data from products.xml through File Upload. This Source option is handled through Custom Service. The included XML file workflow migrates Products only unless additional entity handling has been explicitly approved and developed for the project.
Keep the XML declaration, root element, record wrapper, element names, and element order defined below. Change the values inside the Product elements without changing the structure that Next-Cart uses to recognize records.
File scope
Section titled “File scope”The XML structure below covers Products. Additional XML structures do not add Customers, Orders, or other entity types unless that handling has been explicitly included in the approved Custom Service scope and developed for the migration.
If the project requires additional entity types, non-standard fields, relationship reconstruction, or other custom logic, define those requirements before execution. Use Prepare Custom Service Requirements to document the additional work.
Download the sample file
Section titled “Download the sample file”Use the XML Product sample as the starting structure. Replace all sample records with your own Product data, preserve the structure below, and save the upload as products.xml.
Required XML structure
Section titled “Required XML structure”| Requirement | Required format |
|---|---|
| Source Platform | XML |
| Migration Service | Custom Service |
| Included file scope | Products |
| Connection method | File Upload |
| Filename | products.xml |
| Encoding declaration | <?xml version="1.0" encoding="UTF-8"?> |
| Root element | <product> |
| Product record | One <item> element per Product or Product variant |
| Fields per record | 43, in the required order |
Use this hierarchy for every file:
<?xml version="1.0" encoding="UTF-8"?><product> <item> <product_id></product_id> <sku></sku> <price></price> <status></status> <weight></weight> <length></length> <width></width> <height></height> <manage_stock></manage_stock> <qty></qty> <name></name> <description></description> <short_description></short_description> <barcode></barcode> <manufacturer></manufacturer> <categories></categories> <images></images> <option_name_1></option_name_1> <option_value_1></option_value_1> <option_name_2></option_name_2> <option_value_2></option_value_2> <option_name_3></option_name_3> <option_value_3></option_value_3> <attribute_name_1></attribute_name_1> <attribute_value_1></attribute_value_1> <attribute_name_2></attribute_name_2> <attribute_value_2></attribute_value_2> <attribute_name_3></attribute_name_3> <attribute_value_3></attribute_value_3> <attribute_name_4></attribute_name_4> <attribute_value_4></attribute_value_4> <attribute_name_5></attribute_name_5> <attribute_value_5></attribute_value_5> <attribute_name_6></attribute_name_6> <attribute_value_6></attribute_value_6> <attribute_name_7></attribute_name_7> <attribute_value_7></attribute_value_7> <attribute_name_8></attribute_name_8> <attribute_value_8></attribute_value_8> <attribute_name_9></attribute_name_9> <attribute_value_9></attribute_value_9> <created_at></created_at> <updated_at></updated_at> </item></product>Repeat the complete <item>...</item> block for each additional Product or Product variant. Do not rename, remove, add, or reorder the Product field elements. When a field has no value, keep the element and leave it empty.
Supported Product fields
Section titled “Supported Product fields”| Field group | Fields |
|---|---|
| Product identity, pricing, status, dimensions, stock, and content | product_id, sku, price, status, weight, length, width, height, manage_stock, qty, name, description, short_description, barcode, manufacturer, categories, images |
| Product options | option_name_1, option_value_1, option_name_2, option_value_2, option_name_3, option_value_3 |
| Product attributes | attribute_name_1 through attribute_name_9, paired with attribute_value_1 through attribute_value_9 |
| Timestamps | created_at, updated_at |
Format Product records
Section titled “Format Product records”- Use one
<item>for each Product or Product-variant record. - Variants of the same Product can use the same
<product_id>with different<sku>and option values. - Keep option and attribute name/value elements aligned by their numeric suffix.
- Leave unused fields as empty elements instead of removing them.
- In
<categories>, separate multiple category entries with commas and use>for hierarchy where needed. - In
<images>, separate multiple image URLs with commas. - Escape XML-reserved characters inside values so the document remains well formed, for example
&for&and>for>where escaping is required. - Use numeric 0 or 1 values for
<status>and<manage_stock>rather than text labels. - Use
YYYY-MM-DD HH:MM:SSfor<created_at>and<updated_at>when timestamps are provided.
Prepare the file
Section titled “Prepare the file”- Create or open
products.xmlwith the UTF-8 XML declaration. - Keep
<product>as the single root element. - Use one complete
<item>block for each Product or Product variant. - Keep all 43 field elements inside every
<item>in the required order. - Replace element values with the Product data that should be migrated and keep unused elements empty.
- Escape XML-reserved characters in values and save the file as UTF-8 XML with the filename
products.xml. - Validate that the XML is well formed and that every
<item>contains the complete field structure before upload.
Verify before upload
Section titled “Verify before upload”| Check | Pass condition |
|---|---|
| Filename | products.xml |
| Declaration | The file begins with <?xml version="1.0" encoding="UTF-8"?>. |
| Root | One <product> root contains all Product records. |
| Record wrapper | Each Product or variant uses one <item>. |
| Fields | Every <item> contains all 43 fields in the required order. |
| Empty values | Unused fields remain as empty elements. |
| XML syntax | Reserved characters are escaped and the document is well formed. |
| Options and attributes | Each numbered name/value pair remains aligned. |
| Timestamps | Supplied timestamps use YYYY-MM-DD HH:MM:SS. |
Store identity for file-based migrations
Section titled “Store identity for file-based migrations”XML does not require a Source Store URL. For a paid migration, the Target URL therefore locks when the Target setup provides one, Connect Stores is saved, and the migration advances to Configuration. Later migration activity can use another valid products.xml file, including one prepared from a different originating store, but it cannot replace a locked Target Store.
See Store URL Locking and Store Identity for the complete rule.
If Product progress is 0/0
Section titled “If Product progress is 0/0”A 0/0 Product result means Next-Cart did not recognize Product records from the uploaded XML structure.
Check the filename, XML declaration, <product> root, repeated <item> blocks, element names, element order, and empty-element preservation. Correct the file and upload it again. If all structural checks pass but Product progress remains 0/0, use Troubleshoot Connection Setup and provide the filename, a privacy-safe example <item> block, and the migration result.
File Upload is migration input, not recurring synchronization
Section titled “File Upload is migration input, not recurring synchronization”Selecting XML provides a file-based Source for a migration. It does not create a recurring synchronization feed between the file and the Target Store. The included standard XML workflow recognizes Products from products.xml when the required Next-Cart structure is used.
If the project needs scheduled imports, repeated external-feed processing, Customers, Orders, another data type, non-standard relationships, or business logic beyond the standard Product XML structure, define that requirement through Custom Service.
Next Steps
Section titled “Next Steps”Continue with Upload Source Data Files to prepare and validate the file for the Source connection.