Migrating from Frill

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.

Before you start

You'll need:

  • Admin access to your Frill workspace.
  • A ProductLift portal with at least one board to import into.
  • For the API path: API access enabled at app.frill.co/settings/company/api.

Frill terminology vs ProductLift

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.

Step 1. Export your data from Frill

Frill does not have a self-serve "Export to CSV" button in the admin UI. You have two practical paths:

Option A. Ask Frill support

Email support@frill.co and request a data export. They'll email you a file.

Option B. Use the Frill API

  1. Enable API access at app.frill.co/settings/company/api.
  2. Generate an API key.
  3. Pull data from these endpoints (docs at developers.frill.co):
    • GET /ideas, posts (returns title, description, vote_count, comment_count, status, topics, author, created_at, etc.)
    • GET /votes, per-user vote records
    • GET /comments, comment threads
    • GET /followers, subscribers
    • GET /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).

Step 2. Prepare the CSV for ProductLift

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

Booleans on Frill ideas

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:

  • Use status as the primary mapping.
  • Map is_bug=true to a "Bug" tag or category if you want bug-vs-feature separation.
  • Skip is_archived=true rows, or import them with a Closed status.

Bringing voter emails along (optional)

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.

Status names

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:

  • Create new, name + color picker, attached to the target board.
  • Map to existing, pick an equivalent status that already exists.

Step 3. Import into ProductLift

  1. Go to Settings → Import.
  2. Click Choose CSV or Excel file and pick your prepared CSV.
  3. Under Import into board, select the ProductLift board.
  4. Click Upload and Continue.
  5. On the Map Your Columns step, review the AI's suggested mappings.
  6. On the Preview step, use the Missing categories and Missing statuses panels.
  7. Click Import.

When it finishes, click View Imported Posts to see the batch.

After the import

  • Spot-check a handful of posts for title, description, status, votes, tags, and author.
  • Migrate Announcements separately. Frill's Announcements (changelog) are a separate resource. Pull them via GET /announcements and import them into the ProductLift changelog. See Adding posts to the changelog.
  • Update your DNS. If Frill was on a custom domain, point it at ProductLift. See Custom domain.
  • Re-create integrations. Connect Jira, Slack etc. under Settings → Integrations.
  • Swap your Frill SDK for the ProductLift SDK. If your app used Frill's identify snippet to auto-log users into the Frill widget, replace it with ProductLift's ProductLiftIdentify({ email, uid, name, ... }). See Single sign-on (SSO).
  • Install the widget. Replace Frill's widget. See Install widgets.
  • Bring users across. See Inviting customers.

Prefer we handle it? Migration concierge

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.

If something goes wrong

  • Wrong target board? Filter All Posts by the import batch and bulk-delete, then re-import.
  • Frill support is slow? Use the API path or our concierge service.
  • Want to test first? Import the first 10 rows as a separate file before running the full export.

See Importing feedback posts for the full importer reference.