What is Import?
Import lets you upload questions and answers from CSV files to bulk add data, migrate from other systems, or restore backups.
Availability
Available on Pro and Ultra plans. The Free plan does not include this feature.
Two-step import process
Overview
Import is a two-step process:
- Step 1: Import Questions — Upload questions first
- Step 2: Import Answers — Upload answers that link to imported questions
Important: Always import questions before answers. Answers require existing questions to link to.
Step 1: Importing Questions
Required CSV columns
Your CSV must include these columns:
question — Question text (cannot be empty)
question_export_id — Unique identifier (must be unique across all rows)
productId — Shopify product ID (must exist in your store)
Optional CSV columns
You can include these columns:
- customerName — Customer name
- customerEmail — Customer email
- isPublished — Published status (true/false, defaults to false)
- createdAt — Creation date (ISO 8601 format, defaults to current date)
- votes — Number of votes (must be a number, defaults to 0)
- productType — Product type (auto-fetched from Shopify if not provided)
- productCategory — Product category (auto-generated if not provided)
- productTags — Product tags (auto-fetched from Shopify if not provided)
CSV format
examplequestion_export_id,productId,productType,productCategory,productTags,customerName,customerEmail,question,isPublished,createdAt,votes”q1″,”123456789″,”T-Shirt”,”T-shirt”,”summer,cotton”,”John Doe”,”john@example.com”,”What size should I order?”,”true”,”2024-01-15T10:30:00.000Z”,5″q2″,”987654321″,”Jeans”,”Jeans”,”denim,blue”,”Jane Smith”,”jane@example.com”,”Are these true to size?”,”false”,”2024-01-16T14:20:00.000Z”,0″q3″,”456789123″,””,””,””,”Anonymous”,””,”What material is this made from?”,”true”,”2024-01-17T09:15:00.000Z”,2
How to import questions
- Go to Import & Export in the app admin
- Find the “Import Data” section
- Select “Questions” from the Import Type dropdown
- Click the file upload area or drag and drop your CSV file
- Click “Upload and Import”
- Wait for processing
- Review the success message and any warnings
Validation rules
Required fields
- question_export_id — Cannot be empty, must be unique
- productId — Cannot be empty, must be a valid Shopify product ID
- question — Cannot be empty, must contain text
Optional fields
- isPublished — Must be “true” or “false” (case-insensitive), defaults to false
- createdAt — Must be valid ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ), defaults to current date
- votes — Must be a valid number, defaults to 0
- customerEmail — Must be valid email format if provided
- productType, productCategory, productTags — Auto-fetched from Shopify if missing
Auto-fetching product details
If productType, productCategory, or productTags are missing:
- The app fetches them from Shopify using the productId
- If the product doesn’t exist, these fields remain empty
- If fetching fails, the import continues without these details
Common errors
“Missing question_export_id”
- Solution: Ensure every row has a question_export_id value
“Missing productId”
- Solution: Ensure every row has a productId value
“Missing question text”
- Solution: Ensure every row has a non-empty question value
“Duplicate question_export_id ‘q1′”
- Solution: Each question_export_id must be unique. Check for duplicates in your CSV
“Invalid date format in createdAt”
- Solution: Use ISO 8601 format: 2024-01-15T10:30:00.000Z
“Invalid votes value”
- Solution: Votes must be a number. Remove any non-numeric characters
Step 2: Importing Answers
Required CSV columns
Your CSV must include these columns:
- question_export_id — Must match a question_export_id from your questions import
- answer — Answer text (cannot be empty)
Optional CSV columns
You can include these columns:
- productId — Product ID (for reference only, not validated)
- question — Question text (for reference only, not validated)
- authorName — Answer author name (defaults to empty string)
- authorEmail — Answer author email (must be valid format if provided)
- isPublished — Published status (true/false, defaults to false)
- createdAt — Creation date (ISO 8601 format, defaults to current date)
CSV format
examplequestion_export_id,productId,question,authorName,authorEmail,answer,isPublished,createdAt”q1″,”123456789″,”What size should I order?”,”Admin”,”admin@store.com”,”I recommend size M for most customers.”,”true”,”2024-01-15T11:00:00.000Z””q1″,”123456789″,”What size should I order?”,”Customer”,”customer@example.com”,”I ordered size L and it fits perfectly.”,”true”,”2024-01-15T12:00:00.000Z””q2″,”987654321″,”Are these true to size?”,”Shop Owner”,”owner@store.com”,”Yes, they run true to size.”,”true”,”2024-01-16T15:00:00.000Z”
How to import answers
- Ensure questions are imported first (see Step 1)
- Go to Import & Export in the app admin
- Find the “Import Data” section
- Select “Answers” from the Import Type dropdown
- Click the file upload area or drag and drop your CSV file
- Click “Upload and Import”
- Wait for processing
- Review the success message and any warnings
Validation rules
Required fields
- question_export_id — Must exist in your database (from a previous question import)
- answer — Cannot be empty, must contain text
Optional fields
- authorEmail — Must be valid email format if provided (e.g., user@example.com)
- isPublished — Must be “true” or “false” (case-insensitive), defaults to false
- createdAt — Must be valid ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ), defaults to current date
- authorName — Can be empty, defaults to empty string
Linking answers to questions
- Answers link to questions via question_export_id
- The question_export_id in your answers CSV must exactly match a question_export_id from your questions import
- If a question_export_id doesn’t exist, that row is skipped with an error message
- Multiple answers can link to the same question
Common errors
“No question found with ID ‘q1′”
- Solution: Import questions first. Ensure question_export_id values match exactly (case-sensitive)
“Missing question_export_id”
- Solution: Ensure every row has a question_export_id value
“Missing answer text”
- Solution: Ensure every row has a non-empty answer value
“Invalid email format”
- Solution: Ensure email addresses follow standard format: user@example.com
“Invalid date format in createdAt”
- Solution: Use ISO 8601 format: 2024-01-15T11:00:00.000Z
CSV formatting guidelines
Text fields
- Wrap text in double quotes: “John Doe”
- Escape double quotes inside text: “He said “”Hello”””
- Empty fields: “” or leave blank
Boolean fields
- Values: “true” or “false” (case-insensitive)
- Defaults: false if not provided
Date fields
- Format: ISO 8601 UTC: “2024-01-15T10:30:00.000Z”
- Must be valid date format
- Defaults: Current date if not provided
Number fields
- Plain numbers: 5, 10, 0
- No quotes around numbers
- Defaults: 0 for votes if not provided
Email fields
- Standard format: user@example.com
- Validated if provided
- Can be empty
Import process details
Processing order
- CSV file is uploaded
- File is parsed and validated
- Each row is processed sequentially
- Valid rows are imported
- Invalid rows are skipped with error messages
- Summary is displayed
Error handling
- Import continues even if some rows fail
- Failed rows are logged with specific error messages
- Up to 10 errors are shown in the warning banner
- Success message shows count of imported vs failed rows
Duplicate handling
- Questions: Duplicate question_export_id values are rejected
- Answers: Duplicate answers for the same question may be rejected (database constraint)
Best practices
1. Prepare your data
- Use consistent question_export_id values (e.g., q1, q2, q3)
- Verify all product IDs exist in Shopify
- Check email formats
- Validate date formats
2. Test first
- Test with a small file (5-10 rows)
- Verify import works correctly
- Check data appears as expected
- Then import the full dataset
3. Backup before importing
- Export current data before importing
- Keep backups of your CSV files
- Store backups in a safe location
4. Import in order
- Always import questions first
- Wait for questions import to complete
- Then import answers
- Verify question_export_id values match
5. Review errors
- Read all error messages
- Fix issues in your CSV
- Re-import corrected rows
- Don’t ignore warnings
6. File preparation
- Use UTF-8 encoding
- Save as CSV format (not Excel)
- Include header row
- Remove empty rows
Frequently asked questions
Can I import questions and answers in one file?
No. Import questions first, then answers in a separate file.
What happens if I import duplicate question_export_id values?
Duplicate questions are skipped with an error message. Each question_export_id must be unique.
Can I update existing questions by re-importing?
No. Import creates new questions. To update, delete the old question and re-import, or edit manually in the app.
What if a product ID doesn’t exist in Shopify?
The question is still imported, but product details (type, category, tags) won’t be auto-fetched. The product ID is stored as-is.
Can I import partial data?
Yes. You can import only questions, only answers, or import in batches.
What happens to answers if I delete a question?
Answers are automatically deleted when their question is deleted (cascade delete).
Can I use Excel to edit CSV files?
Yes, but save as CSV format (not Excel format) before importing. Ensure UTF-8 encoding.
Are there file size limits?
There are no hard limits, but very large files may take longer to process. Consider splitting into batches.
What if my CSV has extra columns?
Extra columns are ignored. Only recognized columns are processed.
Can I import answers without importing questions first?
No. Questions must exist before answers can be linked to them.
What encoding should I use?
Always use UTF-8 encoding to avoid character issues.
Can I import the same file twice?
Yes, but duplicate question_export_id values will be rejected. Use unique IDs for each import.
What happens if import fails partway through?
Valid rows are imported, failed rows are skipped. Review error messages and fix issues, then re-import failed rows.
Do I need to include all optional columns?
No. Only required columns are necessary. Optional columns provide additional data if available.
Can I import questions without customer information?
Yes. customerName and customerEmail are optional. Leave them empty if not available.
Troubleshooting
“Missing required CSV columns”
- Check your CSV includes all required columns
- Verify column names match exactly (case-sensitive)
- Ensure header row is present
“CSV file is empty or has no valid data rows”
- Check your CSV has data rows (not just headers)
- Verify file isn’t corrupted
- Check file encoding (should be UTF-8)
“CSV parsing error”
- Check CSV format is correct
- Verify no special characters break the format
- Ensure proper quoting of text fields
“No question found with ID ‘q1′”
- Import questions first
- Verify question_export_id values match exactly
- Check for typos or case differences
Import succeeds but data doesn’t appear
- Refresh the page
- Check if questions/answers are in the correct section
- Verify import completed successfully
Special characters appear incorrectly
- Ensure CSV uses UTF-8 encoding
- Check file encoding settings
- Re-save file with UTF-8 encoding
Quick reference
Questions import
| Field | Required | Format | Default |
|---|---|---|---|
| question_export_id | Yes | Text (unique) | – |
| productId | Yes | Text | – |
| question | Yes | Text | – |
| customerName | No | Text | Empty |
| customerEmail | No | Empty | |
| isPublished | No | true/false | false |
| createdAt | No | ISO 8601 | Current date |
| votes | No | Number | 0 |
Answers import
| Field | Required | Format | Default |
|---|---|---|---|
| question_export_id | Yes | Text (must exist) | – |
| answer | Yes | Text | – |
| authorName | No | Text | Empty |
| authorEmail | No | Empty | |
| isPublished | No | true/false | false |
| createdAt | No | ISO 8601 | Current date |