How to import a CSV into a flowchart tool
How to import a CSV into a flowchart tool with no wizard: drop the file onto the spreadsheet area or paste the text, match the header names, and check the four things that say the rows landed right.
A CSV goes in two ways (drop the file onto the spreadsheet area under the canvas, or paste the CSV text into it), and the columns are matched by header name rather than by position.
The short version
- Two ways in: drop the .csv onto the spreadsheet area, or paste the CSV text into it.
- Columns are matched by header name, not by position, so the export order does not matter.
- Unrecognised columns are carried and ignored: leave your export's ids and timestamps in.
- The first line is read as the header, so a report title above it has to be deleted first.
- Line to holds row numbers, so the order the rows sit in the file is part of the data.
What happens between the file and the canvas
There is no import wizard. A .csv gets into QueryChart in one of two ways: drag the file onto the spreadsheet area underneath the canvas, or open it in a text editor, select the text and paste it into the table. Both take the same path (the first line is read as the header, every line after it becomes a row), and the diagram renders from those rows as they land. Nothing asks you to map columns, because the header names do that.
Matching is by header name, not by column position: Shape, Box text, Line to, Line text, Line style, Horizontal lane, Vertical lane, Notes, Link. Your export can emit them in any order. Columns QueryChart does not recognise (ticket ids, timestamps, a cost centre, the three columns somebody added for a report two years ago) are carried and ignored, so stripping the file down before you import it is work you do not have to do. The column design itself is covered at /guides/how-to-structure-csv-for-flowcharts.
What makes CSV different from pasting out of a spreadsheet is that a CSV is a plain text file, and text files carry their own failures. The delimiter may be a semicolon rather than a comma, because that is what an export from an application set to a European locale produces. The encoding may not be UTF-8, in which case accented and non-Latin labels arrive as mojibake. A field containing a comma has to be quoted or it splits into two. And an export from a reporting tool usually opens with a report title and a generated-on date above the header: the first line of the file is the header, so those lines have to go.
The example below is a SaaS trial-to-renewal journey: 26 rows, six decisions, three rejected outcomes and a loop from the day-7 reminder back into setup. Open the spreadsheet panel underneath and watch which columns fill in at each stage, because that is the order the columns of an imported file matter in, and the last two are the ones most exports already carry under another name. The finished chart and the CSV that produces it are on /templates/csv-customer-journey-map.
A 26-row export landing in the editor
The customer journey CSV at four stages: what arrives first, what the connection columns add, and what the two lane columns add. Open the spreadsheet panel to read them.
The rows arrive in file order
Four lines of the export become rows 1 to 4: the Start "Land on the site from a campaign or search", then "Record the source, campaign and landing page", the decision "Does the visitor start a trial?" and the End "Left before the trial started". Only Box text and Shape have landed, so there are boxes and no arrows. The row numbers are file order: line 2 of the file is row 1, because line 1 was the header.
Line to fills in the arrows
The Trial rows arrive and the connections come with them. Row 10, "Is the first key action done within 7 days?", holds three numbers in one Line to cell (13, 11 and 12), and row 11, "Send the day-7 setup reminder with a booking link", points back at 9, which is how a loop is written. Those are positions in the file, so re-sorting the export after this column is filled in is what breaks an import.
Line text labels each exit
Row 17, "Does the trial convert before it expires?", pairs Line to "20,18" with Line text "Buys a plan,Expires unpaid", matched by position, first to first. Both columns are comma-separated lists living inside a single field, which is exactly why a CSV writer has to quote them. Unquoted, that label is two fields, and every value to its right lands one column across.
The two lane columns
Horizontal lane carries the journey stage (Awareness, Trial, Activation, Conversion, Retention) and Vertical lane the owner: Customer, Marketing, Product, Sales and Support. Most exports already hold both under other names, as a stage field and an owner field. So the swimlane version of this chart costs one rename in the header line rather than any new data.
How it works
Open the file and look at the first line
Open the .csv in a text editor rather than in Excel, because Excel hides precisely the things that go wrong. The first line has to be the header. Delete a report title, a generated-on line, any blank line above the header and any totals row at the bottom, then save.
Rename the headers to the editor's column names
Shape, Box text, Line to, Line text, Line style, Horizontal lane, Vertical lane, Notes and Link. The names are what is matched, so the order they sit in does not matter and a column you do not have can simply be absent. A header that is not one of those names ("Next step", "Step type") lands as an ignored extra rather than as an error, which is why a missing arrow is nearly always a header problem.
Check the delimiter and the encoding
A file exported by an application set to a European locale is usually semicolon-separated, and it arrives with the whole line sitting in one column. Re-export and choose the comma. Save as UTF-8 while you are there: from Latin-1 or UTF-16, accented and non-Latin labels come through as mojibake, and re-exporting is faster than retyping every label.
Quote every field that contains a comma
Line to and Line text are comma-separated lists inside a single field, so a well-formed file always quotes them: "20,18" and "Buys a plan,Expires unpaid". The same goes for a Box text such as "Approve, then file". An unquoted comma splits the row, and everything to its right lands in the wrong column with nothing to tell you it happened.
Drop the file on the spreadsheet area, or paste the text
Open a new chart, then either drag the .csv onto the spreadsheet area underneath the canvas or paste the CSV text straight into it. No wizard, no column mapper and no field-matching screen appears; the rows appear in the table and the diagram renders from them. If you are unsure about the file, try it in a scratch chart first.
Check four things the moment the rows land
One: the row count equals the number of lines in the file minus the header. Two: row 1 is your first step, not your header text. Three: a Line to number you already know (the one that loops backwards is the easiest to spot) lands on the step you meant. Four: the branch labels sit on the arrows you expect. From then on, edit the table rather than the file.
Mistakes to avoid
A report title above the header row
Exports from CRMs and ticket systems often open with the report name and a generated-on date. The first line of the file is read as the header, so your real header becomes row 1 and every Line to number is off by one: a chart that renders and is wrong. Delete those lines before importing.
Semicolon-delimited exports
An application set to a locale that uses the comma as a decimal separator writes semicolons between the fields, and every line then arrives as a single value. Re-export choosing the comma rather than search-and-replacing the separator, because Line to and Line text contain commas of their own and a blanket replace corrupts them.
Sorting the file after Line to is filled in
Line to points at row positions, not at your source system's ids, so sorting the export by owner or by date afterwards renumbers every step underneath the connections. Fill Line to last, and if rows have to move, move them in the editor. /guides/how-to-define-flowchart-connections-in-csv covers the addressing in full.
Expecting an unmatched column to complain
A column QueryChart does not recognise is carried and ignored: nothing turns red and nothing is lost. That is what lets an export go in untouched, and it is also why a mistyped header fails quietly: the data is in the file, it is on the row, and it is doing nothing.
Import your CSV into a chart
Open the journey example as your own chart to see the columns filled in, then drop your own .csv onto the spreadsheet area.
Related guides
Frequently asked questions
Is there an import wizard or a column mapper?
No. There are two ways in and each is a single action: drop the .csv onto the spreadsheet area under the canvas, or paste the CSV text into it. Columns are matched by header name, so there is nothing to configure and no field-matching step to get wrong. When a column looks as though it did nothing, the cause is the header name rather than a setting you missed.
Do I have to delete the columns QueryChart does not use?
No. Unrecognised columns are carried and ignored, so an export carrying ticket ids, timestamps, a cost centre and four reporting columns can go in exactly as it came out. Keeping them costs nothing and preserves the link back to where the rows came from. The only column work worth doing first is renaming the ones you do want matched: Box text, Line to, Line text, Shape and the two lane columns.
My file arrived as a single column. What happened?
The delimiter is not a comma. Exports from applications set to a European locale are usually semicolon-separated, and a tab-separated file saved with a .csv extension behaves the same way. Re-export and choose the comma rather than replacing the separator by hand, because Line to and Line text hold comma-separated lists that a blanket replace would destroy. Save as UTF-8 at the same time: a wrong encoding shows up as mojibake in the labels, never as an error.
The rows imported but no arrows appeared.
Line to is either empty or holding something other than row numbers. The usual causes are an export whose next-step column carries the source system's own ids (STEP_014) instead of positions in the file, or a header named something that was not matched, in which case that column landed as an ignored extra. Both are fixed in the table: type the row numbers into Line to and the arrows appear as you go. /csv-to-flowchart shows what a file that works looks like.
Can I re-import the file later to update the chart?
Nothing links the chart back to the file it came from (there is no refresh, no sync and no connector), so importing again is another paste rather than an update. Treat that as a decision made once: after the import the chart is the definition of the process, and the export becomes a snapshot of how it looked that day. If the source data really does change weekly, it is almost certainly a log of instances rather than a definition of steps, and only the steps belong in the chart.