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.
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.