Migrating from Beamer

How to get there: Go to your ProductLift Changelog to add posts manually, or use the ProductLift API for bulk import.

Beamer is primarily a changelog and announcements tool, not a feedback board. So this migration is mostly Beamer Posts → ProductLift Changelog entries, not feedback posts. If you also use Beamer's Feature Requests / Roadmap product, the feedback side imports through ProductLift's standard CSV path.

Before you start

You'll need:

  • Admin access to your Beamer account.
  • A ProductLift portal with the Changelog enabled.
  • For bulk migration: a Beamer API key (Settings → API).

What can be migrated

Beamer surface ProductLift destination
Posts (changelog announcements) Changelog entries
Reactions (positive/neutral/negative) Changelog reactions (ProductLift supports emoji reactions on changelog entries, pick the closest mapping)
Feature Requests (with upvotes) Feedback board posts (see main importer flow)
Categories Tags or labels
Translations Multilingual changelog entries (one ProductLift entry per post, with translations stored on the same entry)

What cannot be migrated cleanly

  • Click-through counts on links inside posts. ProductLift tracks views on changelog entries but not per-link clicks.
  • Beamer's exact reaction breakdown (positive vs neutral vs negative) doesn't map 1:1. ProductLift's changelog reactions use emojis, pick the closest set when carrying counts over (e.g. positive → 👍, negative → 👎).

Step 1. Export your data from Beamer

Beamer's admin UI doesn't expose a "Download CSV" button for posts. The practical path is the API.

API export

  1. In Beamer, go to Settings → API and generate an API key.
  2. Use these endpoints (docs at getbeamer.com/api):
    • GET /posts, paginated list of changelog posts
    • GET /posts/{postId}, single post
    • GET /posts/{postId}/comments, comments on a post
    • GET /posts/{postId}/reactions, reaction breakdown
  3. Auth header: Beamer-Api-Key: YOUR_KEY.
  4. Watch the rate limit (30 req/sec) and your plan's monthly API quota (Free 1k, Starter 2k, Pro 20k, Scale 100k calls/month).

Each post returns: id, date, category, translations[] (title, content, contentHtml, language, images), pinned, published, views, feedbacks, positiveReactions, neutralReactions, negativeReactions.

Translations

ProductLift changelog entries support multiple language translations on a single entry (same as Beamer). You don't need to split one Beamer post into multiple ProductLift posts. Map translations[] directly: each language Beamer stored becomes one translation on the ProductLift entry.

If you publish in many languages, keep the same language set in ProductLift portal settings before importing so the translations attach cleanly. See the changelog reference.

Step 2. Prepare the data

For each Beamer post, build a row with:

Beamer field ProductLift changelog field
translations[].title Title (one per language)
translations[].contentHtml or content Body (HTML or markdown, one per language)
category Tag or category
date Published date
pinned Pinned flag
positiveReactions / neutralReactions / negativeReactions ProductLift changelog reactions (map to emoji counts, see above)

Skip views and per-link click counts, these don't carry over.

Step 3. Import into ProductLift

Option A. Small migrations (under ~30 posts)

Add them manually:

  1. Go to Changelog in ProductLift.
  2. Click New entry.
  3. Paste title, body, set date, pick tags.
  4. Save.

See Adding posts to the changelog.

Option B. Large migrations (the API path)

Use the ProductLift API to script bulk creation of changelog entries from your Beamer pull. One Beamer post → one ProductLift API create call.

Option C. Feature Requests / Roadmap (the CSV path)

If you also used Beamer's Feature Requests product (with upvotes), export those separately and use the standard ProductLift importer:

  1. Pull Feature Requests via the Beamer API.
  2. Flatten to CSV with Title, Description, Status, Number of Votes, Author Email, Created Date.
  3. Follow the standard flow in Importing feedback posts.

After the import

  • Spot-check changelog dates and order. Beamer's date field maps to your changelog timeline.
  • Update your DNS. If Beamer was on a custom subdomain, point it at ProductLift. See Custom domain.
  • Swap your Beamer widget for the ProductLift changelog widget. Replace Beamer's notification snippet with ProductLift's. See Changelog widgets.
  • Set up changelog subscribers. See Changelog subscribers.
  • If you used Beamer's user identify snippet to auto-target announcements, swap it for ProductLift's ProductLiftIdentify({ email, uid, name, ... }). See Single sign-on (SSO).

Prefer we handle it? Migration concierge

Beamer migrations involve translation handling, reaction decisions, and (if applicable) Feature Requests splitting. Send us your Beamer API key and we'll handle the whole pull + import. Email support@productlift.dev to start a migration concierge request.

If something goes wrong

  • API quota exhausted? Spread the migration over multiple billing periods, or upgrade your Beamer plan temporarily.
  • Posts came back with empty bodies? Check contentHtml instead of content, Beamer stores rich content there.
  • Translations got mangled? Check your portal language list matches the Beamer languages you're importing. Languages not in the portal settings get dropped silently.