Supabase setup

Connect a customer Supabase project safely.

Connect the Supabase project that should receive imported rows, create the destination table yourself, then install the staging table used before destination inserts.

Create a project

ImportFlow account

ImportFlow stores projects, kits, import jobs, inserted-row usage, billing state, and webhook configuration. It does not permanently store imported row payloads.

Connected Supabase project

Your Supabase project receives the staging table rows and final destination inserts. Service-role keys are stored as encrypted write-only credentials and used only server-side.

Staging SQL

Run this once after your destination table exists. It installs ImportFlow's staging table only; it does not create your destination table.

create table if not exists public._importflow_staging_rows (
  id bigint generated always as identity primary key,
  import_job_id uuid not null,
  import_kit_id uuid not null,
  batch_index integer not null,
  row_index integer not null,
  raw_payload jsonb not null,
  normalized_payload jsonb,
  validation_errors jsonb not null default '[]'::jsonb,
  status text not null default 'received'
    check (status in ('received', 'valid', 'invalid', 'inserted', 'failed')),
  created_at timestamptz not null default now(),
  expires_at timestamptz not null,
  unique (import_job_id, row_index)
);

create index if not exists idx_importflow_staging_rows_job_id
  on public._importflow_staging_rows (import_job_id);

create index if not exists idx_importflow_staging_rows_expires_at
  on public._importflow_staging_rows (expires_at);

alter table public._importflow_staging_rows enable row level security;

Destination table expectations

  • The `public` schema is a Supabase/Postgres database namespace, not public internet access.
  • Staging SQL creates only `public._importflow_staging_rows`; it does not create your business destination table.
  • The destination table must already exist in `public` before kit creation.
  • Enabled template field keys should exist as destination column names. If names look correct, verify compatible data types in Supabase too.
  • ImportFlow checks rows on the server before inserting them.
  • Only inserted rows count toward billing usage.

Next step after setup

Create an import kit, copy the embed token, then use the React drop-in component or plain JavaScript embed.