Changelog

What’s new in Liquid Rows

Every release, newest first. Currently v0.143.0.

v0.143.0

LeadMagic email checks

  • NewVerify email (LeadMagic): valid / invalid / unknown, flags catch-all domains and names the mail provider — also part of “Verify email (all providers)” (catch-alls are passed on to the next verifier).
  • NewPersonal email from LinkedIn (LeadMagic): a person’s personal address from their LinkedIn profile.
v0.142.2

Plainer push wording

  • ImprovedPlainer wording in the push wizard (“Only send a row once its enrichments have finished”).
v0.142.1

See why rows match

  • ImprovedSearching rows now highlights the matching cells, so you can see why each row came up. Overview has a “Least filled first” switch that puts the gappiest columns at the top.
v0.142.0

Automations: send to Slack, Discord, Zapier…

  • NewAutomations can now send each matching row to a webhook: paste a Slack or Discord incoming-webhook URL to get a message per hot lead, or a Zapier / Make / n8n hook to kick off any workflow — every value arrives by column name.
  • ImprovedWebhook URLs are treated like secrets: only https, never internal addresses, and shown masked once saved. A row that couldn’t be delivered is retried the next time it runs.
v0.141.15

Chart order

  • ImprovedChart view → Sort A→Z lists bars by their value instead of their size, which reads better for tiers, years and score bands (numbers sort as numbers).
v0.141.14

Sheet notes

  • NewClick ⓘ next to a sheet’s name to leave a note for your team: what the list is for, and what to know before running enrichments. It turns blue when a sheet has one, and hovering shows the note.
v0.141.13

Run one field from the row view

  • ImprovedIn a row’s details, ▶ next to any enrichment runs just that one for just that row, handy when reviewing a list record by record.
v0.141.12

Jump to errors

  • ImprovedClick the Errors count in a column’s Insights, or the error badge on an Overview card, to see exactly the rows where that column failed. The undo / redo buttons now say what they’ll undo (for example “3 cells in Country”).
v0.141.11

Assistant safety fixes

  • FixedWhen the assistant proposes new instructions for an AI column you now see the complete text before saving, it works from the full current instructions (keeping your examples and the column’s output format), and saving never overwrites an edit made in another tab.
  • FixedRenaming a sheet from the assistant always asks first; stopping a run no longer sends fragmented “Changes spotted” alerts to everyone.
v0.141.10

More key checks

  • ImprovedKey checks now also cover Kickbox, Emailable, NeverBounce, Debounce, Clearout, BounceBan and every push destination (Instantly, Smartlead, lemlist, Attio, Close, HeyReach) — you know a key works before anything is sent.
v0.141.9

⌘J for the assistant

  • NewPress ⌘J (Ctrl-J on Windows) on a sheet to open or close the assistant.
v0.141.8

Automation editor layout

  • FixedThe automation editor’s “Copy the row to / Notify me” choices and the “also copy existing rows” box line up with their labels again.
v0.141.7

Fixes

  • FixedTitle Case never overwrites a cell someone changed while it ran. After ⌘Z the summary and counts show the undone values. Changing row colors in a saved view offers Save, and older views open uncolored. Starred sheets can’t be dragged into another folder by accident, reordering big folders is gentler, and a sheet moved into a folder goes to the end.
v0.141.6

Highlight duplicates

  • NewColumn menu → 🔁 Highlight duplicates tints every cell whose value appears more than once (ignoring case and spaces), so repeated emails or companies stand out before you run paid enrichments. ⋯ → Merge duplicates then cleans them up.
v0.141.5

Charts in percent

  • ImprovedChart view → Show as %: bars show each value’s share of the rows, and pivot cells show their share of the row (for example what % of each industry is Tier A).
v0.141.4

Views keep their colors

  • ImprovedSaved views remember row coloring along with their filter, columns, sort, grouping and layout.
v0.141.3

Web research reads contact links

  • FixedWeb research now sees email addresses, phone numbers and social-media links from a page’s header and footer (they were being dropped), so “Contact details from their website” and similar research actually finds them.
v0.141.2

Color rows by a column

  • NewColumn menu → 🎨 Color rows by this column gives each row a colored edge by its value (status, tier, owner…), with the most common values first and a legend above the grid. Click the legend to turn it off.
v0.141.1

Outbound in minutes template

  • NewNew template “Outbound in minutes”: company research, a work email from your connected email finder, and a written cold email (subject + body) for every lead — then send them to Instantly, Smartlead, lemlist or HeyReach with Push.
v0.141.0

Contact details from websites

  • NewContact details from their website (AI): reads each company’s site and copies its public email, phone, address and LinkedIn / Instagram / Facebook / X links into their own columns — nothing guessed. Great for local-business lists.
v0.140.13

Arrange your sidebar

  • ImprovedDrag a sheet onto another in the sidebar to put it just above, including into a different folder. The order is shared with everyone in the workspace.
v0.140.12

Sheet health at a glance

  • ImprovedOverview opens with a health summary: how full the sheet is on average, how many columns are complete or still empty, and how many have errors.
v0.140.11

Smarter clean-up

  • FixedTitle Case only touches values written all in lower or UPPER case: “McDonald” and “iPhone” stay as they are, emails and links are skipped, and “don’t” no longer becomes “Don’T”. Trim keeps line breaks in multi-line notes. The “isn’t a valid number” filter now agrees with the red underline (.5, 1e5 and 1 234 count as numbers). Freezing one enrichment no longer drops other columns’ results. Undoing several replaces goes back to the original value, and the summary bar keeps recounting no matter how many edits you make.
v0.140.10

xAI key check

  • ImprovedxAI (Grok) keys show whether they work too; clearer wording when a key has no credits left.
v0.140.9

Assistant names new sheets

  • ImprovedWhen the assistant sets up a new sheet (Start with AI), it also gives it a short, sensible name instead of the first words of your request.
v0.140.8

Key health in Secrets

  • ImprovedAPI keys & secrets shows, next to each key, whether it still works and how many credits are left.
v0.140.7

Copy charts as tables

  • ImprovedChart view and pivot tables have a ⧉ Copy table button that copies the numbers so they paste straight into a spreadsheet, doc or slide.
v0.140.6

Column presets

  • Improved▥ Columns → Show only “My data” (hide every enrichment) or “Enrichments” (just what was found), which is quicker than toggling columns one by one on wide sheets.
v0.140.5

Tidy text in place

  • NewText column menu → Clean up: Trim (strips stray spaces at the ends and doubled spaces inside), ABC / abc / Abc to change case. It fixes the column itself across every row, and ⌘Z undoes it.
v0.140.4

Out-of-credits warning

  • ImprovedA connected key that works but has no credits left now says so (“Top up your Serper account before running”).
v0.140.3

Assistant layout

  • FixedWith the assistant open, the sheet’s top bar wraps so Export and the ⋯ menu stay reachable, and long suggestions wrap instead of running off the panel.
v0.140.2

Serper key check

  • ImprovedSerper keys also show whether they work and how many searches are left.
v0.140.1

Fill blanks in one go

  • NewText column menu → ⤓ Fill empty cells… puts one value into every blank cell (say Country = “US”), and ⌫ Clear all values empties the column without deleting it. Both cover the whole sheet, and ⌘Z undoes them.
v0.140.0

Find the junk

  • NewNew filter: “isn’t a valid email address / web address / number”, which finds every row whose value doesn’t fit, across the whole sheet. Insights for an Email, Link or Number column tells you how many there are, and “Show them” jumps straight to those rows to fix or delete.
v0.139.0

Know your key works

  • NewConnected keys now show whether they work and how many credits are left — “✓ Key works · 2,200 credits left” — for LeadMagic, Hunter, ZeroBounce, MillionVerifier, Prospeo, Findymail, Apollo and OpenRouter. A rejected key says so before you run anything.
v0.138.4

Spot bad values

  • ImprovedIn columns shown as Email, Link or Number, values that don’t fit (“n/a” in an email column, text in a number column) get a wavy red underline, and hovering explains why. Handy for catching junk before you push a list anywhere.
v0.138.3

Undo big edits

  • ImprovedSetting or clearing a column on “Select all N” rows can now be undone with ⌘Z (up to 5,000 rows).
v0.138.2

Fixes

  • FixedFreezing an enrichment mid-run also stops its output columns being overwritten. “Looks like the same value” no longer lumps different numbers together (1.5 vs 15). Typing “/” in a selected cell starts editing it. In a plain find & replace a backslash is just a backslash. Pivot tables say when a column has too many values to count every combination.
v0.138.1

Spot near-duplicates

  • NewInsights now spots values that are probably the same thing written differently (“Acme Inc”, “ACME Inc.”, “acme inc”) and merges them into the most common spelling in one click. ⌘Z undoes it.
v0.138.0

Ad signals + email → LinkedIn

  • NewRunning Google ads? and Running Facebook & Instagram ads? (LeadMagic): checks the public ad libraries — how many ads, whether one is running now, an example — a strong budget signal. Capped at 5 credits per company.
  • NewLinkedIn profile from email (LeadMagic): turn inbound sign-ups into LinkedIn profiles.
v0.137.2

Clean up values from Insights

  • NewIn a text column’s 📊 Insights, hover a value and click ✎ to change it everywhere at once (for example “USA” → “United States”, or tidying “n/a”). Only exact matches change, and ⌘Z undoes it.
v0.137.1

Small conveniences

  • ImprovedPress / to jump to the row search. A row’s details now say where it came from (imported, webhook, by hand, API), when it was added and when it last changed.
v0.137.0

Assistant edits AI columns

  • NewChange what an AI column writes by just saying so: “make the opener one short sentence”, “answer in Spanish”, “also mention their website”. The assistant rewrites the column’s instructions, shows you the new version to save, and the column is marked out of date so you can re-run it.
v0.136.2

Copy unique values

  • ImprovedColumn menu → ⧉ Copy unique values copies each different value once (ignoring capitalization), so you get a deduplicated list of companies or domains ready to paste anywhere.
v0.136.1

Assistant & automations fixes

  • FixedA question handed to the assistant (Start with AI, ⌘K) is sent once — closing and reopening the panel, or switching sheets, no longer sends it again; asking from ⌘K while it’s answering puts the question in the box instead of interrupting.
  • FixedAutomation ideas now come with real conditions from your columns (e.g. Email is filled, Lead score ≥ 8), and an automation can’t be saved without a condition — so it never copies every row by accident.
  • FixedCancelling a run still delivers the alerts it already found; viewers no longer see assistant commands they can’t use; “summarize my sheet” covers up to 80 columns.
v0.136.0

Lookalike companies

  • NewLookalike companies (LeadMagic): feed in your best customers and get companies like them in a new sheet — name, website, how similar, and which customer they resemble — optionally limited to certain countries.
v0.135.0

Pivot tables

  • NewChart view → Split by: pick a second column to get a pivot table of row counts (for example industry × tier, or country × email status), with busier cells shaded darker. Click a cell to see exactly those rows in the grid.
v0.134.1

Jump back in

  • NewHome now starts with the sheets you opened most recently (and your ★ starred ones), so getting back to work is one click.
v0.134.0

Assistant: summarize my sheet

  • NewAsk the assistant to “summarize this sheet” or “what should I do next?” — it profiles every column at once (how full it is, common values, number ranges, failures) and answers with a plain-English overview and next steps.
v0.133.6

Reliability fixes

  • FixedA column frozen (or deleted) while it was still running no longer gets old results written back into it. Very large pastes report how far they got if something fails part-way. Find & replace keeps its undo across a retry and starts fresh when you change the search. Selection sums ignore rows folded into collapsed groups. Sidebar actions show an error if they fail. Adding a column to a very large sheet is faster.
v0.133.5

More reliable pushes

  • FixedPushes to Instantly, Smartlead, lemlist, HeyReach, Attio and Close leave out fields that are empty for a row (instead of sending blanks the provider rejects), skip rows missing the email / LinkedIn link they need, and no longer send a one-word name as both first and last name.
  • FixedSmartlead and HeyReach “not added” answers are now errors you can retry, a saved key you pick is actually used, nothing carries over when you switch destination, and existing push columns aren’t ticked by default.
  • Fixed“Find a person’s email” searches no longer count People Data Labs’ free-plan “true” as an email; Tidy phone numbers drops extensions; Cold email runs on rows with just a website.
  • ImprovedSecurity: a workspace key can’t be sent inside a request body when the request carries someone’s own credentials.
v0.133.4

Board suggestions

  • ImprovedA new board suggests the columns that make good lanes (a handful of different values, like a status or tier). One click and you’re grouped.
v0.133.3

Add cards on the board

  • ImprovedBoard lanes have a “+ Add card” button: it adds a row with that lane’s value already set and opens it so you can fill in the rest.
v0.133.2

Quick sums

  • NewSelect a block of cells (⇧ + arrows or ⇧-click) to see a count, and for numbers the sum, average, min and max, in the corner of the grid, just like a spreadsheet.
v0.133.1

Freeze an enrichment

  • NewColumn menu → ❄ Freeze values turns an enrichment into a plain text column that keeps everything it found. It never runs again (so no more credits), and you can edit the values like any text.
v0.133.0

Recent signals on Home

  • NewHome shows your latest signals — values your watched columns saw change and rows your automations caught — each one a click away from its sheet.
  • ImprovedNew automations can start from one-click ideas (“Qualified rows → copy to Hot leads”, “A row matches → notify me”), pre-filled with the sheet’s current filter.
v0.132.0

Find people at a company with LeadMagic

  • NewFind people at a company (LeadMagic): adds each company’s employees to a people sheet — name, title, LinkedIn, location — optionally only titles containing words you choose (e.g. “Sales, Marketing”).
v0.131.7

Integrations page lists where results can go

  • ImprovedThe public Integrations page now lists every place you can send results — Instantly, Smartlead, lemlist, HeyReach, HubSpot, Pipedrive, Attio, Close, Slack, Discord and webhooks.
v0.131.6

Sort menu + newest first

  • NewNew ↕ Sort button above the grid: set every sort rule in one place, change their order of precedence, and sort by when rows were added or last updated (“Newest first” in one click, handy for sheets fed by webhooks and syncs).
v0.131.5

Big bulk actions work

  • FixedDeleting, sending or editing thousands of selected rows at once, and pasting very long lists, no longer fails with “request entity too large”.
v0.131.4

Duplicate keeps your data

  • ImprovedDuplicating a text column now copies its values too, so it’s handy for keeping a “before” copy ahead of a find & replace or a bulk edit.
v0.131.3

Faster Overview

  • ImprovedOverview now loads every column’s profile in one go, so it’s much quicker on big, wide sheets and shows all columns rather than the first 40.
v0.131.2

Sidebar actions + fixes

  • ImprovedThe ⋯ next to each sheet in the sidebar now opens properly and can rename, duplicate (with rows) or delete the sheet, as well as star it or file it in a folder.
  • FixedCollapsed groups no longer load every remaining row in the background, and fill, ⇧-click selection and Find skip or unfold rows hidden in a collapsed group. “Hide value” rules now stack. Board card fields are remembered per sheet. Edits in a row opened from a link stay in sync. Find & replace recovers cleanly if one column fails. Overview stops loading when you leave it.
v0.131.1

Smoother updates

  • FixedIf Liquid Rows is updated while you have it open, the page now reloads itself onto the new version instead of showing a blank screen when you open a sheet.
v0.131.0

More from LeadMagic + email from LinkedIn

  • NewFind someone by job title (LeadMagic): pick a role like “Head of Sales” and get who holds it at each company, with their LinkedIn profile.
  • NewEmail from LinkedIn (all providers): LinkedIn link → work email, trying LeadMagic, ContactOut and People Data Labs in turn. Also Work email from LinkedIn (LeadMagic) on its own.
  • NewCompany data from LeadMagic: Funding & revenue (total raised, last round, revenue, headcount, CEO), Tech stack and Competitors.
  • NewJob change check (LeadMagic): has this person left the company in your sheet, and where are they now?
v0.130.1

Undo find & replace

  • ImprovedFind & replace can now be undone with ⌘Z (for changes of up to 5,000 cells), just like typing in a cell.
v0.130.0

Overview: your sheet at a glance

  • NewNew ◫ Overview layout: a card for every column showing how full it is (green when most rows have it), how many different values it has, its most common values and the number range. You can see straight away how much of your list each enrichment found. Click a value, or “N empty”, to jump to those rows.
v0.129.4

Duplicate views

  • ImprovedClick ⧉ on the open view’s tab to copy it, with its filter, columns, sort, grouping and layout, as a starting point for a new one.
v0.129.3

Smoother updates

  • FixedRequests that are still running when the app updates (like a slow one-row AI test) now finish instead of failing with “Failed to fetch”.
v0.129.2

Find & replace everywhere

  • ImprovedFind & replace can now work across every text column at once (⌘F → Replace…, or pick “All text columns” in the dialog), and it tells you how many rows match before you replace anything.
v0.129.1

Collapsible groups

  • ImprovedWhen the grid is grouped, click a group’s header to fold its rows away (⌥-click folds or unfolds every group at once).
v0.129.0

Ask from ⌘K

  • NewOn a sheet, type a sentence into ⌘K (“only show companies in Germany”, “find their emails”) and pick ✦ Ask the assistant — it opens with your question already sent.
  • ImprovedThe assistant’s suggestions now fit your sheet: email finding when you have names and companies, company research when you have companies or websites, error help when cells failed.
v0.128.1

Fill handle

  • NewDrag the small square at the corner of the selected cell (or block of cells) down or up to copy it into those rows — like a spreadsheet. A multi-row selection repeats as a pattern. ⌘Z undoes it.
v0.128.0

Assistant explains errors

  • NewAsk the assistant “why did the email column fail?” — it reads the grouped error messages, explains what went wrong in plain words (bad key, out of credits, rate limit…) and offers to retry just the failed cells.
  • ImprovedThe assistant knows which columns have failed cells, and an empty sheet now offers “✦ Tell the assistant what you’re building” right in the starter panel.
v0.127.5

Right-click a cell

  • NewRight-click any cell to copy its value, show only rows with that value (or hide them), open the row, or re-run that one cell.
v0.127.4

Automations & signals: quieter and safer

  • FixedNotify automations send one summary per run (“42 rows matched, e.g. Acme”) instead of one message per row, and only to people who can still edit the workspace.
  • FixedEditing a watched column’s prompt no longer flags every row as “changed”; the “changed” filter now means changed in the last 7 days, matching the grid marker.
  • FixedDuplicating a sheet no longer copies its automations (which made them fire again on every row); “also copy rows that already match” handles any number of rows; a row whose copy failed is retried later.
  • FixedThe assistant docks beside the sheet instead of covering the top bar, keeps a separate chat per sheet, no longer shows a reply twice, and talks in column names rather than internal ids.
v0.127.3

Range select + view layouts

  • ImprovedHold ⇧ and click a row’s checkbox to select every row between it and the last one you clicked.
  • ImprovedSaved views remember whether they’re a Grid, Board or Chart — make a “Pipeline” view that always opens as a board.
v0.127.2

Choose what board cards show

  • ImprovedBoard view → Card fields: pick which columns appear on each card. The first filled one becomes the card’s title, so cards read “Ada · Lovelace” instead of “Row 4”.
v0.127.1

Safer bulk actions

  • Fixed“Select all N” actions now check that the matching rows haven’t changed since you looked (if new rows started matching, you’re asked to refresh instead of acting on rows you never saw), and say so plainly past 50,000 rows instead of stopping part-way. Undo works for very large deletes too.
  • FixedLinks to a row (?row=) now open rows anywhere in the sheet, not just the first page.
v0.127.0

Cold emails, written per row

  • NewCold email (subject + body): describe what you sell once, and AI writes a short, specific first email for every row — subject and body in their own columns, ready to push to Instantly, Smartlead or lemlist as custom variables.
  • ImprovedAI columns that answer in JSON can put one field in the cell itself instead of the whole JSON object.
v0.126.4

Exact board counts

  • ImprovedBoard lanes show how many rows really have each value, across the whole sheet (or your filter), not just the rows loaded so far.
v0.126.3

Copy a whole column

  • NewColumn menu → ⧉ Copy values copies every filled value in that column (all rows matching your filter, not just the ones on screen), one per line, ready to paste into another tool.
v0.126.2

Clearer push summaries

  • FixedThe push wizard lists exactly which columns each destination receives (Close and Attio skip custom columns; HeyReach takes them as custom fields).
v0.126.1

Rename columns in place

  • ImprovedColumn menu → ✎ Rename edits the name right in the header (Enter saves, Esc cancels), with no need to open the settings panel.
v0.126.0

Fill the rest from examples

Type the answer for a couple of rows and let AI fill in the rest the same way.

  • NewFill a text column by example: type the answer in 2 or more rows (say, Seniority “C-level” for a CEO and “Director” for a Head of Sales), then open the column’s menu → ✨ Fill the rest with AI (also in ⌘K, or just ask the assistant). AI learns the pattern from your rows and fills every empty cell in the same format.
  • ImprovedYour typed examples are never overwritten, and you see the cost estimate before anything runs.
v0.125.0

Start with AI

Describe the list you’re building on Home and the assistant sets up a new sheet for it.

  • NewHome has a new “Start with AI” box: type what you’re trying to do (“find the CEO and LinkedIn of each company in my list”) and a new sheet opens with the assistant already adding the input columns and proposing the enrichments to run.
  • NewThe assistant can now add plain input columns itself, and then picks enrichments that use them in the same conversation.
v0.124.0

Links to views and rows

  • NewThe address bar now points at what you’re looking at: open a saved view or a row and copy the URL to send a teammate straight there. In a row’s details, 🔗 copies its link in one click.
v0.123.1

Folder shortcuts + chart polish

  • ImprovedHover a sidebar folder and click + to start a new sheet right inside it.
  • FixedIn Chart view, values with no numbers to total or average show “—” and sit at the bottom instead of showing 0.
v0.123.0

Signals from the assistant and templates

  • NewAsk the assistant “tell me when there’s news about these companies” or “ping me when a company has more than 500 employees” — it sets up the watch, the auto-refresh schedule or the alert for you to confirm with one click.
  • ImprovedThe Buying signals template now watches its news, Hacker News and hiring columns and re-checks them daily, so changes show up in your inbox with no extra setup.
  • ImprovedTemplate sample rows are added in one step.
v0.122.0

Select all rows, not just the loaded ones

  • NewTick the header checkbox on a big sheet and click “Select all N” to select every row that matches your filter, even ones not loaded yet. Delete (with undo), ✎ Edit and → Send to sheet then apply to all of them at once.
v0.121.0

Automations

When a row matches your rule after it runs, copy it to another sheet or get notified — once per row.

  • NewSheet ⋯ → ⚡ Automations (also in ⌘K). Pick a rule with the usual filter builder — e.g. Lead score ≥ 8, or Email is filled — then choose what happens: copy the row into another sheet (or a new one), or notify you in the inbox.
  • NewAutomations check each row as it finishes running, act at most once per row (re-runs and refreshes never duplicate), and show how many times they’ve fired. Pause or edit them any time.
  • NewWhen you create a copy automation you can also copy the rows that already match, in one go. Copies carry plain values, so nothing re-runs or costs credits.
  • ImprovedPairs with Watch for changes: “Latest news is changed → notify me” turns any enrichment into an alert.
v0.120.1

New columns start empty

  • FixedA new column named like one you deleted no longer shows the deleted column’s old values — they stay with the deleted column so Undo can bring them back.
v0.120.0

Push to Close and HeyReach

  • NewPush results → Close lead: each row becomes a Close lead (the company) with the person as its contact — name, title, email and phone.
  • NewPush results → HeyReach (LinkedIn) campaign: adds each person by their LinkedIn profile to a HeyReach campaign, with other columns (like an AI opener) as custom fields.
v0.119.0

Undo column delete

  • NewDeleted a column by mistake? Click Undo on the notice: the column comes back with its settings and every value it had. Undo works for 7 days.
v0.118.0

Chart view

  • NewNew ▤ Chart view next to Grid and Board: pick a column to see how many rows have each value — or the total / average of a number column per value (e.g. revenue by industry, leads by country). It follows your filter, and clicking a bar shows those rows in the grid.
v0.117.0

Faster navigation + fixes

  • NewColumns panel: click a column’s name to jump straight to it (handy on wide sheets); use the switch to show or hide it.
  • NewDouble-click a column’s right edge to fit its width to the content. ⇧Space opens the selected row. ⌘K lists the sheets you opened recently and your starred ones first.
  • NewWatched columns: cells whose value changed in the last week get a small orange corner — hover to see when, and what it was before.
  • ImprovedHeader fill bars and “Hide empty” now count every row in the sheet, not just the ones loaded so far.
  • FixedPasting or sending rows with an email that’s already in the sheet skips just those rows instead of failing. Empty cells group into one “(empty)” group and sort last. The row view’s ‹ › stay on the right row after a re-sort. Clicking a very long top value in Insights now finds its rows. Rows can only be sent to sheets in the same workspace.
v0.116.0

Watch for changes (signals)

Turn any enrichment into a signal: re-checked on every auto-refresh, with an inbox alert when values change.

  • NewNew “Watch for changes” option on enrichment columns. With Auto-refresh on (sheet ⋯ menu), watched columns are checked again every hour, day or week — even rows that already have an answer — so you hear when a company’s funding, headcount, news or job openings change.
  • NewWhen a refresh finds new values you get an inbox notice (“Changes spotted: 4 rows in Latest news”), the new “changed” cell filter shows exactly those rows, and the cell details show when it changed and what it was before.
  • FixedAssistant replies no longer cover the top of the panel, and a dropped connection while the model is thinking is retried automatically.
v0.115.0

Push people to Attio

  • NewPush results → Attio person: creates each row as a person in Attio (email, name, job title, LinkedIn) — or updates the existing person with that email, so re-runs never duplicate. Connect your Attio access token right in the wizard.
v0.114.0

Paste a list to add rows

  • NewCopy a list from anywhere — a spreadsheet, a doc, an email — and press ⌘V / Ctrl+V on an empty sheet: every line becomes a row. Columns are created for you (named from the first line when it looks like a header).
  • ImprovedPasting more lines than the sheet has rows now adds the extra rows instead of dropping them.
v0.113.0

Assistant: answers about your data

Ask questions about your data and get plain-English answers; the assistant can also add rows, group, rename and merge duplicates.

  • NewAsk “what’s the most common industry?”, “what’s the average deal size?” or “what kinds of titles do we have?” — the assistant looks across every row (not just the ones on screen) and answers in a sentence, with the numbers it used shown underneath.
  • NewMore things it can do for you: add rows you type or paste (“add Stripe, Linear and Vercel”), group the grid by a column, rename a column, and open the merge-duplicates tool.
  • FixedThe assistant and the ✨ expression helpers no longer come back empty with “thinking” models such as GPT-5 nano — they get enough room to finish their reasoning (you only pay for what’s used).
v0.112.1

Summary bar alignment

  • FixedThe summary under the first (pinned) column now lines up with its column.
v0.112.0

Send rows to another sheet

  • NewSelect rows and click → Send to sheet to copy them into a new sheet or one you already have. Pick which columns go. In an existing sheet, columns are matched by name and any missing ones are added. Enrichment results arrive as plain values, so nothing re-runs or costs credits. Handy for splitting out qualified leads or building a list per campaign.
v0.111.0

Summary bar

  • NewA summary bar under the grid shows each column at a glance: how full it is by default, or click a column’s summary to switch to filled / empty counts or, for numbers, the sum, average, min or max. It follows your filter and search, and ⊟ in the bottom bar hides it.
  • ImprovedSaved views remember their grouping — save a “By company” view and everyone who opens it sees the rows grouped.
v0.110.0

A better row view

  • ImprovedThe row details panel (⤢ on any row) now has ‹ › buttons, and ↑ / ↓ step to the previous or next row, so you can review a list record by record. It’s titled with the row’s first value.
  • ImprovedFind a field or value inside a row, hide empty fields, copy any value with one click, and edit long text in a multi-line box (Enter saves, ⇧Enter adds a line). Fields follow your view’s column order.
v0.109.0

Columns panel

  • NewNew ▥ Columns button above the grid: find any column, switch columns on or off, drag them into a new order, and hide every column that has no values yet in one click. It shows how many columns are hidden, so nothing goes missing.
v0.108.0

Clean-up recipes

  • NewFree, instant clean-ups: Last name, Proper-case names, Clean company name (drops Inc. / LLC / Ltd…), Tidy email addresses and Tidy phone numbers.
  • NewSeniority and Department from job title (AI): sort every title into C-level / VP / Director / Manager… or Sales / Marketing / Engineering… so you can filter to decision makers.
v0.107.0

Taller rows and bulk edit

  • NewRow height picker (≣ in the bottom bar): Short, Medium, Tall or Extra tall. Tall rows wrap long values — AI answers, descriptions, notes — over several lines so you can read them without opening the cell.
  • NewBulk edit: select rows, click ✎ Edit, pick a column and type a value to set it on every selected row (or clear those cells). ⌘Z undoes the whole change.
v0.106.0

Start from a template

Eight ready-made sheets for common jobs, each with sample rows to try it on.

  • NewHome now has a template gallery: Research target accounts, Find work emails, Score & qualify leads, Clean & check a contact list, Personalized outreach, Buying signals, Website audit and Local businesses.
  • NewEach template shows what you bring, the columns you get and which enrichments are free, AI or need a key — then creates the sheet with the inputs and enrichments already wired up.
  • NewTick “Add sample rows” to see it work straight away on a few well-known companies. Templates use the data providers you’ve connected (e.g. your email finder) and tell you which key would unlock more.
v0.105.0

Group rows by a column

  • NewGroup the grid by any column: open a column’s menu → ▤ Group by this column. Rows with the same value are kept together under a header showing the value and how many rows it has. Click the “Grouped by” chip to turn it off.
v0.104.0

Sheet assistant

Ask for what you want in plain English — the assistant filters, sorts, counts and sets up enrichments for you.

  • NewNew ✦ Assistant button on every sheet (also in ⌘K). Type things like “only show companies with more than 100 employees”, “how many rows are missing an email?” or “find their work emails”.
  • NewFilters, sorting, hiding columns and row counts are applied instantly (and are easy to undo). Anything that adds a column or spends credits shows up as a card you confirm with one click — ready-made enrichments open pre-filled with the right input columns, custom AI columns arrive drafted for review.
  • NewFree text columns (combine first + last name, upper-case a company, pull a domain) are created right away with no AI cost per row.
  • ImprovedUses your workspace’s default AI model and key, including local models; the chat is remembered for the browser tab.
v0.103.0

Folders and starred sheets

  • NewOrganize the sidebar with folders: hover a sheet → ⋯ → Move to folder (or type a new folder name), or just drag a sheet onto a folder. Folders are shared with your workspace, collapse with a click, and can be renamed with ✎.
  • NewStar the sheets you use most — they stay pinned at the top of the sidebar.
v0.102.0

Send leads to Instantly, Smartlead and lemlist

  • NewPush results → Instantly / Smartlead / lemlist campaign: paste the campaign ID and your API key, and each enriched row is added as a lead — email, name, company, title, phone, website and LinkedIn mapped automatically, every other column (like an AI opener) sent as a custom variable you can use in your emails. Each row is added once.
v0.101.0

Column insights

  • NewColumn insights: open any column’s menu → 📊 Insights to see how full it is, how many distinct values it has, its most common values (click one to filter to it) and min / median / average / max / sum for number columns. It summarizes whatever your current filter or search shows.
v0.100.6

More detail when no provider is sure

  • ImprovedWhen no verifier is sure about an email, “What it said” still shows the last answer (e.g. catch-all) so you know why it’s risky — and “Which provider found it / decided” is only filled in when one really did.
v0.100.5

Latest news + accuracy fixes

  • NewLatest news (Google News via Serper): the company’s top headline from the past year, with source, link and how long ago — a ready-made conversation starter.
  • FixedHacker News buzz no longer counts look-alike sites (stripes.com for stripe.com). It also counts the whole company site when your column has a subdomain.
  • FixedDomain age works for subdomains and emails like [email protected] (it looks up acme.com).
  • FixedDates from providers show the right day in every time zone.
  • FixedBounceBan says when a check is still running instead of leaving the cell empty; ZeroBounce “do not mail” answers get a second opinion in the all-provider check.
v0.100.3

More “What next?” ideas

  • ImprovedAfter finding company websites, “What next?” now offers the free domain age and Hacker News lookups too.
  • FixedThe public integrations page labels the all-provider enrichments clearly.
v0.100.2

Find free enrichments fast

  • ImprovedThe enrichment gallery has “Free” and “✓ Connected” filters — see what works with no account at all, or just the providers you’ve already added.
v0.100.1

Updated integration pages

  • ImprovedThe lead enrichment and email verification pages list the new providers — phone finders, Twilio Lookup, Clearout, BounceBan, Snov.io, PageSpeed and the free lookups.
v0.100.0

Catch-all email verification

  • NewVerify email (BounceBan): the catch-all specialist — gets real answers for company addresses most verifiers can only call “unknown”. Also the last step of “Verify email (all providers)”.
v0.99.1

Verify emails with every provider

  • FixedA rejected MillionVerifier or Clearout key is now reported as a key problem, not as “no match”.
  • NewVerify email (all providers): asks your connected verifiers in turn until one is sure an email is valid or invalid — catch-all and “unknown” answers get a second opinion — and says which verifier decided.
v0.98.2

Readable test results

  • ImprovedThe one-row test shows dates, numbers and percentages the way the sheet will (“Sep 12, 1995”, “1,941”, “87%”) instead of raw values.
v0.98.1

Fewer blocked API calls

  • FixedEnrichment requests now identify themselves properly, so APIs behind bot protection (like the domain registration lookup) no longer refuse them.
v0.98.0

Domain age

  • NewDomain age (free): when a company’s website domain was registered, when it expires and when it last changed — a quick “established or brand-new?” signal.
  • FixedPeople Data Labs and Brandfetch “no match” answers now leave the cell empty instead of showing an error (and the all-provider search moves on to the next provider).
  • ImprovedCustom API columns can treat “404 Not Found” as no result (Advanced settings).
v0.97.0

Hacker News buzz

  • NewHacker News buzz (free): how many Hacker News stories link to a company’s website, plus the top story’s title, points, date and discussion link.
  • ImprovedDates and counts that enrichments add are shown as dates and numbers automatically.
  • FixedWhen only one provider could run, the test result now reads naturally.
v0.96.1

Smarter input matching & provider fixes

  • FixedSnov.io now returns emails it could only partly verify (e.g. catch-all) instead of leaving the cell empty.
  • FixedColumns an enrichment added (“Email type”, “Role address?”, a company’s “LinkedIn page”) are no longer picked as the input for the next enrichment — your own columns come first.
  • FixedAll-provider searches skip a provider for rows that lack its inputs instead of calling it with blanks — and LeadMagic tries by email for rows without a LinkedIn link.
  • FixedPeople Data Labs runs rows that have only an email or LinkedIn link (no name).
  • ImprovedAdded columns get the provider in their header when the sheet already has one with that name (“Job title (Apollo.io)”).
  • ImprovedKeys that are transformed before sending (id:secret pairs, Basic auth) are masked in technical details too.
v0.96.0

“What next?” after an enrichment

  • NewEnrichments now suggest the natural next step — found emails → verify them, found phone numbers → check them, found websites → learn more about the company. One click opens it with the right column already picked (providers you’ve connected first).
  • ImprovedClearer hints in the API key box for providers that need two values (like id:secret).
  • ImprovedThe “AI web research” gallery section is now “Web search & research”.
v0.95.1

Shorter column headers from enrichments

  • ImprovedColumns an enrichment adds get short headers (“Line type”, “Match confidence”); the full explanation shows when you hover the header.
v0.95.0

Verify phone numbers

  • NewVerify phone (Twilio Lookup): is the number real, is it a mobile (can get texts) or a landline, which carrier — plus the number in clean international format.
  • ImprovedPhone number columns are recognized automatically when you set up an enrichment.
v0.94.0

Find phone numbers

  • NewFind a phone number (all providers): tries LeadMagic, ContactOut and RocketReach in turn from a LinkedIn profile or work email, and says which one found it.
  • NewMobile number (LeadMagic): a direct mobile from a LinkedIn profile or work email — free when nothing is found.
v0.93.2

Tidier enrichment gallery

  • FixedLong enrichment names in the gallery wrap neatly instead of running under their badge (and the panel no longer scrolls sideways).
v0.93.1

Snov.io email finder (also in the all-providers search)

  • NewFind a person’s email (Snov.io): a work email from a full name and company website, with whether Snov.io could verify it. Paste your Snov.io User ID and Secret as id:secret — sign-in is handled for you on every lookup.
  • ImprovedSnov.io joins “Find a person’s email (all providers)” on sheets with a company website column.
v0.92.0

Clearout email verification

  • NewVerify email (Clearout): valid / invalid / catch-all, a plain “safe to send?” answer, and flags for free, role and disposable addresses.
v0.91.0

Website speed scores

  • NewWebsite speed score (Google PageSpeed): speed and SEO scores, load time and real-visitor speed for each company’s site — great for spotting prospects with slow websites.
  • ImprovedPercentage outputs are shown as percentages automatically.
v0.90.1

Clearer run confirmations

  • ImprovedBefore a big run, the confirmation now says whose credits it spends (e.g. “Uses your Hunter credits”) and estimates in API calls or AI tokens instead of abstract units.
v0.90.0

Google search enrichment

  • NewGoogle search (Serper): the top Google result’s link, title and snippet for each row — add words like “careers” or “site:linkedin.com/company” to aim it.
v0.89.1

LinkedIn URLs sharpen person matches

  • ImprovedPeople Data Labs can now find a person from just their LinkedIn profile URL; Apollo uses it (when you have one) to match the right person.
  • ImprovedExtra columns an enrichment adds are named after what they hold (“Phone”, “Work email verified?”) instead of internal codes.
v0.89.0

Contact info from LinkedIn, RocketReach & hiring signals

  • NewEmails & phone from LinkedIn (ContactOut): work email, personal email and phone from a LinkedIn profile link — a natural next step after “Find decision makers”.
  • NewEnrichments understand a “LinkedIn profile URL” column as an input.
v0.88.3

Enrichment fixes

  • FixedEditing a saved enrichment keeps its results in their own columns — it no longer drifts back onto columns you own.
  • FixedThe starter pack and sheet templates keep each recipe’s answer format (Industry’s category list, Lead score’s number) and skip list-building recipes, which need their own setup.
  • FixedPerson email finders skip rows that are missing the company, instead of sending a paid request that can’t succeed.
  • FixedDouble-clicking Create on a list enrichment can’t create two sheets; a failed setup no longer leaves an empty sheet behind; picking a different target sheet after an error is respected.
  • FixedLoading a saved request or prompt template fully replaces the previous recipe’s settings.
  • FixedYes/No answers: “N/A” is no longer read as “No”, and reasoning text from thinking models is ignored.
  • NewRun conditions can require several values: e.g. {{name}} && {{website}} runs only when both are filled in.
  • NewRocketReach: work email, phone, title and LinkedIn from a name and company — also part of “Find a person’s email (all providers)”.
  • NewHiring signals (PredictLeads): how many roles a company has open, the latest titles and when the newest appeared — a strong sign a company is growing.
v0.88.2

Your data stays yours

  • FixedA new enrichment never writes into a column you already have — if its result would land in, say, your own “Website” or “Phone” column, it gets its own “Website (Google Maps)” column instead. The setup panel shows exactly where each result goes.
v0.88.1

Smarter imports

  • ImprovedImported columns that are clearly emails, links or yes/no values get the matching format automatically — clickable emails and links, real checkboxes.
  • NewCompany profile (Hunter): description, industry, employee range, founding year, HQ, LinkedIn and X pages, logo and tech stack from a website.
  • ImprovedUpdates roll out without interrupting anyone mid-request.
  • NewNew AI recipes: Lead score (1–10 against the ideal customer you describe) and Qualify: yes or no (your own question). Classify industry now always answers with exactly one of its categories.
  • NewPublic Integrations page (liquidrows.com/integrations) listing every data provider and ready-made enrichment — kept up to date automatically.
v0.88.0

Find people at a company

  • NewFind people at a company (Hunter): for each company website, adds the people Hunter knows — name, title, email, LinkedIn, confidence and company — as rows in a people sheet (a new one is created for you). Duplicate emails are skipped, so re-running is safe.
  • ImprovedEnrichments that produce lists ask “Where should the results go?” and add any missing columns to that sheet for you.
  • NewFind decision makers (web research): no data-provider account needed — an AI researcher finds people in the roles you describe (e.g. “founders and heads of sales”) and adds them, with titles and LinkedIn, to a people sheet.
  • ImprovedEnrichments can have simple settings in their setup (like which roles to look for).
v0.87.1

Results that look right

  • NewImage column format: logo and picture links show as thumbnails right in the grid.
  • ImprovedReady-made enrichments set their result formats for you — emails and links are clickable, logos show as images, ratings and scores are numbers.
v0.87.0

Ask AI & Web research, simplified

Writing your own AI column now starts with one plain question — the technical settings are tucked away.

  • ImprovedAsk AI and Web research columns open with “What should the AI do for each row?” and the key it uses; provider, model, temperature, prompts, budgets and filters move under Advanced settings.
  • NewAnswer format for Ask AI: Free text, Yes / No, A number, or One of a list (e.g. Hot / Warm / Cold). Answers are cleaned up to exactly that shape, so they sort and filter properly.
  • NewWeb research: “Also find other facts” adds extra columns to fill in the same run.
  • ImprovedColumn types have plain names — Ask AI, Web research, Custom API — and run conditions and cell colors live in their own collapsed section.
v0.86.0

Dropcontact & multi-step lookups

  • NewDropcontact: verified email, job title, LinkedIn and phone from a name and company — pay only when a verified email is found. Also tried last in “Find a person’s email (all providers)”.
  • NewAPI enrichments can now make follow-up requests — look something up, then fetch its details, or start a job and wait for the result — so providers that work in two steps are supported (Advanced settings → Follow-up requests).
v0.85.0

Google Maps, Brandfetch & Findymail

  • NewLocal business details (Google Maps): phone, website, full address, star rating, review count, Maps link and open/closed status from a business name — add a city or address column for better matches.
  • NewBrand & logo (Brandfetch): logo image, brand color, description, LinkedIn and X pages, founding year, location and industry from a website.
  • NewFindymail email finder (verified emails only) — also added to “Find a person’s email (all providers)”.
  • ImprovedEnrichments can take optional inputs (like a city) that improve matches without being required.
  • NewMore email verifiers: Emailable, Kickbox and Debounce (now 8 in total).
v0.84.0

Find emails across every provider

One enrichment tries all your connected email providers in turn — plus a searchable, organized enrichment gallery.

  • New“Find a person’s email (all providers)” tries Prospeo, LeadMagic, Hunter, Apollo and People Data Labs — whichever you’ve connected — and stops at the first one that finds it, recording which provider answered.
  • NewHunter Email Finder: a person’s email from their name and company website, with a confidence score.
  • ImprovedThe enrichment gallery has search and sections (Find people & emails, Verify emails, Company data, AI web research…), and providers you’ve already connected are marked “✓ connected”.
  • ImprovedWhen every provider in a chain fails, the test shows what each one said, in plain English.
v0.83.0

New data providers

Apollo.io, People Data Labs, Prospeo, LeadMagic, ZeroBounce and NeverBounce — each with the same plain-English setup.

  • NewApollo.io: find a person’s work email (plus title, LinkedIn and match confidence) from name + company, and a full company profile (size, industry, revenue, founding year, HQ, funding, tech stack) from a website.
  • NewPeople Data Labs: person profile (work email, title, company, LinkedIn, location) and company profile (size, industry, founded, HQ, funding).
  • NewEmail finders: Prospeo (verified emails only) and LeadMagic (valid emails, with employment confirmed).
  • NewEmail verification: ZeroBounce and NeverBounce, alongside Hunter and MillionVerifier.
  • ImprovedProviders that report problems inside a normal response (bad key, no credits) now show a clear error instead of an empty cell.
v0.82.0

Enrichments, explained

Every ready-made enrichment now tells you what it does, what it needs, and what you’ll get — and Test shows a clear answer for one row.

  • NewPicking an enrichment opens a simple setup: a plain-English description, “What it needs from your sheet” with a column picker and an example for each input, the account or AI key it uses, and “What you get” listing each result and the column it lands in.
  • ImprovedTest runs on one row you choose and shows a readable result — the value and each extra field by name — or a plain explanation of what went wrong (bad key, out of credits, no match…). The raw response is tucked under “Technical details”.
  • ImprovedThe request details (address, headers, response mapping) now live under “Advanced settings” — you never need them for a ready-made enrichment. After a good test, run every row or try the first 10 in one click.
  • ImprovedWikipedia summary finds the right article by searching (so “Notion Labs” finds Notion and ambiguous names skip disambiguation pages), and shows which article it matched.
  • FixedA “Wikipedia url” or “LinkedIn URL” column is no longer mistaken for the company’s website.
v0.81.2

Polish & fixes

  • FixedDialogs and side panels no longer steal focus while you type (it used to jump out of the field every few seconds during runs).
  • FixedEscape in a grid cell now cancels the edit instead of saving it.
  • FixedSwitching sheets closes any open panel or dialog, and a slow import/sync on one sheet can no longer paint its rows onto another.
  • FixedCells no longer stay stuck on “Running” after a dropped connection — the sheet catches up when it reconnects.
  • FixedDouble-clicking “Create enrichment” can’t create the column twice; “Run anyway” keeps Run all disabled until the run is queued.
  • FixedSaving views, formats or a spend limit only touches that setting, and rolls back if the save fails.
  • ImprovedThe column menu fits small screens, and view-only members no longer see buttons they can’t use.
v0.81.1

Faster big sheets

  • ImprovedScrolling deep into large sheets loads pages up to ~9× faster (20,000 rows in: 180 ms → 20 ms per page on the database).
v0.81.0

Account settings

Change your name and password, and sign out of every other device.

  • NewYour account (avatar at the bottom of the sidebar): set your display name, change your password, or sign out every other session.
  • ImprovedChanging your password signs out every other browser and device signed in to your account — including live connections.
  • NewPublic REST API reference at liquidrows.com/docs/api — authentication, rows, filters, runs, exports and webhooks, with copy-paste examples (linked from API tokens).
v0.80.0

Column formats

Show any column as a number, currency, percent, date, link, email or checkbox — the stored value never changes.

  • NewRight-click a column → Format: Number, Currency, Percent, Date, Link, Email or Checkbox. Values display formatted in the grid, the row view and board cards; click a cell to edit the raw value.
  • NewCheckbox columns toggle with a click (or Space), and link / email cells get a quick ↗ open button.
  • NewNew free recipe “Find company website”: turns a company name into its web domain (plus the matched name), so domain-based enrichments work on name-only lists.
  • FixedSaving a view or layout no longer risks overwriting sheet settings changed elsewhere (like a running link sync).
v0.79.2

Faster first load

  • ImprovedThe home page and sign-in load a fraction of the code they used to (the landing page now downloads ~10 KB of script instead of ~570 KB); sheets and the changelog load on demand.
  • ImprovedEverything is now sent compressed — app code and large row pages travel about 3× smaller.
v0.79.1

Tighter key protection

  • FixedSecrets can no longer be placed inside AI or agent prompts — keys only travel as authentication, so a model can’t be asked to repeat one.
  • FixedCustom secrets are sent nowhere until an owner chooses their hosts (set when adding the key, or via edit) — no more “first column to use it decides”.
  • FixedKeys are only sent over https, never follow a redirect to another site (custom auth headers and request bodies are dropped), and are scrubbed from any response that echoes them back.
v0.79.0

Pull contacts from your CRM

Import HubSpot contacts or Pipedrive people into a sheet in one click, then enrich them.

  • NewImport from a link or CRM → HubSpot / Pipedrive pulls up to 10,000 contacts (name, email, phone, company, title, CRM id) with your HUBSPOT_TOKEN / PIPEDRIVE_TOKEN, straight into the usual column-mapping step.
  • NewCRM imports can stay in sync: pick a dedup key (email or the CRM id) and ⋯ → Sync from link re-pulls contacts on demand or every hour/day.
v0.78.0

Keys stay where they belong

Every workspace key is locked to the services it’s meant for, so a column can’t send it anywhere else.

  • NewAPI keys & secrets are bound to the hosts they’re sent to. Well-known keys (OpenRouter, OpenAI, Anthropic, xAI, Serper, HubSpot, Pipedrive…) lock to their provider; other secrets lock to the first service they’re used with.
  • NewOwners can see and edit each key’s allowed hosts in API keys & secrets. A column that tries to send a key elsewhere fails with a clear message instead.
v0.77.1

Smarter syncs

  • FixedNew HubSpot and Pipedrive push columns push each row once — re-running the sheet or a sync no longer creates duplicate contacts.
  • ImprovedRe-imports and syncs with a dedup key report what actually happened: “12 new · 3 updated · 85 unchanged”.
  • FixedWhen a sync or re-import changes a row’s value, enrichments that depend on it are marked stale and recompute on the next run, instead of quietly describing the old data.
  • FixedSyncs only enrich rows that are new or changed, and respect columns you set to auto-run off (pushes, costly agents).
  • FixedDisconnecting a link or turning sync off while a sync is running now sticks.
  • ImprovedIf a scheduled sync starts failing (say, the Google Sheet was made private), whoever set it up gets one notification — not one per hour.
  • FixedResearch agents get an honest “no results” for queries nothing matches, rather than a search error — so not-found answers are cached instead of re-searched every run.
v0.77.0

Sync from Google Sheets

A sheet imported from a link can re-sync on demand or every hour/day — new rows are added, changed values update, enrichments stay.

  • NewSheets imported from a Google Sheets / CSV link remember it: ⋯ → “Sync from link…” re-imports with the same column mapping, now or automatically every hour or day.
  • NewOn sheets with auto-run on, each sync enriches the rows that are new or changed (unchanged rows are served from cache).
  • FixedRe-importing rows with a dedup key no longer wipes their enrichment results — imported columns update and everything else on the row is kept.
  • FixedImported rows now keep the order they had in the file (large imports used to shuffle within each batch).
v0.76.0

Import from Google Sheets

Paste a Google Sheets link (or any CSV link) to import it — same column mapping and dedupe as a file upload.

  • NewSheet ⋯ menu / ⌘K → “Import from Google Sheets / link”: paste a share link and the tab you have open is imported. Private sheets get a clear “make it viewable by link” message.
  • NewHome → “Google Sheets link” starts a new sheet from a link, named after the spreadsheet.
v0.75.0

Push to Pipedrive

Send enriched rows straight into Pipedrive as people, and research agents that know what day it is.

  • NewPush results → Pipedrive person: maps name (or first + last), email, phone and job title, authenticates with a PIPEDRIVE_TOKEN secret, and keeps the new person’s id in the cell.
  • ImprovedResearch agents are told today’s date, so they weigh recent sources over outdated memory for things like current CEOs and office locations.
v0.74.2

Agents read instead of re-searching

  • ImprovedResearch agents now see how many searches and page reads they have left, so they read the best result (or answer from a clear snippet) instead of re-phrasing the same search until the budget runs out.
  • ImprovedWhen an agent runs out of turns it now saves every field it found evidence for, instead of blanking the whole row.
v0.74.1

More reliable free web search

Agent columns without a search API key now use a second free search engine that works where the first gets blocked.

  • ImprovedKeyless web search adds Bing results (with site: filters) ahead of the other free fallbacks, so agents without a search key find real pages again.
  • Fixedsite: searches no longer fall back to unrelated encyclopedia articles.
v0.74.0

Sharper research agents

Agent columns find answers more often: better fallbacks when a search engine comes back empty, and key facts from info boxes.

  • ImprovedWhen a search engine returns nothing (or quietly throttles), the agent now tries the next engine instead of giving up — with Wikipedia search as a free last resort.
  • ImprovedPages with an info box (founded, headquarters, key people, revenue…) now hand those facts to the agent first instead of dropping them.
  • FixedEmpty search results are no longer cached, so a throttled moment doesn’t stick for a whole batch.
v0.73.0

Describe it, get a column

Type what you want in plain English and your model drafts the whole enrichment column.

  • NewDescribe an enrichment (new enrichment → ✨ Describe what you want): e.g. "the CEO's name and LinkedIn, and company size". Your workspace's model drafts the column — AI or web-research agent, the prompt wired to your columns, structured output fields and a run-if — and fills the editor for you to review before creating it.
v0.72.0

Two new sheet templates, plus polish

  • NewNew sheet templates on an empty sheet: "Company research" (summary, CEO / founded / HQ, LinkedIn, industry, logo) and "Contact verification" (first name, email domain, personal-email flag, mail-server check — all free).
  • FixedHubSpot push maps columns precisely (no more "Personal email" landing in HubSpot's email field) and never sends the same property twice. The starter pack skips recipes you already have, doesn't add duplicates, keeps your saved search / proxy defaults, and its AI columns don't auto-run.
  • FixedInvite links: the invite survives signing in after an expired session, a used-up or revoked link now says so after sign-in, and the token is no longer carried in the sign-in page's URL. The newest notification is now properly marked read.
v0.71.0

Starter packs, and confirmations you can click

  • NewRecipe starter pack: in a new enrichment, "Add all N ready recipes at once" creates every recipe your columns support in one go — summary, facts, funding, LinkedIn, industry, opener, Wikipedia, mail-server check… — with their output columns. Nothing runs until you choose to.
  • FixedConfirmations opened from the column panel (the cost estimate before ▶ Run, Re-run all, Delete column) appeared behind the panel and couldn't be clicked. They now open on top.
  • FixedThe Lead enrichment template's AI column now uses your workspace's model and key — before, it pointed at one provider with no key and failed on every row.
v0.70.0

Keyboard shortcuts at a glance

  • NewPress ? anywhere (or ⌘K → Keyboard shortcuts) for every shortcut in one place — navigation, editing, ranges (⇧ select, ⌘C / ⌘V, ⌘D fill-down), undo, find and the command palette.
v0.69.0

Brave Search for research agents

  • NewResearch agents can search with Brave: save a Brave Search API key as BRAVE_API_KEY in Secrets and it joins the search chain automatically (after Serper, before the free fallback) — a cheap way to keep big runs fast when the free engine's shared rate limit is the bottleneck. System health checks it too.
v0.68.2

Cleaner view-only experience

  • ImprovedView-only members no longer see run, delete, duplicate or configure actions in column menus and row hover actions — only what they can actually do.
v0.68.1

Security and reliability fixes

  • FixedSecurity: view-only members can no longer use a workspace API key through the model-catalog lookup (it could send the key to a server of their choosing). Hunter recipes send the key in a header instead of the URL. Members removed from a workspace drop out of "who's viewing" right away.
  • FixedPlain lookups use far less memory on big source sheets; rollup counts stay exact beyond 5,000 matches; HTTP columns set to 0 retries are no longer retried on 429; "Run finished" always reaches the right person; opening 🔔 only marks the notifications you actually saw as read.
v0.68.0

Push contacts to HubSpot

  • NewHubSpot preset in Push results: finished rows become HubSpot contacts. Columns are mapped to standard contact properties automatically (email, first/last name, company, job title, phone, website, city, LinkedIn); the new contact's id lands in the cell. Uses a HubSpot private-app token saved as HUBSPOT_TOKEN.
v0.67.0

Invite links

Invite anyone — even people without an account — with a link.

  • NewInvite links (Share → Invite link): create a link that joins as a member or a read-only viewer, copy it into an email or chat, and the person signs up (or signs in) and lands in your workspace. Links last 7 days, show how many people joined, and can be revoked any time.
v0.66.0

Push to Slack, Discord, Zapier and Make

  • NewPush results presets: send finished rows as a Slack or Discord message (paste the channel's incoming-webhook URL), or as JSON to a Zapier "Catch Hook", Make or n8n webhook, or any endpoint.
  • FixedPush columns now escape values properly — a cell containing a quote or a line break used to produce invalid JSON and the push failed.
v0.65.0

See who else is here

  • NewPresence: when teammates have the same sheet open, their avatars appear in the sheet's top bar (hover for who it is) — so you know before you re-run a column someone else is watching.
v0.64.1

Fewer failed cells under load

  • FixedWhen an AI provider or API answers "429 Too Many Requests" during a big run, the cell now waits (respecting the provider's Retry-After) and tries again instead of failing straight away.
v0.64.0

Notifications

A 🔔 inbox tells you when runs finish, imports land and exports are ready — even if you weren't watching.

  • NewNotifications inbox (🔔 in the sidebar): "Run finished" with row and error counts for runs you started, "Import finished / failed", and "Export ready". Unread count on the bell; click a notification to jump to its sheet.
v0.63.0

Rollups

Lookups can now count, list, sum or average every matching row — not just return the first.

  • NewRollups in lookup columns: choose what to return across all matching rows in the other sheet — the first value, a count ("contacts at this company"), a de-duplicated list ("all their titles"), or a sum / average of numbers ("total deal value"). Feed a list into an AI column to summarize a whole group.
v0.62.0

View-only members

Share a workspace with a client or stakeholder who can look, comment and export — but not change or spend.

  • NewViewer role: invite someone as "viewer (read-only)" in Share. Viewers see every sheet live, can leave row comments and export CSVs, but can't edit cells, run enrichments (no spend), import, delete or change settings — enforced on the server, with a "View only" badge in the app.
v0.61.0

Connector recipes

Ready-made API enrichments — free ones and bring-your-own-key ones — wired to your columns.

  • NewNew recipes that call APIs for you: Wikipedia summary + link, mail-server (MX) check for an email domain, and company logo URL — all free, no key — plus "Find emails at a domain" and "Verify email" with Hunter, and email verification with MillionVerifier using your own keys. Each one maps its extra fields into their own columns.
v0.60.0

Comments on rows, plus a hardening round

Leave notes on any row, and a batch of security and reliability fixes.

  • NewRow comments: open a row and add notes ("Called — left voicemail", "Wrong contact, try the CFO"). Rows with comments show a 💬 on their row number; authors can delete their own. Comments show up in Activity too.
  • ImprovedPersonal views are now private on the server too — other members never receive them, and saving views can't drop someone else's.
  • FixedSecurity: paginated HTTP columns never follow a next-page link to another site (requests may carry keys); failed sign-ins are counted per address and network so nobody can lock someone else out; webhook limits only track real webhooks.
  • FixedReliability: self-hosted model slots renew while a long call runs (no over-subscription on slow retries); the cell you're editing stays mounted while scrolling a wide sheet; Activity entries for deletes are always attributed.
v0.59.0

Board view

See any sheet as a kanban board — perfect for outreach pipelines.

  • NewBoard view: switch a sheet from ▦ Grid to ▥ Board and group rows into lanes by any column (Status, Stage, Industry…). Cards show the row's key fields; drag a card to another lane to change its value (one ⌘Z undoes it), click it to open the row. Remembered per sheet.
v0.58.0

Personal views

  • NewPersonal views: when saving a view, tick "Only visible to me" to keep a working view (your filters, sort, columns) without adding a tab for everyone else on the sheet. Personal views are marked 🔒.
  • ImprovedInbound webhooks are rate-limited per sheet (600 a minute, 50,000 a day by default), so a leaked webhook URL or a runaway integration can't create unbounded rows and paid runs.
v0.57.0

Activity: an audit trail for every workspace

See who added, edited, ran, imported, exported or deleted what — and when.

  • NewActivity log (sheet ⋯ menu → ◷ Activity, or ⌘K): every change to sheets and columns, every run and cancel, imports, exports, row deletes / restores / merges, key changes, member changes and spend-limit edits, with who did it and when. Filter to the current sheet or see the whole workspace. Secret values and cell contents are never recorded.
v0.56.0

System health for operators

Admins get one page that shows whether everything enrichments depend on is actually working.

  • NewSystem health (admins — sidebar → ◍ System health): database and Redis status, connected workers, queue depth, every active run, plus on-demand live checks of web search (Serper and the keyless fallback), the headless scraper, self-hosted model servers and each workspace's proxy pool — so a drained search key, a dead proxy list or an offline model box shows up in one glance instead of as mysterious "not found" answers.
v0.55.0

HTTP columns can fill a whole sheet

Point an HTTP column at a list endpoint and every item — across pages — becomes a row in another sheet.

  • NewList output for HTTP columns: tick "Write each item as a row in another sheet", give the path to the items array and map item fields to target columns. Next-page links or cursors are followed automatically (up to a page cap), duplicates can be skipped by a key column, and the cell records how many items were written. Missing target columns are created for you.
v0.54.0

A getting-started checklist

  • NewNew workspaces get a short checklist on Home — bring in a list, connect a model, add an enrichment, test and run it. Steps tick themselves off as you go, and it disappears when you're done (or hit Hide).
v0.53.0

Local models that survive big runs

Self-hosted model servers get a fleet-wide concurrency cap, so a 20,000-row run on one GPU queues instead of timing out.

  • NewPer-host concurrency for self-hosted LLMs: AI and agent columns pointed at a local model server (e.g. Ollama on one GPU) now share a small number of slots across all workers — rows wait their turn instead of flooding the box and failing with timeouts. Cloud providers are unaffected. Operators tune it with LLM_HOST_CONCURRENCY ("host:port=N").
v0.52.1

Escape closes the sheet menu

  • FixedEscape now closes the sheet ⋯ menu.
v0.52.0

Works on your phone

A real phone layout — check a run's progress or look up a row from anywhere — and the sheet ⋯ menu opens again.

  • NewPhone layout: the sidebar becomes a slide-out drawer behind ☰, the grid uses the full width, and the topbar keeps the essentials (title, auto-run, ⋯ and Run all). Import, export, sharing, keys, webhooks and push move into the ⋯ menu on small screens.
  • FixedThe sheet ⋯ menu (duplicate sheet, merge duplicates, run history, API tokens, delete…) closed the instant it opened, so it never appeared. It opens again.
v0.51.1

Sign-in protection

  • ImprovedSecurity: repeated wrong passwords for an account are paused for 15 minutes after 10 failures, and very high sign-in / sign-up volume from one address is throttled — guessing passwords is no longer free.
v0.51.0

Point and click API responses into columns

Test an HTTP column and pick fields straight from the real response — no hand-written JMESPath.

  • NewResponse picker for HTTP columns: after ⚡ Test, the API's response appears as an expandable tree. Click "+ column" on any value to map it into its own column (the path and a sensible column name are filled in for you), or type a JMESPath to preview its result live before mapping it.
v0.50.1

Smooth scrolling on very wide sheets

  • ImprovedSheets with more than 30 columns only draw the columns on screen (plus your frozen ones), so scrolling a 90-column sheet renders ~6× fewer cells and the worst stutters dropped from half a second to under 0.1s.
  • ImprovedMoving the cursor with the arrow keys / Home / End now scrolls its column into view, and find-in-sheet accounts for all frozen columns.
v0.50.0

Agent run quality at a glance, plus a round of fixes

Usage & costs now grades every agent column — how often it finds an answer and how often its web tools fail — and merges can be undone.

  • NewAgent quality in Usage & costs: each agent column shows its found-rate (green / amber / red) and flags search or page-read error rates, so you can tell a weak prompt from a broken tool before re-running thousands of rows.
  • NewUndo a merge: closing Merge duplicates offers Undo, which restores every merged row (values already copied into the kept rows stay).
  • FixedSecurity: when an HTTP, AI or agent request is redirected to a different site, its API key / Authorization header is no longer sent along.
  • FixedRun progress after a cancel: rows left over from a cancelled run no longer count toward the next run, which could show "Run finished" while it had barely started. Two runs started at once no longer lose one's total.
  • FixedAgent fields named like "Company Size" now land in their (auto-created) column; lookups match values with stray tabs/newlines consistently and see source edits within seconds.
  • FixedSmaller fixes: typing "c" or "d" on a cell starts editing it; undoing a huge paste no longer floods the server; Undo after switching sheets can no longer load the wrong sheet; ⚡ Test defaults to the first row as shown; exports keep a view's custom column order; one unreachable website can no longer bench a whole proxy pool.
v0.49.0

A monthly budget for the whole workspace

Owners can cap a workspace's monthly spend across every sheet, with a warning before it's reached.

  • NewWorkspace monthly spend limit (Usage & costs → owners): month-to-date spend across all sheets with a progress bar. Once the limit is reached, paid runs pause in every sheet — checked before a run starts and again while it runs — and resume next month or when the limit is raised.
  • NewSpend alert: sheets show a warning banner once the workspace passes 80% of its monthly limit, and a stop banner at 100%.
  • FixedThe API-token example for adding a row used the wrong body ("fields" instead of "values") and created empty rows. Fixed, with new examples for running a column and watching its progress.
v0.48.0

Ranges and frozen columns

Select a block of cells to copy, clear or fill down, and pin as many leading columns as you need on wide sheets.

  • NewRange selection: Shift+arrows or Shift+click selects a block. ⌘C copies it as a table that pastes cleanly into Excel or Google Sheets, Delete clears it, ⌘D fills the top row down, and pasting a single value fills the whole range. Every one is a single ⌘Z.
  • NewFreeze columns: open any column's menu → "Freeze up to here" to keep every column up to it visible while you scroll sideways (and "Unfreeze" to undo). Remembered per sheet.
  • FixedPressing Escape while editing a cell now returns to keyboard navigation — before, arrow keys stopped working until you clicked the grid again.
v0.47.1

Big sheets: instant search, fast open

  • ImprovedSearching rows on large, wide sheets is about 15× faster — a 24,000-row, 59-column sheet went from ~16 seconds to under a second. Results are exactly the same.
  • ImprovedOpening a large sheet is much faster: the per-column success/error counts that load with every sheet (and refresh after each run) went from ~10 seconds to under half a second on a 24,000-row, 59-column sheet.
  • FixedWhen an agent comes back empty because its web tools were failing (search engine down, proxies unreachable), the blank is no longer cached — "Retry errors" / re-runs actually try again instead of replaying the outage for a day.
v0.47.0

Recipes: one-click enrichments for your columns

Pick a recipe — domain from email, company summary, CEO/founded/HQ, funding, LinkedIn, industry, personalized opener — and it's wired to your own columns.

  • NewRecipes in the new-enrichment panel: 11 ready-made enrichments whose inputs are matched to your sheet's columns by name ("Work Email", "Account Name", "Company Website"…). Free formula recipes (domain from email, clean domain, first name, personal-email flag) fill instantly; AI and web-research recipes come pre-written with a sensible "run if".
  • ImprovedStructured outputs create their own columns: saving an agent with extra fields, an AI column with a JSON map, or an HTTP column with a response map now adds any missing output columns — before, values for a column that didn't exist were silently dropped.
  • FixedAgent columns keep working when a proxy list goes stale: if every proxy is down, searches and page reads fall back to a direct connection instead of failing, and dead proxies are skipped quickly instead of timing out on every request.
  • FixedAgents on reasoning models (e.g. gpt-5-nano) no longer save half-written answers: answers cut off by the token limit are retried with more room, repaired when possible, and otherwise recorded as not found — never as a raw JSON fragment.
v0.46.0

Views remember their layout

Each saved view keeps its own column order and widths, and long runs tell you when they finish.

  • NewPer-view column order and widths: drag or resize columns inside a saved view and only that view changes — so "Outbound" can lead with email and title while "Research" leads with the agent columns. Shared with everyone on the sheet; "All rows" keeps the sheet's own layout.
  • NewRun progress in the browser tab title ("(45%) Leads") while a run is going, and a desktop notification when a big run finishes while you're in another tab (you'll be asked once for permission).
v0.45.0

Undo deleted rows

Deleting rows is no longer forever — every delete can be undone for a few days.

  • NewUndo row deletes: deleting one row or a whole selection shows "Deleted N rows · Undo". Undo puts them back exactly as they were (same values, history and position). Deleted rows are kept for 7 days.
  • ImprovedDeleting many selected rows is one fast request instead of one per row.
v0.44.0

Know the cost before you run

Paid runs show how many rows they will touch and an estimated cost from the column's own history, before anything is spent.

  • NewCost estimate before paid runs: running an AI, agent, HTTP or waterfall column on more than a handful of rows shows the row count, estimated units (from that column's recent runs) and your spend-limit headroom — with a warning when the run would hit the limit partway.
  • New⚡ Test can run on any loaded row, not just the first — pick it from the "on row" menu next to the button.
  • ImprovedConfirmations (delete row/column/sheet/view, revoke token, remove member, delete key, big runs) are clear in-app dialogs instead of browser pop-ups.
v0.43.1

Export exactly what you see

  • FixedExport with a filter or view active now exports only the matching rows — previously it always exported the whole sheet.
  • ImprovedExport follows the view: hidden columns are left out and columns come out in the order shown.
  • ImprovedSecurity: people removed from a workspace stop receiving its live updates within minutes, and new rows only store values for columns that exist.
v0.43.0

Drop a file, start enriching

Start a sheet by dropping a CSV or Excel file on Home, drag files straight onto any sheet, and drive the whole sheet from ⌘K.

  • NewStart from a list: drop a CSV or Excel file on Home (or click to browse) and a new sheet named after the file opens with the column mapping ready.
  • NewDrag and drop a CSV or Excel file anywhere on a sheet to import it.
  • New⌘K now runs sheet actions: add an enrichment, import, export, run all, merge duplicates, open keys, costs or run history — plus per-column "Edit", "Run empty rows" and "Retry errors". Multi-word search ("run comp") finds them.
  • ImprovedNew sheets no longer ask for a name up front: you land in an "Untitled sheet" with the title ready to rename.
  • FixedHTTP columns with a per-second rate limit no longer fail big runs with "rate limit … saturated" — rows wait their turn instead.
v0.42.0

See why a run failed — and paste like a spreadsheet

Error badges open a triage view that groups failures by cause with a suggested fix, and the grid takes ⌘V of a whole copied range.

  • NewError triage: click a column's red error badge to see its failures grouped by cause ("312× HTTP 429 …"), each with a plain-English fix (re-paste the key, wait out a rate limit, raise the spend limit, check the URL). One click shows those rows, retries just the errors, or opens the column.
  • NewPaste a range: copy a block from Excel, Google Sheets or another sheet and press ⌘V on a cell — it fills right and down from the cursor (text columns only). One ⌘Z undoes the whole paste.
  • NewType to edit: start typing on a selected text cell to replace its value, no Enter needed.
  • ImprovedLookup columns over big source sheets are much faster: the source is indexed once and shared across rows, instead of being searched again for every row.
v0.41.0

Real progress for big runs, and a smoother first enrichment

Runs now show true progress across every row with an ETA, and creating an enrichment leads straight into testing and running it.

  • NewRun progress for the whole sheet: column and sheet runs show a live bar in the footer — rows done of total, errors, and time left — counted on the server across every row, not just the rows loaded on screen. When it finishes you get a summary with the error count.
  • ImprovedCreating an AI, agent, HTTP or waterfall enrichment keeps the panel open on the new column with Test, Pilot and Run right there, instead of leaving you with an empty column.
  • ImprovedNew AI and agent columns pick a provider you already have a key for (or your workspace default), instead of a model server only one network could reach.
  • Improved"▶ Run" in the column panel now fills only rows without a result, so it never re-bills finished cells. Re-running every row is a separate "Re-run all…" with a confirmation.
  • New"Keep existing values" option per enrichment: cells that already have a result are never recomputed, even on Re-run all or after you edit the column — protects values you paid for or checked by hand.
  • ImprovedDuplicate sheet asks with clear buttons ("Columns only" / "Columns + all rows") instead of an OK/Cancel puzzle.
  • FixedOpening a different column while the panel was open could show the previous column's settings. Validation messages like "Add at least one step" are no longer mislabeled as invalid JSON.
  • ImprovedLive updates from big runs no longer re-render the grid when none of the changed rows are on screen.
v0.40.1

Faster big sheets, safer runs

Scrolling large sheets does less work per page, and a batch of fixes keeps runs from clobbering edits or tripping over messy numbers.

  • ImprovedBig sheets load and scroll faster: rows now page from a dedicated index, scrolling no longer re-counts the whole sheet on every page, and view-tab counts no longer fetch rows. Two unused full-row indexes were dropped, so every cell write is cheaper.
  • FixedFiltering or sorting a number column that contains values like "1,000" or "10/20" no longer fails the whole grid with an error — those cells simply don't match the numeric comparison.
  • FixedA slow enrichment (e.g. an agent cell) finishing on a row no longer reverts edits made to that row while it ran — runs now only write the cells they computed.
  • FixedLookup columns always read the source sheet's current values instead of a cached result from up to a day ago.
  • FixedNumber pipes (num, round, add, mul) leave empty cells empty instead of turning them into 0.
  • Fixed"Less than" / "greater than" filters with a blank value no longer match every row.
  • FixedWaterfall columns that spent on some steps before failing are now billed for that spend, so spend limits see it.
  • ImprovedSecurity: HTTP columns re-check every redirect hop against the private-network guard, AI/agent provider URLs are held to the same rule (self-hosted model servers stay allowed via the operator allowlist), and cell debug details are scoped to their sheet.
  • ImprovedMerge duplicates locks the rows it merges, shows how many groups exist beyond the first 50, and caps rows per group so one huge group can't hide the others.
v0.40.0

Merge duplicates in two clicks

A dedupe assistant that scans the whole sheet for rows sharing a key, then merges each group into one complete row.

  • NewMerge duplicates (sheet menu → ⌆ Merge duplicates): pick a key column and a matching mode — exact, ignore case & spacing, or fuzzy ("Acme, Inc." = "ACME Inc") — and see every duplicate group across the whole sheet, biggest first.
  • NewEach group defaults to keeping its most complete row; pick a different survivor with one click. Merging fills the survivor's empty cells from the other rows (never overwriting a value), then removes them. Merge one group or all of them at once.
v0.39.0

⌘F finds the cell, not just the row

A real find-in-sheet: every match highlighted, Enter walks through them, and the grid jumps straight to the cell.

  • NewFind in sheet (⌘F): type to see every matching cell highlighted with a live count, press Enter / ⇧Enter to walk through matches (wrapping around), and the grid scrolls the current match into view and puts the cursor on it — unlike row search, it never changes what rows you see.
v0.38.0

Undo is here: ⌘Z takes cell edits back

Fat-fingered a cell or cleared one by accident? ⌘Z puts it back — and email addresses in computed cells are now clickable.

  • NewUndo/redo for cell edits: ⌘Z reverses your last edit (including clearing a cell with Delete), ⌘⇧Z brings it back — up to 200 steps per sheet, with ↶ ↷ buttons in the statusbar and a notice naming the column that changed.
  • NewEmail addresses in computed cells are clickable mailto links, matching how URLs already behave.
v0.37.0

Guides, real 404s & privacy-friendly analytics

Four in-depth guides join the public site, unknown URLs return honest 404s, and self-hosted analytics measure the funnel without tracking app users.

  • NewA guides section at /guides/: what data enrichment is, how waterfall enrichment works, every email verification status explained, and a step-by-step lead-list playbook — cross-linked from every public page.
  • NewSelf-hosted, first-party analytics (Umami) for the public site: page views and signup conversions, no third-party trackers, no cookies — and logged-in app usage is never tracked.
  • ImprovedUnknown URLs now return a real 404 with a branded page instead of silently serving the app shell — search engines stop indexing junk paths.
v0.36.0

The model picker knows what your server has

The model list now syncs live with your provider — pull a model on Ollama and it appears in the picker, no update required.

  • NewLive model catalog: opening the model picker asks the provider what models actually exist (your Ollama server's installed models, or the account catalog for hosted providers with a key) and lists them under the curated ones — "on the server".
  • FixedThe security hardening in 0.35.1 accidentally blocked the ✨ AI-assist from using a local Ollama server (private LAN addresses were rejected). Self-hosted LLM endpoints are now explicitly allowlisted by the operator while everything else stays blocked.
v0.35.1

Hardening pass: filters, dialogs & server-side safety

Number filters survive messy data, dialogs behave (Escape, focus return), and every server-side fetch now blocks internal addresses.

  • FixedNumber filters (>, <, between) no longer fail the whole view when a column contains non-numeric text like "N/A" or "$1k" — rows that aren't numeric simply don't match. Text filters now treat % and _ literally, and "equals" matches case-insensitively like the rest of the text operators.
  • ImprovedDialogs and side panels close with Escape and return focus to where you were; view tabs, rename/delete controls and close buttons are now real, keyboard-operable buttons with screen-reader labels.
  • FixedColumn widths no longer leak between sheets — each sheet reloads its own saved layout when you switch.
  • ImprovedSecurity hardening under the hood: all server-side URL fetches (HTTP columns, agent page reads) block private and cluster-internal addresses via one shared guard, secrets can no longer be smuggled in through cell values or echoed back in error messages, and imports with many new columns build the column graph once instead of per column.
  • FixedThe filter panel stays in sync when a saved view or error-badge click changes the filter externally, sign-up emails match case-insensitively, and a broken workspace load now shows an error with retry instead of a blank sidebar.
v0.35.0

Model guidance for every provider & smarter key handling

Hover guidance now covers hosted models too, deleted keys warn instead of failing silently, and HTTP headers get one-click key insertion.

  • NewThe model picker's hover guidance now covers every provider — OpenAI, Anthropic, Grok, Groq and OpenRouter models show what each is good for, context window, speed, tool support, and a relative cost tier ($ to $$$), not just the local Ollama models.
  • NewHTTP columns (and waterfall HTTP steps) show your saved keys under the headers editor — one click inserts the {{secret:REF}} auth header instead of hand-typing template syntax.
  • FixedA column whose API key was deleted from the workspace now shows an amber "key missing" warning with a one-click reconnect, instead of claiming it's connected and failing at run time.
v0.34.0

A bigger front door: solution pages, public changelog & a real sign-in

The public site grows from one page to five, the changelog goes public, and signing in finally looks like the product it opens.

  • NewSolution pages for lead enrichment, AI research agents, and email verification — deep, crawlable pages at /lead-enrichment/, /ai-research-agents/, and /email-verification/, cross-linked from the landing page.
  • NewPublic changelog at /whats-new/ — generated straight from this changelog on every build, so search engines (and curious prospects) see what's shipping without signing in.
  • ImprovedThe sign-in page got a full redesign: split brand panel, proper input styling, autocomplete hints, and a direct path between "Create account" and "Sign in" modes.
  • ImprovedExpanded sitemap and a security.txt contact file for responsible disclosure.
v0.33.0

API keys without the dropdown archaeology

Pick a provider and the right key just connects — paste it once, inline, and every column knows about it.

  • NewPaste-to-connect API keys: when a provider has no key yet, the column editor shows a paste field right there — one paste stores it encrypted in the workspace under the provider's conventional name and connects it. No more separate secrets trip + dropdown hunt.
  • NewPicking a provider now implies its key: chips show a green dot when a provider is ready to run (key connected, or none needed for local Ollama), and selecting one auto-connects its workspace key.
  • ImprovedConnected keys show as a clear status pill with replace / switch / remove — and local providers say plainly that no key is needed.
  • ImprovedAgent extras are now honest about being optional: web search and proxies explain what the free default does and what a key upgrades, instead of presenting a bare secret dropdown.
  • ImprovedThe Secrets modal is now "API keys & secrets": each key is labeled with what it's for, and adding one is guided by purpose (provider, web search, proxies, custom).
v0.32.0

A real front door: public site & SEO

liquidrows.com now greets logged-out visitors with a proper marketing page, and search engines finally see what the product is.

  • NewPublic landing page at the root domain for logged-out visitors: product story, feature tour, how-it-works, and FAQ — served as static HTML so search engines index it without running the app.
  • NewSearch & social metadata: page title and description, Open Graph / Twitter share cards with a branded image, structured data (Organization, SoftwareApplication, FAQ), robots.txt and a sitemap.
  • NewBranded favicon — the app finally has a face in browser tabs and search results.
  • ImprovedLanding "Get started" buttons open the signup form directly (/login?mode=register), and the login page is excluded from search indexing.
v0.31.0

Per-cell runs, right-click run options & agent reliability

Run a single cell or a range of rows, right-click a column for run options, plus grid and agent fixes.

  • NewHover any enrichment cell for a ▶ button that runs just that cell — no need to run the whole column to fill or retry one row.
  • NewRight-click a column header for run options: run empty cells only, run a specific range of rows (a count starting from row N), or force-run all rows (overwrites existing data, with a confirmation).
  • ImprovedThe cell details panel now re-runs just that one cell and shows it live, instead of silently re-running the whole row.
  • FixedAgent columns no longer occasionally leak an intermediate "I'll search again" message as the answer — the agent gets dedicated final attempts to commit, and pure narration is recorded as not-found.
  • FixedColumn headers stay aligned with their cells when the grid is scrolled all the way to the right.
v0.30.0

Local Ollama models + guided model picker

Run AI/agent columns on your own Ollama server, and pick the right model with hover-over guidance.

  • NewThe model dropdown now shows guidance on hover — what each model is good for, plus stats (parameters, context window, VRAM fit, and whether it supports the tool-calling that agent columns require) — so it is easy to pick the right one.
  • NewOllama provider preset points at the local server and lists every installed model, tagged by tool-calling support.
  • ImprovedNew AI and agent columns default to the local Ollama host.
  • FixedGrid header and body no longer drift out of alignment when a vertical scrollbar appears.
v0.29.0

MillionVerifier email verification

One-click email verification: load the MillionVerifier starter on an HTTP column.

  • NewNew built-in enrichment "Verify email (MillionVerifier)": pick it from the HTTP column templates, add your key as a workspace secret named MILLIONVERIFIER_API_KEY, and point it at your email column. The cell fills with the result (ok / catch_all / disposable / invalid / unknown), and you can map quality, free, role and did-you-mean into their own columns.
v0.28.0

Bulletproof agent runs

Search engines fall back instead of failing, blank cells explain themselves, and spend limits now stop a run mid-flight.

  • FixedWeb search now falls through the engine chain (Serper → SearXNG → DuckDuckGo) when an engine rejects a query or runs out of credits, instead of erroring the agent’s search. A drained Serper account no longer silently degrades a whole batch.
  • ImprovedA cell the agent deliberately left blank now shows a subtle "not found" pill instead of looking like it never ran — and the cell drill-in explains the run in plain terms: outcome, answer, sources, and the step-by-step trace with real error reasons.
  • ImprovedAnswers that come back slightly malformed (markdown fences, prose around the JSON, near-miss field names like CEO_Name vs ceo) are now tolerantly parsed and mapped instead of dropped.
  • ImprovedThe per-sheet spend limit is now enforced mid-run by the worker: once hit, remaining queued cells stop (as retryable errors) instead of spending to the end of the queue.
  • NewRun-quality telemetry: each agent run records its outcome (found / not found, search errors, format salvages) into the cost ledger, powering run-health reports.
v0.27.1

OpenRouter support

  • NewOpenRouter as an AI provider: one key for Claude, GPT, Gemini, Llama, DeepSeek, Grok and 300+ more — available in AI columns, agents, waterfall steps, and the ✨ assist. Pick it from the provider presets or use any openrouter model id via "Other…".
v0.27.0

Spend limits per sheet

Set a spend ceiling on a sheet so a big run can't blow past your budget.

  • NewSet a spend limit in Usage & costs: once a sheet hits it, bulk runs (Run column / Run sheet) are blocked with a clear message until you raise or clear it. Per-row auto-runs are unaffected. A guardrail against runaway agent/AI cost.
v0.26.0

No duplicate rows from list agents

List-output agents can dedupe, so re-running never piles up duplicate rows.

  • NewList-output agents (write-to-table) get a "Dedupe by field" option: items whose value already exists in the target column are skipped (case-insensitive), within a run and across re-runs — so you can safely re-run without creating duplicates.
v0.25.0

Pilot runs: test on a few rows first

Run an agent or AI column on the first N rows before committing to the whole sheet.

  • NewNew "Pilot…" button on a column: run it on just the first N rows (oldest first) to check quality and cost, then run the full sheet once you are happy. The smart way to start a big enrichment.
v0.24.0

Agent citations + smoother long runs

Capture the URLs an agent used, and stop seeing false errors on slow test runs.

  • NewAgent columns can write their source URLs into a column you pick — so every answer carries its citations for auditing or outreach.
  • FixedTesting or single-running a slow agent no longer shows a timeout error: the run keeps going in the background and the cell fills in live when it finishes.
v0.23.0

Agents can write rows to another sheet

One agent run can find a list of things and drop each as a new row in a target sheet.

  • NewNew agent output mode "list -> rows in another sheet": ask an agent to find many items (competitors, locations, executives, products) and each result becomes a row in a sheet you choose, with fields mapped to its columns. The agent cell itself shows the count. New rows are added as data (not auto-run), and there is a per-run safety cap.
v0.22.0

Vision: AI columns can see images

Point an AI column at a logo or screenshot URL and let a vision model analyze it.

  • NewAI columns now take an optional Image URL (templated, e.g. {{logo_url}}). The image is fetched server-side and passed to the model, so vision-capable models (Grok 4.3, GPT-4o, Claude) can describe a logo, read a screenshot, or classify a product photo per row.
v0.21.0

Workspace agent defaults

Set your model, key, proxies and search once — every new agent column starts ready.

  • NewIn an agent column, "Save as default" stores the model, API key, proxy list and search settings for the workspace. New agent columns start pre-filled with them, so you only configure the boilerplate once.
v0.20.0

Reliable JSON from AI columns

AI columns in JSON mode now return clean, parseable JSON far more consistently.

  • ImprovedAI columns set to JSON output now ask the provider for guaranteed-valid JSON (on providers that support it) and tolerate models that wrap their answer in prose or ``` fences — so your column-mapped fields stop coming back empty when the model gets chatty.
v0.19.0

See what your agents actually did

The usage panel now shows web activity per column, so agent spend is transparent.

  • NewUsage & costs now breaks down agent web activity per column: how many web searches and page fetches ran, and how many fetches were served from cache — so you can see exactly what drove search/proxy spend on a run.
v0.18.1

Run modes: retry only the rows you need

After a big run, re-run just the empty or errored rows instead of paying for all of them again.

  • NewThe column editor now has "Run empty" and "↻ Retry errors" alongside "Run column" — so after a large agent or AI run you can re-process only the rows that failed or have no value, without re-spending on the ones that already succeeded.
v0.18.0

Agent columns: caching, cost guard & starter templates

Faster, cheaper, easier agent enrichments — built for running thousands of rows.

  • NewStarter templates for agent columns: pick "Company summary", "Company facts", "Funding & investors", "Find LinkedIn URL", or "Pricing model check" and the prompt, tools, and output fields are filled in for you.
  • NewPer-row token budget: cap the tokens an agent may spend on a row — once it crosses the ceiling it commits its best answer instead of researching further. A safety net against runaway cost on big runs.
  • ImprovedCross-row caching: pages and searches are cached, so a batch that keeps hitting the same sites or queries pays for each one once instead of once per row — big speedups and lower search/proxy spend.
  • NewDomain controls: restrict an agent to specific source domains (e.g. only sec.gov + the company site) or block ones you never want it to read — applied to both search results and page fetches.
v0.17.1

Rotating proxies for agent columns

Point agent columns at a proxy list to run big enrichments without IP blocks.

  • NewAgent columns can rotate through a pool of proxies: add a workspace secret with a newline-delimited list (host:port or host:port:user:pass) and pick it in the agent editor — a secret named PROXY_LIST is used automatically.
  • ImprovedSearch, page fetches, and headless renders each get a rotating IP, so the keyless web-search throttle lifts and large runs stop getting rate-limited or blocked.
  • ImprovedDead or slow proxies cool down automatically and requests retry on a fresh one, so a few bad entries in the list never stall a run.
v0.17.0

Agent columns — AI web research per row

Point an AI agent at every row: it searches, reads pages, and writes back verified answers.

  • NewAgent columns: give a research task in plain English and the agent searches the web, reads pages, and fills the cell — with sources. Works with any AI provider you already use (BYOK).
  • NewMulti-field answers: one agent run can fill several columns at once — define extra fields and each writes into the child column with that key.
  • NewHonest "not found": when nothing can be verified the cell stays empty instead of guessing, so waterfalls and run-if conditions keep working.
  • NewWeb search built in — keyless out of the box, or add a Serper.dev key as a workspace secret ("Search key" in the column editor) for Google-quality results.
  • ImprovedCell drill-in on an agent column shows the full research trail: every search, every page read, and the committed answer.
  • ImprovedJS-heavy pages render through a pooled headless-Chrome service; plain pages are fetched the fast, cheap way.
v0.16.0

Cross-sheet lookups, public API & conditional formatting

Sheets can talk to each other — and so can your scripts.

  • NewLookup columns: match a value from this row against another sheet and pull back any column — like VLOOKUP across sheets, recomputed on demand.
  • NewPublic REST API: create personal access tokens (sheet ⋯ menu → API tokens) and call every endpoint with Authorization: Bearer lrt_… from scripts.
  • NewConditional formatting: per-column color rules (contains / equals / </> / regex / empty) painted straight onto cells.
  • NewRun history: the sheet ⋯ menu lists the last 50 runs — when, which column, what mode, how many rows.
  • NewLive run progress per column: headers show a spinner with the number of cells still computing.
v0.15.0

Excel, dark mode, multi-sort & the command palette

Working through the roadmap.

  • NewImport Excel (.xlsx) workbooks — first worksheet, formulas resolved, same mapping dialog as CSV.
  • NewMulti-column sort: add secondary sorts from the column menu; order shows on headers and chips, and saves into views.
  • NewDark mode — toggle in the sidebar footer (◐) or from the palette.
  • New⌘K command palette: jump to any sheet, create sheets, toggle theme, and more.
  • NewPrompt library: save an AI column setup once, load it in any sheet of the workspace.
  • NewNumber & date pipes: num, round, add, mul, age.
  • NewColumn descriptions shown on header tooltips (editing one no longer marks cells stale).
  • ImprovedView tabs show live row counts; import header preview now happens server-side for perfect parity with the import itself.
v0.14.0

Run control, scheduling & data tooling

The operations release — see ROADMAP.md for where this is heading.

  • NewRun modes: run a column on every row, on empty cells only, or retry just the errors — plus a Cancel button to stop an in-flight run.
  • NewError badges on column headers show failing-cell counts; click one to filter to those rows.
  • NewAuto-refresh schedules (hourly / daily / weekly) recompute empty, stale, and errored cells — set it from the new sheet ⋯ menu.
  • NewDuplicate a sheet (columns, views, and optionally all rows) from the ⋯ menu.
  • NewFind & replace across a text column (plain or regex) from the column menu.
  • NewNew pipes: domain, urlencode, split, slice, len — extract domains from emails/URLs, build query strings, pick name parts.
  • NewSelection bar: copy selected rows as CSV, duplicate selected rows.
  • ImprovedLinks in computed cells are clickable; row-height toggle (compact/comfortable); the last active view is remembered per sheet; built-in HTTP starter templates; webhook-intake sheet template.
v0.13.3

Faster runs

  • ImprovedBig column runs feel dramatically smoother: live cell updates are batched in the grid instead of re-rendering per cell, worker throughput is 3× higher, and per-row metadata fetches are cached during a burst.
  • FixedFormula runs no longer write zero-cost entries to the usage ledger.
v0.13.2

Column-level text & popover fix

  • NewText columns now have "Column text" when editing too: a plain string fills every row, /variables make a per-row sentence — no more typing the same value 2,800 times. Cells stay hand-editable when it's left empty.
  • FixedThe ✨ AI panel opens toward whichever side has room, so the run-if assist no longer renders off-screen.
v0.13.1

Text with variables & AI button polish

  • NewText columns can start with content: type a sentence with / variables and every row renders it (left empty, cells stay blank and editable).
  • FixedThe ✨ AI assist now looks like a button and its panel opens inside the drawer instead of off-screen.
v0.13.0

Slash variables, regex, AI assist & more

The enrichment-builder release.

  • NewType / in any template field (formulas, AI prompts, HTTP URLs and bodies, run-if) to insert a column with autocomplete.
  • NewRegex in templates and conditions: {{col | test "pattern"}}, {{col | match "pattern"}}, {{col | replace "pattern" "repl"}} — test pairs with run-if for conditional runs.
  • New✨ AI assist on formula and run-if fields: describe the condition in plain English and your own provider writes the expression.
  • NewModel dropdowns per provider with an "Other…" override, plus Grok (xAI) support.
  • NewHTTP call templates: save a configured call once, load it in any sheet of the workspace.
  • NewDelete a workspace (type "delete workspace" to confirm — unrecoverable).
  • FixedFormula columns now compute for existing rows immediately on save instead of sitting empty.
  • ImprovedColumns are now called enrichments where you create them.
v0.12.0

Smarter CSV import into existing sheets

Append or replace, map to existing columns, skip what you don’t want.

  • NewImporting into a sheet that already has rows now offers Append or Replace-all, like Google Sheets.
  • NewCSV columns auto-match existing columns by name; each can be mapped, created fresh, or skipped — with "create all new" / "skip all" shortcuts.
  • ImprovedThe import dialog stays open with a clear progress indicator while large files upload and process, instead of silently closing.
v0.11.4

Large CSV imports

  • FixedCSV uploads over 1MB were rejected by the web proxy with an unhelpful "Request failed" — imports up to 100MB now go through.
  • ImprovedFailed requests now report their HTTP status instead of a generic message.
v0.11.3

Header row fix

  • FixedOn sheets with more rows than fit on screen, the frozen column-header row was squashed to half height and its labels clipped. It now keeps its full height regardless of row count.
v0.11.2

Multi-line header fix

  • FixedCSV headers containing line breaks inside quotes (common in scraper exports) were cut in half at import, garbling column names and misaligning the first rows — the header record now parses fully, with names whitespace-normalized end to end.
v0.11.1

Import hygiene

  • FixedCSV lines with no values (comma-only padding from scrapers and Excel) no longer import as broken empty rows at the top of the grid; values are also whitespace-trimmed.
  • ImprovedThe import notice now reports how many rows came in and how many junk lines were skipped.
v0.11.0

Waterfall columns & outbound push

Stack providers without paying for all of them.

  • NewWaterfall columns: chain AI and HTTP steps — each step only runs if the previous one came back empty or failed, so you stop paying the moment one hits.
  • NewPush results: a guided wizard builds an outbound HTTP column that POSTs your chosen fields as JSON to any webhook or CRM when rows run.
  • ImprovedSorting is numeric-aware: number-like values order as numbers, text falls back to alphabetical.
v0.10.1

CSV import fix

  • FixedCSV files saved by Excel or Google Sheets (which add a hidden byte-order mark) imported the first column empty — the header now parses correctly so every column comes in.
v0.10.0

Sorting, sharing, costs & smarter columns

The collaboration and control release.

  • NewSort by any column from its header menu (server-side, empty cells last); the sort is part of saved views.
  • NewShare: invite teammates to a workspace by email, manage roles, remove members — from the new Share button.
  • NewUsage & costs: a Σ pill in the status bar opens a per-column spend breakdown from the cost ledger.
  • NewColumn execution controls: toggle auto-run per column and add a "run if" condition (e.g. only when {{email}} is present).
  • NewLead enrichment template: one click scaffolds a fresh sheet with data, formula, and AI columns.
  • ImprovedDelete key clears the selected cell; a live "N running" counter shows cascade progress.
v0.9.1

Frozen columns

  • ImprovedRow numbers and the first column stay pinned while scrolling horizontally, with a shadow edge — the header row was already frozen vertically.
v0.9.0

MVP: saved views, test runs & a real spreadsheet feel

The biggest release yet — the grid now feels like a real spreadsheet.

  • NewSaved views: tabs above the grid that pin a filter + hidden-column set, shared with everyone on the sheet.
  • NewTest a column on the first row from the editor — see the result (and the request) before running thousands of rows.
  • NewKeyboard navigation: arrows move the cell cursor, Enter edits or opens details, Space selects the row, ⌘C copies the cell.
  • NewColumn menus on every header: run, duplicate, hide, move, or delete without opening the editor.
  • NewRow details drawer (⤢) showing every field of a record, editable in place.
  • NewQuick search across all columns, evaluated server-side.
  • NewCSV import mapping: match headers to columns and pick a dedup key before importing.
  • NewAI provider presets (OpenAI, Anthropic, Groq, Ollama) for one-click column setup.
  • NewCreate workspaces from the sidebar.
  • ImprovedColumn headers show a fill-rate bar; empty sheets get a guided setup screen.
v0.8.0

Versioning & changelog

The app now tells you what version you are on and what changed.

  • NewVersion badge in the sidebar — click it to open this changelog.
  • NewChangelog page with the full release history.
v0.7.0

Filters, multi-select & sheet management

Work with slices of your data instead of the whole sheet.

  • NewFilter bar: build conditions on any column (contains, is, between, empty…), cell status (including stale), and row source, combined with AND/OR — evaluated server-side.
  • NewCSV export honors the active filter — export exactly what you see.
  • NewRow multi-select with select-all and bulk Run / Delete on the selection.
  • NewDrag column headers to reorder; the layout persists.
  • NewRun a single column across all rows from the column editor.
  • NewRename a sheet inline from the title; delete a sheet from the toolbar.
  • Improved"Run all" reports how many rows were enqueued and asks for confirmation above the run ceiling.
v0.6.0

Spreadsheet-native redesign

A complete visual and structural overhaul of the app.

  • NewPersistent sidebar with workspace → sheet navigation and search.
  • NewRight-side drawer panels for column config and cell details.
  • NewVisual column type picker and colored type chips on every header.
  • NewColumn delete from the editor drawer.
  • ImprovedLight theme, Inter typography, breadcrumb topbar, status footer.
  • ImprovedCell states: spinner while running, red pill on error.
v0.5.0

Scale & observability

The grid handles 100k+ rows, and you can see exactly what each cell did.

  • NewVirtualized grid — only visible rows render; pages load as you scroll.
  • NewPer-cell drill-in: value, state, source, version, cost, and the captured AI/HTTP request + response.
  • NewDrag-resizable columns with persisted widths.
  • FixedSecret values are redacted from captured response previews.
v0.4.0

Inbound webhooks

  • NewPer-sheet webhook URL: POST JSON to create rows; keys map to columns and email dedups/merges.
  • NewAuto-run cascades new webhook rows through the columns immediately.
v0.3.0

AI & HTTP columns

Every column can now call a model or any API.

  • NewAI columns: OpenAI-compatible prompts with templated inputs, text or JSON output mapped to columns.
  • NewHTTP columns: templated requests with JMESPath response mapping, retries and rate limits.
  • NewBYOK secrets, encrypted at rest, referenced as {{secret:REF}}.
  • NewLive cell updates over WebSocket while runs are in flight.
v0.2.0

Execution engine

  • NewQueue-based execution: row runs fan out to workers via Redis.
  • NewColumn DAG with topological execution order and staleness tracking.
v0.1.0

Foundation

  • NewWorkspaces, sheets, typed columns, and the JSONB record store.
  • NewCSV import/export, formula columns, inline cell editing.
  • NewAuth, k3s deployment, hash-partitioned records for 100k+ row sheets.

Ship-speed is a feature

Try what’s new — import a list and start enriching.

Get started →