How to get there: Go to Settings → Import tab.
Move your ideas, votes, and statuses from Frill to ProductLift. Frill doesn't have a self-serve CSV export button, so the practical paths are: ask Frill support for an export, use Frill's API, or let our concierge team handle the whole migration.
You'll need:
| Frill | ProductLift |
|---|---|
| Ideas | Posts |
| Boards | Boards (or import everything into one board) |
| Topics (up to 3 per Idea) | Tags or Categories |
| Statuses | Statuses |
| Announcements | Changelog entries |
| Followers | Followers/subscribers |
Frill lets you tag an Idea with up to 3 Topics. If you map Topics to ProductLift Categories, you'll need to pick a primary Topic per Idea (ProductLift posts live in one category). Mapping Topics to ProductLift Tags preserves all three.
Frill does not have a self-serve "Export to CSV" button in the admin UI. You have two practical paths:
Email support@frill.co and request a data export. They'll email you a file.
GET /ideas, posts (returns title, description, vote_count, comment_count, status, topics, author, created_at, etc.)GET /votes, per-user vote recordsGET /comments, comment threadsGET /followers, subscribersGET /announcements, changelog entries (separate flow, see Adding posts to the changelog)Flatten the JSON into a CSV with the columns ProductLift's importer expects (see Step 2).
| Frill field | ProductLift field |
|---|---|
| Idea name | Title |
| Idea description / content (markdown) | Description |
| Status | Status |
| vote_count | Number of Votes |
| Author email | Author Email |
| Topics (comma-separated) | Tags |
| Primary Topic | Category (if you want a single category per post) |
| created_at | Created Date |
Frill exposes is_bug, is_pinned, is_archived, is_completed, is_approved as independent booleans rather than a single status. When flattening, decide how to collapse these:
status as the primary mapping.is_bug=true to a "Bug" tag or category if you want bug-vs-feature separation.is_archived=true rows, or import them with a Closed status.Skip this section if you're happy preserving vote totals only. If you pulled the Votes API, group votes by Idea and add a Voter Emails column with semicolon-separated emails:
title,description,status,vote_count,author_email,topics,voter_emails
"Add dark mode","Users want a dark theme.","Planned",47,"customer@example.com","ui,design","a@ex.com;b@ex.com;c@ex.com"
ProductLift will auto-create users for any voter email it hasn't seen and reconcile vote totals.
You don't need to rename Frill's statuses (Under Consideration, Planned, Already Shipped, or any custom ones) in your CSV. On the preview step, the importer detects any status that doesn't exist on the target board and lets you, per status:
When it finishes, click View Imported Posts to see the batch.
GET /announcements and import them into the ProductLift changelog. See Adding posts to the changelog.ProductLiftIdentify({ email, uid, name, ... }). See Single sign-on (SSO).Frill's lack of a self-serve CSV export makes it a great fit for our concierge service. Send us your Frill workspace details (or API credentials) and we'll handle the API pull, mapping, voter attribution, and post-import cleanup. Email support@productlift.dev to start a migration concierge request.
See Importing feedback posts for the full importer reference.