How to migrate from Canny: the 15-minute CSV walkthrough
Migrations fail on fear, not on difficulty. The fear: years of posts, votes, and customer identities feel un-movable, so the tool decision defaults to staying. The reality: Canny exports clean CSVs, and a competent import preserves the things that matter — who asked for what, and what they pay you. Here is the whole process, gotchas included. Budget fifteen minutes.
What actually needs to survive
Three things, in priority order:
- The requests themselves — titles, descriptions, statuses.
- Who asked — because a request without its requester can never have its loop closed.
- The link to revenue — which customers pay what, so priority can be computed instead of guessed.
Votes matter less than people assume: vote counts transfer as social proof, but the signal you will actually decide with is the people and money above.
Step 1: Export from Canny
In Canny's admin, export your posts (per board) and your users. Two CSVs. The posts export carries titles, details, statuses, vote counts, and author names. The users export carries names and emails — this file is the one people forget, and it is the one that makes identities whole, because the posts export identifies authors by name only.
Step 2: Import the user base first (or together)
Order matters slightly. Import the users CSV first — names, emails, and, if you have them, monthly amounts from your billing tool pasted into the same sheet. In Thumbsum this is the Customers import: each row resolves to a person; people who later arrive via the posts import match by name and inherit their email and revenue automatically.
If you import posts first, it still works — name-matching connects the records when the users file lands — but users-first means every post arrives already attached to a complete, reachable, revenue-linked person.
Gotcha #1: name drift. "Priya K" in one export and "Priya Kumar" in another become two people. Canny's own exports use consistent names, so same-source migrations are safe; trouble only arrives when you merge identities across different tools. Keep the name columns verbatim.
Step 3: Import the posts
Map the columns: title → title, details → description, author name → author. Statuses translate directly (open → under review, planned → planned, in progress → in progress, complete → shipped). Fifty posts per batch keeps things reviewable.
On arrival, each post is read: the concrete ask extracted, type and sentiment noted, and grouping by intent begins immediately — your years-old duplicates ("add SSO", "sso when??", "SAML please") collapse into single groups with their combined revenue computed. This is usually the moment migrating founders see their backlog honestly for the first time.
Gotcha #2: analysis takes minutes, not seconds. Imports land instantly as pending items, then enrich in the background — a few hundred posts take on the order of ten to twenty minutes. Import, make coffee, come back to a triaged board.
Step 4: Verify with three checks
- Pick a known duplicate-heavy topic; confirm its posts grouped and the revenue total looks right.
- Pick your biggest customer; confirm their profile shows email, amount, and their requests.
- Pick one shipped item with known requesters; confirm the people are attached (this is your future loop-closing working).
Step 5: Redirect and tell people
Point your feedback links at the new board, and — in the spirit of the product — tell your active requesters the board moved and their history came along. A migration is itself a loop worth closing.
What you gain that the CSV didn't contain
The import carries data; the system adds judgment. Within an hour of a Canny migration you have: request groups weighted by real MRR, any unhappy paying customers surfaced with drafted replies, and shipped- but-never-announced items flagged for loop-closing — the backlog's whole guilt, converted into a queue of five decisions.
Fifteen minutes of CSV, and the pile starts explaining itself.