← Blog

I tried five ways to combine Notion and a spreadsheet. None of them worked.

For the last five years I’ve been managing my personal finances with two tools at once. A spreadsheet for the numbers. Notion for everything around them: the reasoning behind each decision, the running notes, the running lists.

Most adults end up with a setup like this. You start with a checking account and a credit card, then an emergency fund, then a brokerage. You buy a place, so there’s a mortgage. You travel, so there are foreign currency holdings. You get married, so there’s a budget you build with your partner. The number of moving pieces grows, and so does the gap between what’s there and why it’s there.

Spreadsheets are good at the first. Notion is good at the second. Both are bad at the other.

I spent five years trying to make them work together as one tool. I tried five different ways. None of them worked. This is what broke, and why.

Workaround 1: Just switch between the two apps

The most obvious approach. Keep the spreadsheet as the source of truth for numbers. Keep Notion as the source of truth for everything around them. Switch when you need to.

This is what most people I know do. It works in the sense that nothing’s actively broken. The numbers are in the spreadsheet. The reasoning is in Notion. They both exist.

What it doesn’t do is let you actually use both at once.

Here’s a small moment that became a frequent one. I’d be reviewing my month-end numbers in the spreadsheet. A line item would catch my eye, a charge I didn’t immediately recognize, or a category that was bigger than expected. I’d want the context. Was that the deposit on the wedding venue? The annual insurance renewal? The thing my partner and I agreed was a one-time exception?

The context lived in Notion. Cmd+Tab. Switch tab. Search for the relevant page. Read. Switch back. By the time I was back at the spreadsheet, I’d forgotten which row I was checking.

It sounds trivial. It is trivial, individually. The problem is that you do it twenty times a session, and each switch is a tiny attention reset. After an hour of “reviewing my finances,” I’d often realize I hadn’t actually answered any of the questions I’d sat down to answer. I’d just shuffled context back and forth.

There’s also a slower failure mode: drift. The spreadsheet says one thing about an investment. The Notion page about the same investment says something subtly different. Maybe the cost basis is off because I forgot to update one side. Maybe the position size is from before I rebalanced. The two sources of truth wander apart from each other when nobody’s looking, and you only notice during tax season, when it suddenly matters.

The illusion is that two apps next to each other is the same as one tool. It isn’t. The seam is where the work goes to die.

Workaround 2: Put the documents inside the spreadsheet

Plan B: collapse Notion into the spreadsheet. Add a “notes” column. Write the reasoning in the cell next to the number. One source of truth. No more switching.

I tried this for several months. It does not work, and it doesn’t work in a specific way that took me a while to articulate.

Cells are not designed to hold paragraphs.

Concretely:

  • A spreadsheet cell with a long string of text either truncates (and you can’t see most of it) or wraps (and the row becomes 200 pixels tall, breaking the visual rhythm of the entire sheet).
  • There is no formatting. You can’t bold a phrase, you can’t make a bullet list, you can’t have a heading. It’s flat text in one font, in one size.
  • You can’t link from one piece of text to another part of the document. Notes are dead-end.
  • Long-form text in a spreadsheet cell reads like a text message from 2002. Cramped. Functional but joyless.

The worse problem isn’t the visual one, though. It’s what writing in a spreadsheet cell does to you. When the container looks small, your thoughts shrink to fit. The two-paragraph nuance about why you and your partner decided to splurge on the venue gets compressed into “decided to splurge, agreed to cut back elsewhere.” You lose the actual reasoning. You retain a stub.

Six months later, when you’re trying to remember whether that splurge was a one-time decision or a precedent, the stub doesn’t tell you anything. The narrative didn’t survive the container.

You can try harder. I tried harder. I started keeping the real notes in a separate document and pasting summaries into the cell. Which, of course, is the original two-tool problem with extra steps.

Workaround 3: Build everything in Notion with databases and formulas

Plan C: collapse the spreadsheet into Notion. Notion has databases. Formula columns. Rollups. Relations between tables. Surely the math can live there.

Notion has gotten better at this over the years. There are sophisticated finance templates floating around the internet that use it well. I tried a few. I built my own.

Here’s what happens.

First, the formulas. Notion’s formula column operates within a row. You can compute price * quantity = total for the row. Fine. But the moment you want a sum across rows, the most basic operation in any finance context, you need a different mechanism. That mechanism is rollup. Rollup needs a relation. A relation requires you to split your data across two tables and link them.

So total spending this month is not “sum of the amount column.” It’s: create a parent table called “Months.” Create a relation from the Spending table to the Months table. On the Months table, create a rollup column that sums the amount field of related Spending rows. Now your sum exists, in a different table, two clicks away from where you want to see it.

That’s for one sum. For a budget tracker, you might want sums by category, sums by month, year-to-date totals, comparisons to budget, percentage of budget consumed. Each of those is a separate dance with rollups, often with workarounds because rollups don’t compose cleanly. You can’t rollup a rollup in any straightforward way.

Date arithmetic in Notion’s formulas is verbose. Currency conversion requires a hardcoded rate or an external integration. Conditional formatting is limited. Charts mostly don’t exist in any depth.

The spreadsheet vocabulary I’d built up over years, SUMIF, INDEX/MATCH, IFERROR, conditional aggregation, pivot, none of it translated. Every operation I knew how to do in three keystrokes in Sheets became a 15-minute structural project in Notion.

Past a certain complexity, you end up with a beautiful Notion workspace that almost shows you the numbers you need, with a private spreadsheet open in the background where you actually do the math. You copy-paste the answer back into Notion to make the dashboard look complete.

I had this exact setup for about six months. Notion looked great. The math happened in Sheets. I’d lie to myself and say I was using Notion for finance. I was using Notion for the appearance of using Notion for finance.

Plan D: stop trying to collapse them. Embrace the split, and make navigation between them seamless. From a Notion page, link to the relevant sheet. From a row in the sheet, link back to the Notion page.

This is what most “Notion + Sheets” guides on the internet recommend. It’s also where I lost the most time before giving up.

The frictions:

A Notion link to a Google Sheet opens externally. You’re reading a page about your investment thesis, you click a link to see the position numbers, and now you’re in a browser tab outside Notion, possibly on a different Google account from the one that owns the sheet, possibly hitting a permission wall. By the time you’re looking at the sheet, you’ve lost the page you came from.

The reverse direction is worse. You put a Notion URL in a sheet cell. The cell shows a long ugly URL. Clicking it opens a new tab. Mobile is its own circle of hell: Sheets on iOS has a hard time with arbitrary links in cells, and Notion’s mobile app doesn’t preview Sheets at all. You tap the link, it routes through the browser, then to the Notion app, then it’s the wrong workspace, then you give up.

There are no previews on either side. You see https://docs.google.com/spreadsheets/d/1A2B3C... and you have no idea which sheet that is until you click. The cognitive cost of every link is non-zero.

I tried to fix this with a naming convention. Every link prefixed with a description, like “Investment positions sheet → https://…”. It helped for about a week. Then I stopped maintaining the convention because writing it out every time felt like overhead, and within a month the links were back to inscrutable URLs.

The deeper problem is that links between two apps are not really integration. They’re addresses. To go from one to the other, you have to teleport. Every teleport costs the context you were holding.

In one tool, an internal reference is part of the document. You can hover, you can preview, you can jump and back. Across two tools, every reference is a small commitment to leaving where you are.

Workaround 5: Embed one inside the other

Last attempt. Don’t link. Embed.

Notion can embed Google Sheets. You paste the sheet’s share URL, and an iframe shows up in the Notion page. Theoretically the data is now visible in the same document. No more switching.

The iframe is the size of a postage stamp. Notion gives embeds a fixed default height that’s too short to show more than a few rows. You can resize, but you’re working with an iframe inside a Notion page that’s already inside a browser tab. By the time you’ve fit the spreadsheet at a usable size, the page around it has nothing else. The narrative you wanted to keep next to the numbers is now offscreen.

Even at a reasonable height, the cells look cramped. Default column widths in Sheets don’t translate well to a narrow embed frame, so you end up horizontally scrolling inside the iframe to see two columns. The font is small, the cell borders are thin, and the whole thing feels like looking at a spreadsheet through a mail slot.

Filtering and sorting inside the embedded sheet is its own UX. The filter UI is the Sheets UI, which is fine on its own but visually clashes with Notion’s clean lines. The header looks wrong. The borders look wrong. The whole embed has a not from around here feel that breaks the page.

The other direction, embedding a Notion page in a Google Sheet, isn’t a thing. There’s no native widget. Some third-party extensions claim to do it. They don’t, really.

Updating data still requires touching the source. If you want to add a row to the sheet, you click into the iframe, the sheet wakes up, you do your edit, you save, you click back into Notion. Same context-switching cost as before, with the added indignity of a cramped frame.

You’d think embedding would be the most integrated option. In practice it’s the worst, because it gives the appearance of integration without any of the substance. You’ve made the surface look unified. The seams are now inside the page instead of between two tabs.

What broke, and why

Five workarounds, five distinct failure modes, and one pattern.

Every workaround is fighting against an assumption baked into both tools: documents and numbers are separate primitives. Notion is built around documents, with numbers bolted on as a database feature, second-class to the editor. Spreadsheets are built around the grid, with narrative second-class to the cells. No matter how you connect them, the seam is structural, not cosmetic.

You can hide the seam. You can’t remove it.

Tools that try to bridge the gap from one side end up with what I’d call adjacent integration. The two surfaces are next to each other (a Notion page with an embed; a spreadsheet with a notes column), but they’re not the same surface. Operations in one don’t compose with operations in the other. Reasoning written in one can’t be referenced from a formula in the other. The integration is geometric, not chemical. They’re touching, not bonded.

What I actually wanted, after five years of this, was simpler than any of the workarounds. I wanted a document where I could write a paragraph and, in the next line, have a table with formulas, and have the paragraph reference a number in the table by name, and have the formulas reference a paragraph by anchor, and have the whole thing be one document with one set of edit affordances.

I didn’t want Notion with better formulas. I didn’t want Sheets with a wider notes column. I wanted the primitive itself to be different. A document where text and structured data are both first-class, in the same plane.

What I’m building

That’s why I started Riplet.

Riplet is a document editor where spreadsheet-style tables and formulas are first-class citizens, alongside the prose. You can write a paragraph, drop in a table below it, reference a cell from three documents away, and have the whole thing recalculate when an underlying number changes. No iframe. No relation tables. No 200-pixel-tall cells.

A few specifics, because abstract product descriptions all sound the same:

It runs local-first. Your documents live in your browser, in IndexedDB. There’s no server requirement to use it. For personal finance, for anyone’s personal finance, that’s the right default. Your net worth shouldn’t be sitting on a third party’s server because you wanted a budget tracker.

Formulas are inline and cross-document. A cell in one table can reference a cell in another table, even if the other table is in a different document. Sums, references, conditional logic. The basics, done well, without rollup gymnastics.

Narrative and numbers share the same canvas. Headings, paragraphs, lists, callouts, the editor primitives you’d expect in a modern document tool. Tables and formulas are not a separate “database” mode. They’re blocks, like everything else.

It works offline. Once a document is loaded, you don’t need a connection. Edits sync when you come back online. No round-trip latency on every keystroke.

This is still early. The roadmap is long, and the tool isn’t pretending to be done. But for the specific problem I’ve been describing, managing a life’s worth of numbers and the reasons behind them in a single place, this is the tool I want, every day, instead of the five workarounds. So I’m building it.

If five years of trying to combine Notion and a spreadsheet sounds familiar, riplet.io. I’d love your skepticism.