It's Shannon. Let's get a spreadsheet in. This is what a real one looks like. Two header rows. Dates in three formats. And the same customer spelled four ways. None of that has to be tidied up first.
Turn your spreadsheet into a database.
Drop in the workbook you already have. Each tab becomes a table, every column is read and given a type, and a column that names rows on another tab becomes a real link between them. You see all of it before anything is created.
- Customer is a link, not text. The sheet spelled Harbour Deli four different ways. Here it is one customer, and rows 1, 2, 4 and 7 all point at it.
- Delivery was typed five ways, from 21/09/2026 to Sep 22. Every one is a date now, read day first because the sheet's own dates say so.
- Value had a £ on some rows and not on others. All of it is pounds, stored as numbers that add up.
The product itself, photographed after importing one workbook. Not a mock-up.
The sheet as it was typed. What came back.
This is the first tab of that workbook, and what the import said about it before a single record existed. Nothing was tidied first.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Order | Customer | Delivery | Product | Qty | Value | Notes |
| 2 | (no.) | (name) | (date) | £ | |||
| 3 | EB-2041 | Harbour Deli | 21/09/2026 | Brioche buns (12) | 40 | 270 | ring first |
| 4 | EB-2042 | harbour deli | Sep 22 | Brioche buns (12) | 24 | £162 | |
| 5 | EB-2043 | Two Rivers Café | 2026-09-22 | Croissants (24) | 48 | 1,008 | new acct |
| 6 | EB-2044 | HARBOUR DELI | 23/9 | Sourdough loaf 800g | 12 | 42 | |
| 7 | EB-2045 | Marsh & Co | 23 Sep | Seeded batch loaf | 20 | 60 | held |
| 8 | EB-2046 | The Ferry Inn | 23/09/2026 | Brioche buns (12) | 36 | £243 | |
| 9 | EB-2047 | Harbour deli | 24 Sep | Cheese scones (12) | 48 | 348 |
48 orders on this tab. Two more tabs, Customers and Products, are in the same file.
- Two header rows The sheet has a row of units under its headings. “Row 2 looks like a second header row, so it is left out.” With a button that imports it as a row instead.
- One customer, four spellings Capitals, no capitals, block capitals, a stray space. Customer becomes a link to the Customers tab: “100% match”.
- Dates typed five ways Some with a year, some without, some month first in words. Read day first, “because 21/09/2026 in this column can only be day first”. The ones with no year take 2026.
- A £ on some amounts 270, £162 and 1,008 in one column. “£162 says these amounts are in British Pound (GBP), and the amounts with no symbol are read the same way.”
Three tabs in. Three linked tables out.
The workbook had an Orders tab, a Customers tab and a Products tab. The names in two of Orders' columns were the names in the other two tabs, so those columns were proposed as links. Every order now points at one customer record and one product record.
- 68 records and 96 links from one import. None of the links was typed.
- Matched by value. A column is proposed as a link when most of its values are names in another tab, and the review step shows the match rate first.
- Your call. Switch a link back to plain text, rename a table, change a type or untick a column before you import.
- Several files work the same way, and exports split by year or region are combined when their columns match.
One customer. Every order it placed.
Open Harbour Deli and its orders are listed under it, because each of them points at this record. The two figures above the list were never typed. They are worked out from those links.
- Orders count and Total value were suggested on the review step, and they follow the data from then on.
- Rename the customer once and every order shows the new name. The orders hold a link, not a copy.
- Sort and filter freely. A record is a row that stays in one piece.
- Click through from a customer to an order, and from the order to its product.
What the same data can do on day one.
None of this is set up by the import. It is what the tables can do once they exist.
- Other views of the same recordsOrders as a calendar by delivery date, customers as a board by route. Nothing is copied to make a view.
- A form in front of itNew rows can arrive through a form you publish at a link, and land as records.
- AutomationsWhen a record changes, send the email, tell the other system or update a field, with a log of every run.
- Who sees whatAccess is set per table and per field, per person. People who only read are free.
- A record of every changeWho changed what and when, on every record, including what an import or an automation did.
- Questions in plain EnglishAsk which customers ordered nothing this month and get the list, with the working shown.
Wherever the sheet lives, and when it changes.
-
From Excel
Add the .xlsx or .xls file itself. Every tab becomes a table, and dates are read from the cell, so they are right however the workbook displays them.
-
From Google Sheets
Download the spreadsheet as an Excel file or a CSV and add that. Or connect Google Sheets and keep a table in step with the sheet hourly or daily. That route brings every column across as text, and you set each column's type once.
How the connection works -
When the sheet changes
Import the new export into the same table and pick the column that identifies a row, such as an order number. Rows already there are updated and new ones are added, so a second import does not double anything.
Where you still have to help it.
An importer that claims to read anything is one you cannot trust with your data. These are the cases where this one stops and leaves the decision to you.
- The header has to be the first row. A title or a blank line above it is not skipped. A second header row under it is recognised.
- Names are matched ignoring capitals and stray spaces, not spelling. Acme Ltd and Acme Limited stay two customers. A value that matches nothing is left blank, and the last screen counts them.
- Types are suggested from the first 300 rows of each sheet. The whole file is imported, and you can change any type on the review step.
- Month names are read in English. A date written with another language's month names is kept as written, and counted.
- A second import adds every row again unless you pick the column that identifies a row.
When a spreadsheet is still the right tool.
A page that never says no is an advertisement. These are the cases where we would tell you to keep the sheet.
- You are working something out, not keeping a record. A budget you rework cell by cell, a what-if, a one-off analysis: that is what a spreadsheet is for.
- One person keeps it and nobody else changes it. Most of what a database adds is for the second person.
- It is one list, and nothing in it refers to anything else. Links between tables are the point. With no second tab there is nothing to link.
- It is small and nothing about it hurts. “It works” beats “it is a little better” almost every time.
Not sure which you are? Seven signs your spreadsheet has quietly become a database · Spreadsheet vs database: what actually changes.
What people ask before they import.
Do I have to clean up my spreadsheet first?
Usually not. A second header row under the first is recognised and left out. A column of dates can be written several ways and is read as one column. Amounts typed with and without a currency symbol are read as the same currency. One thing is worth a minute first: the header row has to be the first row of the sheet, so delete any title or blank line above it.
Does it work with Excel and Google Sheets?
Excel workbooks (.xlsx and .xls) and CSV files are read directly, and you can add several files at once. Each sheet of a workbook becomes its own table. From Google Sheets, download the spreadsheet as an Excel file or a CSV and add that.
How does it know two sheets are related?
By the values. When most of a column's values match the names in another sheet, such as an Orders sheet whose Customer column is full of names from your Customers sheet, that column is proposed as a link between the two tables. The review step shows how many of the values matched, and you can switch the column back to plain text before you import.
What happens to a name that is spelled differently?
Capitals and stray spaces are ignored, so Harbour Deli, harbour deli and HARBOUR DELI are one customer. A different spelling is a different name: Acme Ltd and Acme Limited stay two. A value that matches nothing is left blank, not guessed at, and the last screen of the import says how many there were.
Is anything created before I am ready?
No. Adding files and analysing them only reads them. You see every table, column type, link and suggested total first, and you can rename, retype or untick any of it. Nothing exists until you press Import, and your original file is never changed.
Can I update it later from a new export?
Yes. Import the new file into the table it belongs to and pick the column that identifies a row, such as an order number or an email address. Rows that are already there are updated and the rest are added. Without that column, every row is added again.
What does RowFold cost?
$29 a month for each person who edits. People who only read are free and unlimited. There are no feature tiers and no charge for tables or records. The trial is 30 days of the whole product with no card.
Can I get my data back out?
Yes. Every table exports to CSV, account settings include a full export, and the REST API returns the links between records as links, not as flattened text. Deleted records wait in the trash.
More detail: the docs · pricing · how RowFold compares.
Add one workbook. See what it becomes.
Sign up, name the team, and drop the file in. You read what was found before anything is created, and your original file is never changed.
A spreadsheet in, a real table out.
So, drop it in. Every column is read and given a type. Text. A date. A number. A currency. You can change any of them before a single record is written.
Then, where it goes. Into a new table, or into one you already have. Columns line up by name, and anything left over is yours to map or ignore.
Now the part that saves you. Pick the column that identifies a record. It counts how many are genuinely new, and how many you already hold. The ones you hold are updated, not duplicated.
And it's in. Real records. Real types. Real links. Everything else you've seen works on it from here.