Home

Bracket

This guide explains how to set up a sync between your Supabase database and tools like Google Sheets, Airtable, or Notion using Bracket — a two-way data syncing tool.

With customizable two-way and one-way syncs, Bracket enables business teams to read from & write to their Supabase database without ever leaving a spreadsheet. If you don’t have a Bracket account, you can create one here.

This guide assumes you have a Supabase account and database. You do not need existing tables in Supabase if you are replicating data from a SaaS tool into Supabase. Otherwise, an existing table in Supabase is required.

We’ll go through an example using Supabase and Airtable.

Step 1: Connect Bracket to Supabase#

To connect Supabase to Bracket, you'll first need to pull the credentials for your Supabase database:

  1. In the Supabase dashboard, go to the settings page using the gear icon on the bottom left, and open up your Database settings. In the Connection info section, you'll find the credentials required to connect to Bracket.

    Supabase dashboard

  2. On the Bracket web app, decide whether you want Supabase as your primary or secondary source. You should choose Supabase as your primary source if 1) you’re syncing one-way from Supabase, or 2) you’re syncing two ways, but want edits made in Supabase to win any merge conflicts with the secondary source. For the rest of this example, we’ll use the Supabase database as the primary source.

    Choose new source

  3. Choose Postgres as your source in the dropdown

    Connect Postgres

  4. Use the credentials you found in the Supabase dashboard under Database settings to fill out this section in the Bracket web app

    Select Postgres data

  5. Either select a full table or write a SQL query. Note that regardless of which option you choose, you must have a primary key with unique constraints.

Step 2: Connect Bracket to your Secondary Source#

  1. Select the Secondary Source and use the OAuth flow to grant limited and secure syncing access to your Airtable base, Notion database, or Google Sheet. For this example, we’ll assume an Airtable base.
  2. Select an existing Airtable table to sync, or generate a table from scratch using an existing Postgres table.

Step 3: Map fields and configure the sync#

  1. Choose the direction you want data to be syncing (one-way vs. two-way)

  2. Map each Supabase field to each Airtable field.

    1. Each field can only be mapped to one field in the other source
    2. You don’t need to sync all fields over for a sync to work

    Map fields

  3. Name your sync and set the sync frequency. After that, you’re ready to start syncing!

Step 4: Get syncing#

  1. Click Test Run to ensure that Supabase and Airtable are connected to each other via Bracket. Note: this doesn’t sync data, it only tests that they can connect to each other properly

  2. Click Run Once to get data synced over for the first time. If there are errors, you can view them in the Run History section by clicking the errors link

  3. If there are no errors, go ahead and turn on the sync by clicking the Active/Inactive toggle. Once the toggle is on, the Run history, Field mapping, and Advanced sections cannot be clicked or edited. In order to interact or make changes to these sections, first turn the sync toggle off

    Sync overview

Build-a-table#

  1. If you start with data in Supabase, you can auto-generate an Airtable table with the same fields and easily sync data between the two. You can also do the reverse if Airtable is your primary source!
  2. If you generate a Supabase table from an existing Airtable, you can find it in the Table Editor on the Supabase dashboard.

Roles#

If you want to limit Bracket’s permissions to a specific role within Supabase, the roles must meet the following minimum RLS permissions:

  1. If syncing one way from Supabase: SELECT permissions on all tables synced with Bracket
  2. If syncing one way to Supabase or syncing two ways with deletes disabled: SELECT, INSERT, and UPDATE permissions on all tables synced with Bracket
  3. If syncing one way to Supabase or syncing two ways with deletes enabled: ALL permissions on all tables synced with Bracket

Resources#