Import a changelog from another tool

How to get there: Click Boards in the sidebar → open your Changelog board → click the actions menu (three dots) → select Import from URL.

Migrate your existing changelog history into ProductLift by pointing the importer at a sitemap, RSS feed, Atom feed, JSON Feed, or the changelog homepage. Every post is scraped, cleaned, and added to your Changelog board with its original date, author, categories, and images.

When to use this

  • You are moving from Headway, Beamer, Canny, LaunchNotes, or a self-hosted blog and want the full history in ProductLift.
  • You want your existing SEO to survive the move: the importer can create 301 redirects from the old URLs when the source domain is one of your portal domains.
  • You want to preview what will be imported before anything is written.

Supported input formats

Paste any of these into the URL field:

  • XML sitemaphttps://your-site.com/sitemap.xml
  • Sitemap index — the importer follows child sitemaps one level deep.
  • RSS 2.0 feedhttps://your-site.com/rss or /feed.
  • Atom feedhttps://your-site.com/atom.xml.
  • JSON Feed 1.1https://your-site.com/feed.json.
  • Changelog homepage — the importer probes for <link rel="alternate"> hints and common feed paths (/sitemap.xml, /feed, /atom.xml, /feed.json, /index.xml).

If the feed returns exactly 10, 20, or 25 posts (a common truncation cap on RSS/JSON feeds), the wizard warns you. Point it at the full sitemap instead when this happens, so you get the complete archive rather than only recent items.

The import wizard

Step 1 — Discover. Paste the URL and click Discover posts. The wizard lists every post it found, along with title, date, author, and categories. Nothing is written yet.

Step 2 — Map authors. Every unique source-author name is listed with a dropdown of your portal admins. When the source name matches a PL admin exactly, it is pre-selected. Posts whose source author isn't mapped keep the original name stored on the post so you can re-attribute later.

Step 3 — Map categories. Every unique source category is listed with a dropdown of your existing tags. You can also choose Create new tag to have the importer create it on the fly.

Step 4 — Choose a cutoff date (optional). Anything published before the cutoff is skipped. Useful when you only want to bring in the last 12 months.

Step 5 — Create redirects (optional, on by default). The wizard offers to register a 301 redirect from each original path to the new ProductLift post. Redirects are portal-scoped and use only the path, so they work whether or not the source host is currently one of your portal's domains. When the source lives on a third-party domain (like changelog.example.com for a tool you're migrating away from), the redirect is still registered - the moment you point that hostname at ProductLift, every old inbound link resolves to the new post without breaking Google traffic.

Step 6 — Start. The import runs in the background. You can close the wizard and come back later — progress persists across page refreshes.

What happens per post

  1. Fetch — the source URL is downloaded with SSRF protection (private and cloud-metadata addresses are refused).
  2. Extract — main-content extraction removes site chrome (nav, sidebar, footer, share buttons, cookie banners).
  3. Clean — an AI pass strips boilerplate without rewording the actual post.
  4. Rehost images — every image referenced in the post is downloaded and uploaded to your storage. The original external URLs are replaced with yours, so you can turn off the old site later.
  5. Publish — the post is inserted into your changelog with its original publish date preserved.
  6. Redirect (optional) — if enabled and supported, a 301 is added from the original path to the new PL URL.

Idempotency and re-runs

The importer tracks each post by its external ID (usually a numeric ID or GUID from the source feed). Re-running the wizard on the same URL:

  • Updates existing posts in place instead of creating duplicates.
  • Preserves the original publish date on re-runs.
  • Re-scrapes and re-cleans the source, so content edits on the source site are picked up.

Only failed items? Use Retry failed at the end of the run to re-attempt just those, without touching the rest.

Re-attributing authors after import

Sometimes you want to bulk-assign all posts written by "Old Team Member" to a specific PL user later, without re-running the whole import. Use the Remap author action:

  1. Open any imported post from the source author.
  2. In the admin panel, choose Remap all posts by "\<Original Name>" to \<PL user>.

Every post with that original source-author name gets reassigned to the chosen PL user in one query.