Import and export data
Bring your existing feedback with you. Whether you're migrating from Canny, UserVoice, or a spreadsheet, import preserves your vote counts, dates, and history. Export anytime for backups or analysis.
CSV Import
Supported Data
Import posts into any board:
- Titles and content
- Statuses and tags
- Author information
- Vote counts
- Dates
Import Process
- Go to Admin → Settings → Boards
- Select the target board
- Click the Import Data tab
- Drop a CSV file or click to browse
- Click Import Data to start the import
- Review the results
CSV Format
Required Columns
| Column | Description |
|---|---|
title | Post title (required) |
content | Post body (required) |
Optional Columns
| Column | Description | Format |
|---|---|---|
status | Status slug | Must match existing status slug |
tags | Tag names | Comma-separated |
board | Board slug | Must match existing board |
author_name | Author display name | Text |
author_email | Author email | Valid email |
vote_count | Number of votes | Integer |
created_at | Creation date | ISO 8601 |
Example CSV
title,content,status,tags,board,author_name,author_email,vote_count,created_at
"Add dark mode support","It would be great to have a dark mode option for the app.","open","feature,ui","","John Doe","john@example.com","5","2024-01-15T10:30:00Z"
"Fix login timeout","Users are being logged out too quickly.","under_review","bug","","","","2",""Import Limits
| Limit | Value |
|---|---|
| File size | 10 MB |
| Rows | 10,000 |
| Columns | Unlimited |
Handle statuses
Statuses in CSV must match existing status slugs (e.g., open, under_review, planned):
- Unmatched statuses use the default status
- Create any custom statuses before importing
Handle tags
Tags are created automatically:
- New tags created on import
- Comma-separated in CSV
- Report shows created tags
Import Results
After import, you'll see a summary showing:
- Number of posts imported
- Number of rows skipped
- Number of new tags created
- Any row-level errors (expandable to view details)
CSV Export
Export Process
- Go to Admin → Settings → Boards
- Select a board
- Click the Export Data tab
- Click Export CSV
- Download starts automatically
Export Format
Exported CSV includes:
| Column | Description |
|---|---|
title | Post title |
content | Post content |
status | Status name |
tags | Comma-separated tags |
board | Board slug |
author_name | Author display name |
author_email | Author email |
vote_count | Number of votes |
created_at | Creation timestamp |
Export Scope
Export is per-board. Select the board you want to export from the board dropdown, then navigate to the Export Data tab.
Use Cases
- Backup - Regular data exports
- Analysis - Import into spreadsheets
- Migration - Move to another system
- Reporting - Share with stakeholders
Migrate from Canny
Quackback has a dedicated Canny importer that connects directly to your Canny account and migrates everything automatically — no CSV export needed.
What gets imported
- Posts — titles, descriptions, and creation dates
- Votes — full vote counts preserved per post
- Comments — threaded discussions with author attribution
- Users — names, emails, and avatars
- Statuses — mapped to your Quackback workflow
Run the import
- Go to Admin → Settings → Import
- Select Canny as the source
- Follow the authentication flow to connect your Canny account
- Choose which Canny boards to import and map them to Quackback boards
- Start the import
The importer runs in the background. You'll see progress and a summary when it completes.
Set up your Quackback boards and statuses before importing so the mapping step goes smoothly. See Organize feedback with boards if you haven't created boards yet.
CSV import from Canny
If you prefer to use a CSV export instead, you can still import manually. Export from Canny and map the columns:
title→titledetails→contentstatus→statusvotes→vote_count
Migrate from other platforms
From UserVoice
- Export from UserVoice (CSV format)
- Map columns:
suggestion_title→titlesuggestion_text→contentstatus→statusvote_count→vote_count
From Spreadsheet
If you've been tracking feedback in a spreadsheet:
- Add column headers matching Quackback format
- Ensure dates are ISO 8601 format
- Clean up status values to match your status slugs
- Export as CSV (UTF-8 encoding)
Best Practices
Before Import
- Create statuses first - Import matches by slug
- Clean your data - Remove duplicates, fix formatting
- Test with sample - Import a few rows first
- Backup existing data - Export current posts
Data Cleaning
Common issues to fix:
| Issue | Solution |
|---|---|
| Extra whitespace | Trim cells |
| Inconsistent statuses | Normalize names |
| HTML in content | Convert to markdown |
| Date formats | Use ISO 8601 |
| Encoding issues | Save as UTF-8 |
Large Imports
For 5,000+ posts:
- Split into batches of 2,000
- Import sequentially
- Verify each batch
- Allow time between batches
Troubleshooting
"Invalid CSV format"
- Check file encoding (use UTF-8)
- Verify proper quoting for fields with commas
- Ensure consistent column count
"Status not found"
- Create the status before importing
- Check spelling matches exactly
"Date parse error"
- Use ISO 8601:
2024-01-15T10:30:00Z - Or:
2024-01-15(date only)
"Import stuck"
- Large files take time
- Check browser console for errors
- Try smaller batches