Eight Supabase steps work with your Supabase project, one step for each thing you do:

  • Insert a row — Adds a row to a table, a value for each column you fill in.
  • Update rows — Changes the columns you fill in, in the rows that match.
  • Upsert — Adds a row, or updates the one with the same key.
  • Delete rows — Deletes the rows that match.
  • Find rows — The rows of a table that match, in the order you choose.
  • Call a function — Runs a database function with the arguments you give.
  • Upload a file to storage — Puts a file from an earlier step into a storage bucket.
  • Get a signed URL — A link to a stored file that works for a time.

In the step picker, Changes data marks Insert a row, Update rows, Upsert and Upload a file to storage; Deletes data marks Delete rows; Can change data marks Call a function, whose effect depends on the function.

Who can do this

Workspace Admins and Editors, on every plan.

Before you start

A Supabase connection in this workspace — see Connect Supabase. With the anon key, your row-level security policies decide what each step can see and change.

Steps

  1. Select +, then in Apps select Supabase, or search Supabase. Choose the step.
  2. Choose the Connection.
  3. Fill in the step:
    • Insert a row — choose the Table; under Columns, give a value for each column you want set.
    • Update rows — choose the Table; under Filters, add a column and the value it must hold for each condition; under New values, fill in the columns to change.
    • Upsert — choose the Table and fill in Columns, including the key. Match on — empty for the primary key, or a column with a unique constraint, such as email.
    • Delete rows — choose the Table and fill in Filters. Deleted rows cannot be brought back.
    • Find rows — choose the Table, and optionally Filters, Order by and Order. Most rows is 1,000 unless you change it, up to 10,000.
    • Call a function — choose the Function; under Arguments, its arguments load from the function.
    • Upload a file to storage — choose the Bucket, give the Path with the file's name — northwind/INV-1042.pdf — and choose the File from an earlier step. Tick Replace a file already there to overwrite.
    • Get a signed URL — choose the Bucket, give the Path, and Lasts for (seconds) — empty is an hour, up to seven days.
  4. Select Run this step, then check Output.

Output

Step Fields
Insert a row, Upsert The row as Supabase stored it, each column by its name — {{ steps.insert_a_row.id }}.
Update rows, Delete rows count, and rows — the rows changed or deleted.
Find rows count, rows, first, and note when cut: Only the first 1,000 rows are kept.
Call a function result — whatever the function returns.
Upload a file to storage bucket, path, size in bytes.
Get a signed URL url, and expiresAt in UTC.

Good to know

  • Values travel as data. Column values and arguments go in the request's JSON, keeping their type; filter values are escaped, so a value from an earlier step can never change the request.
  • Filters match equal values. An empty value matches NULL. For anything else — ranges, text search, OR — write a database function and use Call a function.
  • Update rows and Delete rows always need a filter. Changing or deleting every row is not done from a workflow.
  • Tables, functions and buckets come from their lists. A value from an earlier step cannot name one.
  • Upsert does not say whether it added or updated. Supabase's API does not tell; the output is the row either way.

If something goes wrong

What the run says Why What to do
Supabase refused: … Supabase refused the request — a column that does not allow NULL, a duplicate key, a policy that does not allow it. Read the reason; with the anon key, check your row-level security policies.
The project has no table named … the key can see. Refresh the list and choose again. The table was renamed, or the key cannot see it. Refresh and choose again.
… has no column named “…”. Refresh the columns and choose again. A filter names a column the table does not have. Fix the row.
Say which rows to change under Filters — every row is not taken here. Filters is empty. Add a filter. The same for Delete rows.
“…” cannot be a path in a bucket. The path climbs out of the bucket with ... Give a path inside the bucket.
File is empty. Choose a file from an earlier step. File is not set. Choose a file.