Wishlist Import Guide
This guide explains how to import wishlist data into the system from a CSV file.
Overview
The wishlist import feature allows you to bulk import customer wishlist data into the system through a CSV file. The system will automatically:
- ✅ Analyze and validate data
- ✅ Verify products and customers exist in Shopify
- ✅ Automatically create wishlists for new customers
- ✅ Add products to existing customer wishlists
- ✅ Skip duplicate products
Import Process
Wishlist import is performed in 2 steps:
Step 1: CSV Analysis (Analyze)
- Upload CSV file to the system
- System validates and verifies each row of data
- Receive a report on valid and invalid rows
- View detailed errors for each invalid row
Step 2: Data Import (Import)
- After successful analysis, preview the data that will be imported
- Confirm import to begin the data import process
- Monitor progress and receive results report
CSV File Format
Your CSV file needs to have the following columns:
Required Columns
Each data row MUST HAVE at least one of the following pairs:
To identify Product:
product_idORproduct_handleproduct_id: Product ID in Shopify (can be GID:gid://shopify/Product/123456or just number:123456)product_handle: Product handle (e.g.,my-awesome-product)
To identify Customer:
customer_idORcustomer_emailcustomer_id: Customer ID in Shopify (can be GID:gid://shopify/Customer/789012or just number:789012)customer_email: Customer email (e.g.,[email protected])
Optional Columns
variant_id: Product variant ID (if not provided, system will automatically select the first variant)added: Date added to wishlist (format: ISO 8601 or any valid date format. If not provided, system will use current date)
Accepted Column Names
The system automatically recognizes the following column names (case-insensitive, allows spaces and special characters):
Product:
product_id,productid,Product ID,Product_IDproduct_handle,producthandle,handle,Handle
Customer:
customer_id,customerid,user_id,Customer ID,Customer_IDcustomer_email,customeremail,email,user_email,useremail,Email
Variant:
variant_id,variantid,Variant ID,Variant_ID
Date:
added,created,Added,Created,date_added,created_at
CSV File Examples
Example 1: Using Product ID and Customer Email
product_id,customer_email,variant_id,added
gid://shopify/Product/123456789,[email protected],gid://shopify/ProductVariant/987654321,2024-01-15
123456789,[email protected],,2024-01-16
Example 2: Using Product Handle and Customer ID
product_handle,customer_id
my-awesome-product,gid://shopify/Customer/111222333
another-product,111222333
Example 3: Complete CSV File
product_id,product_handle,customer_id,customer_email,variant_id,added
123456789,,gid://shopify/Customer/789012,[email protected],gid://shopify/ProductVariant/111,2024-01-15T10:30:00Z
,my-product,789012,,,2024-01-16
Validation Rules
The system will check and reject invalid data rows with the following reasons:
❌ Missing Required Information
- "Missing product_id and product_handle": Both
product_idandproduct_handleare missing - "Missing customer_id and customer_email": Both
customer_idandcustomer_emailare missing
❌ Product Not Found
- "Product not found in Shopify": Product does not exist in your store
❌ Invalid Variant
- "Product has no variants": Product has no variants (system will automatically use first variant if variant_id is invalid)
❌ Customer Not Found
- "Customer not found in Shopify": Customer does not exist in your store
Import Behavior
New Customer
- Create new wishlist for customer
- Add all products from CSV file to wishlist
- Create new customer record in the system
Existing Customer
- Find existing customer wishlist
- Only add products NOT ALREADY in wishlist (skip duplicates)
- Keep existing products in wishlist unchanged
Variant Handling
- If
variant_idis provided and valid: use that variant - If
variant_idis invalid or not provided: automatically select first variant of the product - If product has no variants: row will be rejected
Added Date Handling
- If
addedis provided: use that date (system will parse and convert to ISO 8601) - If not provided: use current date/time when importing
Limitations and Notes
⚠️ Important Notes
-
Rate Limiting: System processes data in batches to avoid exceeding Shopify API limits. For large files, the import process may take time.
-
Duplicate Prevention: System automatically skips duplicate products when importing. If a product already exists in the wishlist, it will not be added again.
-
Variant Selection: If you don't specify
variant_id, the system will automatically select the first variant of the product. Ensure your products have at least one variant. -
Email vs ID: If you use email, the system will search for customers by email. Ensure the email is accurate and the customer has been created in Shopify.
-
Encoding: CSV files should use UTF-8 encoding to avoid special character errors.
📊 Performance
- Batch Size: System processes 10 data rows in parallel each time
- Delay: 150ms delay between batches to ensure rate limits are not exceeded
- Import Speed: For a 100-row file, estimated import time is approximately 2-3 minutes
Error Handling
Common Errors and Solutions
1. "No file uploaded"
- Cause: No file was uploaded
- Solution: Ensure you have selected a CSV file before submitting
2. "Missing product_id and product_handle"
- Cause: Data row is missing product information
- Solution: Add at least one of:
product_idorproduct_handle
3. "Product not found in Shopify"
- Cause: Product does not exist in store
- Solution:
- Verify
product_idorproduct_handleis correct - Ensure product still exists and has not been deleted in Shopify
- Verify
4. "Customer not found in Shopify"
- Cause: Customer does not exist in store
- Solution:
- Verify
customer_idorcustomer_emailis correct - Ensure customer has been created in Shopify Admin
- For email, ensure email is accurate (case-sensitive, no spaces)
- Verify
5. "Invalid JSON format in dataToImport"
- Cause: Import data is not in valid JSON format
- Solution: This is a system error, please contact support
Real-World Examples
Example 1: Import wishlist from old system
You have a CSV file from an old wishlist system with format:
product_id,customer_email,added
123456789,[email protected],2024-01-15
123456789,[email protected],2024-01-16
987654321,[email protected],2024-01-17
Result:
- Create wishlist for
[email protected]with 2 products (123456789 and 987654321) - Create wishlist for
[email protected]with 1 product (123456789)
Example 2: Add products to existing wishlist
You have a CSV file with a customer who already has a wishlist:
product_id,customer_id
111222333,789012
444555666,789012
Result:
- If products 111222333 and 444555666 are not in wishlist → Add them
- If already exist → Skip (don't add duplicates)
Example 3: Import with Product Handle
product_handle,customer_email
my-product-1,[email protected]
my-product-2,[email protected]
Result:
- System will find products by handles
my-product-1andmy-product-2 - Create wishlist for customer and add both products
Best Practices
✅ Recommendations
- Always start with Analyze: Analyze CSV file before importing to catch errors early
- Verify data: Ensure all product_id/product_handle and customer_id/customer_email are valid
- Backup data: Before importing large files, backup current data
- Test with small file: Test with 5-10 rows before importing large files
- Use GID format: Use GID format (
gid://shopify/Product/123) for IDs to ensure accuracy - Date format: Use ISO 8601 format (
2024-01-15T10:30:00Z) foraddedfield
❌ Avoid
- Don't import files that are too large (>1000 rows) at once - split them up
- Don't use email if customer doesn't exist in Shopify yet
- Don't leave both
product_idandproduct_handleempty in the same row - Don't leave both
customer_idandcustomer_emailempty in the same row
Support
If you encounter issues when using the import feature:
- Review your CSV file according to the guidelines above
- Check detailed errors in the Analyze report to see which rows have issues
- Contact support: [email protected]
Note: This documentation is updated according to the latest version of the application. If you notice any discrepancies, please let us know.