A lot of workflows need a list to keep. The leads that came in this week. The orders already sent to the warehouse, so none goes out twice. A register of every contract signed. Until now the usual answer was a spreadsheet: connect Google Sheets, make a sheet, point the workflow at it, and hope nobody renames the tab or sorts the columns out from under it.
Now that list can live in Lodol. Secrets and Values, where your workflows already keep their keys and settings, can hold tables: rows and columns your workflows add to, look up and update, and that you can open and edit like a small spreadsheet.
Make a table
Open Secrets and Values in the sidebar and add a table in one of two ways:
- From a file. Upload a CSV, TSV, Excel or JSON file, and its rows become the table's rows.
- Empty. Name its columns, such as Name, Email and Plan, and let your workflows fill it in.
Open a table and you can sort it by any heading, search one column or all of them, and add, change or remove rows and columns by hand. Each table belongs either to the whole workspace, shared by every workflow or only the ones you choose, or to a single workflow.
Let your workflows use it
Three new pieces do almost everything:
- Save a row to a stored table adds a row. Set Update the row with the same to a column such as Email, and a row that already has that email is updated instead, so each customer appears once and their other columns are kept. Many runs can save rows at the same time without overwriting each other.
- Find rows in a stored table looks rows up: the row whose Email is ana@example.com, the orders whose Total is more than 100, or every row. Sort by a column and keep only the first few, and "the 10 newest signups" is one step.
- Row added or changed is a trigger. It starts a workflow when a row is added or changed, whether a workflow did it or someone edited the table in Lodol, and hands the workflow the row and what it held before.
Lookups are forgiving in the ways that matter. Text matches whatever its capitals, and spaces at either end are ignored, so "Ana@Example.com " finds ana@example.com. A number matches the same number written as text, so 42 finds "42". Numbers compare as numbers and dates as dates, so 9 comes before 10.
Three ways teams use it
Handle each thing once. A workflow that sends new orders to the warehouse keeps a Handled table. For each order, it finds rows with that order number. None, and it sends the order and saves a row. One, and it skips it. Run it every hour and no order goes out twice, even if the shop reports the same one again.
A list that sets off the next step. Keep your leads in a table with a Status column. When someone on your team changes a lead's status to Qualified, the Row added or changed trigger starts a workflow that checks the new status and adds the lead to your CRM. A change a workflow makes to the row itself never starts that same workflow again, so it can't chase its own tail.
Collect now, send later. When what you need is a queue rather than a table, stored lists do the job. Add to a stored list collects items as they arrive, from many runs at once, with none lost, and can skip any item the list already holds. Take from a stored list takes them out, oldest first, so two runs never get the same one. Collect each new order as it lands, then send them all in one summary at 5:00.
A table or a spreadsheet?
Both have their place. A rough guide:
| If you need | Better fit |
|---|---|
| A list that's mainly for your workflows, with no app to connect | Stored table |
| Many runs writing to it at once | Stored table |
| A workflow that starts when a row changes | Stored table |
| People outside your workspace to open it | Spreadsheet |
| Formulas, charts or pivot tables | Spreadsheet |
| More than 5,000 rows | Spreadsheet or a database |
| A sheet your team already works in every day | Spreadsheet |
If the data already lives in Google Sheets, Excel or Airtable, there's no need to move it: those connections work as they always have. Tables are for the lists you'd otherwise have made a spreadsheet just to hold.
What a table won't do
- It isn't a database. A stored table holds up to 5,000 rows and 1 MB of data, and has no formulas. For more than that, keep the data in a spreadsheet, or in your own database, which Lodol can now query and update too.
- It isn't open to everyone. The workspace's tables are managed in Secrets and Values by owners and admins, and by custom roles given permission to manage stored values. Any workflow it's shared with can read it.
- Workflows change it only if you let them. A table you make in Secrets and Values starts with Let workflows edit this value on, so your workflows can save and change its rows; turn it off and they can only read it. A table a workflow creates itself can always be edited by workflows. And workflows can never write a secret.
How it fits with stored values
Tables sit beside the stored values that arrived in September, which let a workflow remember things between runs: the last invoice number it handled, or a running count. A value is one thing to remember. A table is many things in rows. Both live in the same place and follow the same rules about who can change them.
Move one list off a spreadsheet.
Pick the sheet your workflow only uses to remember what it has done, upload it to Secrets and Values, and switch the workflow to Save a row and Find rows. The guide to stored values covers the rest. Start free if you don't have a workspace yet.