Import and export data

How to get there: Go to Settings in the sidebar → Import & Export

Import Posts

You can import posts from a CSV file. This is useful when migrating from another feedback tool or loading historical data.

  1. Go to Import & Export in settings
  2. Click Import Posts
  3. Upload a CSV file with your posts
  4. Map the columns to the correct fields
  5. Review and confirm the import

Import Users

How to get there: Go to Users in the sidebar → Import & Update Users (or use the global search for "Import Users").

Bulk invite or import users to your portal from a CSV or Excel file. The same flow handles both new users and updates to existing users.

  1. Upload a CSV or Excel file
  2. Review the column mapping screen, where AI suggests how each of your columns maps to a ProductLift field. Adjust as needed.
  3. Review the preview screen, which highlights which rows will be created, updated, unchanged, or skipped
  4. Confirm the import

How matching works

Each row is matched to an existing user by sso_uid first (if provided), then by email. If no match is found, a new user is created. If a match is found, the existing user is updated and the changed fields are highlighted in the preview.

AI column mapping

You don't need to rename columns before uploading. After upload, AI suggests a mapping from each of your CSV columns to a ProductLift field. You can override any suggestion in the mapping screen, and you can mark any column as (ignore) to drop it.

Standard fields you can map to: Email, SSO UID, Name, Company, MRR, LTV, Plan, Signup date, Customer Status, Stripe Customer ID, Groups. Either Email or SSO UID is required so we can identify the user.

The dropdown also lists any custom fields already on your users (same names you see in the User Data section of the user profile), so you can extend an existing one. Pick + Add custom field… to create a new one on the fly. Custom fields are stored as segment properties you can filter by. Columns left on (ignore) are dropped.

Billing names are handled carefully

When the value in the name column ends in a company suffix (SRL, Inc, LLC, GmbH, Ltd, Corp, ...) we treat it as the company, not as a person's name:

  • The value is moved to the company field (unless the row already has an explicit company column with a value, which takes priority).
  • For existing users we never overwrite their public-facing display name from a billing-name column. This protects the name shown on posts and votes.

This applies to any import, not only Stripe.

Duplicate emails

When the same email appears on multiple rows and an ltv or mrr column is mapped, we keep only the row with the highest value and merge the duplicates. The preview shows how many rows were merged.

Linking to Stripe

Include a stripe_customer_id column (e.g. cus_abc123) to link users to their Stripe customer. As soon as the ID is saved, MRR, LTV, plan, and status sync automatically. See the Stripe integration guide for how to export the IDs from your Stripe dashboard.

Importing a Stripe customer export

You can drop a Stripe customer export CSV (Stripe Dashboard → Customers → Export) straight in. ProductLift detects the Stripe format and pre-fills the mapping for these columns:

Stripe column ProductLift field
id stripe_customer_id
Email email
Name name
Total Spend ltv
Created (UTC) signup_date

European-format amounts (e.g. 177,87) are handled. After import, connect Stripe in Settings → Integrations so MRR, plan, and status stay fresh automatically.

Export Posts

Download all your posts as a CSV file, including titles, descriptions, votes, statuses, and categories.

Export Users

Download all your users as a CSV file, including names, emails, roles, and registration dates.

Advanced Import (API)

For more complex import scenarios (comments, individual votes, custom fields), use the ProductLift API.