Supabase-kobling

Koble Supabase-prosjektet ditt for å synkronisere databaseposter, brukerautentiseringsdata, fillagringshendelser og sanntidsendringer for automatisering av kundeengasjement.

Oversikt

EgenskapVerdi
PlattformSupabase
KategoriDatabase og backend
OppsettskompleksitetEnkel
Offisiell integrasjonJa
Synkroniserte dataBrukere, tabeller, lagring, hendelser
Tilgjengelige ferdigheter11
API-typeREST (PostgREST) + Realtime WebSocket
Offisiell dokumentasjonsupabase.com/docs

Funksjoner

  • Autogenerert REST API, CRUD-operasjoner på enhver Postgres-tabell via PostgREST, ingen kode kreves
  • Synkronisering av Auth-brukere, Synkroniser Supabase Auth-brukere (e-post, telefon, sosial innlogging) til engasjementsplattformen din
  • Sanntidsabonnementer, Lytt på INSERT-, UPDATE- og DELETE-hendelser på enhver tabell i sanntid
  • Row Level Security, All API-tilgang respekterer Postgres RLS-policyer for sikre data med flere tenanter
  • Lagringsintegrasjon, Spor filopplastinger og administrer ressurser på tvers av Storage-bøtter
  • Edge Functions, Kall serverløse Deno-funksjoner for egendefinert logikk og webhooks
  • Fulltekstsøk, Utnytt Postgres’ fulltekstsøkfunksjoner gjennom API-et

Forutsetninger

Før du begynner, sørg for at du har:

  1. Et Supabase-prosjekt (app.supabase.com)
  2. Prosjektets API URL og API-nøkler (finnes i Settings → API)
  3. En Tajo-konto med API-tilgang

API-nøkler

Supabase tilbyr to nøkler: anon (offentlig, respekterer RLS) og service_role (omgår RLS, administratortilgang). Bruk service_role for tjensersideintegrasjoner og anon for klientside.

Autentisering

Supabase bruker API-nøkkelautentisering. Hver forespørsel krever apikey-headeren og valgfritt et Authorization-bearer-token for brukeravgrenset tilgang.

Terminal window
# Bruk av anon-nøkkel (respekterer RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_ANON_KEY>" \
-H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Bruk av service_role-nøkkel (omgår RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \
-H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"

Konfigurasjon

Grunnleggende oppsett

connectors:
supabase:
enabled: true
project_url: "https://xyzcompany.supabase.co"
api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Synkroniseringsalternativer
sync:
users: true
tables:
- customers
- orders
- products
storage: true
realtime: true
# Mapp Supabase Auth-brukere til kontakter
user_mapping:
email: email
phone: SMS
user_metadata.full_name: FIRSTNAME
created_at: SIGNUP_DATE

Feltmapping

Mapp Supabase-tabellkolonner til engasjementsplattformattributter:

Standard brukermappinger

Parameter Type Description
email required
string

Brukerens e-post fra Supabase Auth (unik identifikator)

phone optional
string

Telefonnummer for SMS/WhatsApp-engasjement

user_metadata.full_name optional
string

Visningsnavn fra Auth-brukermetadata

user_metadata.avatar_url optional
string

Profilbilde-URL

created_at optional
timestamp

Tidsstempel for kontooppretting

last_sign_in_at optional
timestamp

Siste innlogging for engasjementsscoring

app_metadata.provider optional
string

Auth-leverandør (email, google, github osv.)

confirmed_at optional
timestamp

Tidsstempel for e-postbekreftelse

Egendefinert tabellmapping

table_mapping:
customers:
# Kolonne → attributt-mapping
email: email
full_name: FIRSTNAME
company: COMPANY
plan: SUBSCRIPTION_PLAN
mrr: MONTHLY_REVENUE
created_at: SIGNUP_DATE
orders:
# Spor som hendelser
sync_as: events
event_name: "order_placed"
properties:
total: amount
status: order_status
items: line_items

API-endepunkter

Supabases REST API genereres automatisk fra databaseskjemaet ditt på https://<ref>.supabase.co/rest/v1/.

EndepunktMetodeBeskrivelse
/rest/v1/{table}GETSpør rader med filtrering, sortering, paginering
/rest/v1/{table}POSTSett inn rader (støtter bulk og upsert)
/rest/v1/{table}PATCHOppdater rader som matcher filtre
/rest/v1/{table}DELETESlett rader som matcher filtre
/rest/v1/rpc/{function}POSTKall en Postgres-funksjon
/auth/v1/signupPOSTOpprett en ny bruker
/auth/v1/token?grant_type=passwordPOSTLogg inn med passord
/auth/v1/userGETHent gjeldende bruker
/auth/v1/admin/usersGETList alle brukere (service_role)
/storage/v1/object/{bucket}/{path}POSTLast opp fil
/storage/v1/object/list/{bucket}POSTList filer i bøtte
/functions/v1/{function_name}POSTKall Edge Function

Filteroperatorer

OperatorBeskrivelseEksempel
eqLik?status=eq.active
neqIkke lik?status=neq.deleted
gt, gteStørre enn?amount=gt.100
lt, lteMindre enn?created_at=lt.2024-01-01
like, ilikeMønstertreff?name=ilike.%john%
inI array?status=in.(active,trial)
isNull-sjekk?deleted_at=is.null

Hendelser

Auth-hendelser

HendelseUtløserBruksområde
user.signed_upNy brukerregistreringVelkomstserie
user.signed_inBrukerinnloggingAktivitetssporing
user.updatedProfilendringerDatasynkronisering
user.deletedKontoslettingOpprydningsarbeidsflyter

Databasehendelser (Realtime)

HendelseUtløserBruksområde
INSERTNy rad lagt tilVarsler om ny ordre/kunde
UPDATERad endretArbeidsflyter for statusendring
DELETERad fjernetChurn-deteksjon

Webhook-hendelser

HendelseUtløserBruksområde
auth.user.createdBrukerregistrering via webhookUtløs onboarding
storage.object.createdFil opplastetRessursbehandling

Kodeeksempler

Initialiser kobling

import { TajoClient } from '@tajo/sdk';
import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
});
// Koble til Supabase-prosjekt
await tajo.connectors.connect('supabase', {
projectUrl: process.env.SUPABASE_URL,
serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
});

Synkroniser brukere til kontakter

// Synkroniser alle Supabase Auth-brukere som kontakter
await tajo.connectors.sync('supabase', {
type: 'full',
resources: ['users'],
});
// Inkrementell synkronisering (kun nye/endrede brukere)
await tajo.connectors.sync('supabase', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01T00:00:00Z',
});

Lytt til sanntidsendringer

// Abonner på nye bestillinger for engasjementsutløsere
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_SERVICE_ROLE_KEY
);
supabase
.channel('orders')
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'orders' },
async (payload) => {
// Videresend til Tajo som en hendelse
await tajo.events.track({
email: payload.new.customer_email,
event: 'order_placed',
properties: {
order_id: payload.new.id,
total: payload.new.total,
items: payload.new.line_items,
},
});
}
)
.subscribe();

Spør og segmenter

// Spør kunder etter plan for målrettede kampanjer
const { data: proUsers } = await supabase
.from('customers')
.select('email, full_name, plan, mrr')
.eq('plan', 'pro')
.gt('mrr', 100)
.order('mrr', { ascending: false });
// Synkroniser til en Brevo-liste for kampanjemålretting
await tajo.lists.addContacts(PRO_LIST_ID, proUsers);

Ratebegrensninger

API-ratebegrensninger

Supabases ratebegrensninger avhenger av planen din. Free-nivå: 500 forespørsler/minutt. Pro: 1 000 forespørsler/sekund. Kontakt Supabase for Enterprise-grenser.

PlanRatebegrensningRealtime-tilkoblinger
Free500 forespørsler/min200 samtidige
Pro1 000 forespørsler/s500 samtidige
Team2 000 forespørsler/s1 000 samtidige
EnterpriseTilpassetTilpasset

Feilsøking

Vanlige problemer

ProblemÅrsakLøsning
401 UnauthorizedUgyldig eller utløpt API-nøkkelSjekk API-nøkler i Supabase Dashboard → Settings → API
403 ForbiddenRLS-policy blokkerer tilgangBruk service_role-nøkkel for administratoroperasjoner, eller sjekk RLS-policyer
Ingen sanntidshendelserRealtime ikke aktivert for tabellAktiver i Database → Replication → legg tabell til i publisering
Tomme spørringsresultaterRLS filtrerer alle raderVerifiser at RLS-policyer tillater den autentiserte rollen å lese
Lagringsopplasting mislykkesBøttepolicyerSjekk at Storage-bøtta er satt til offentlig eller har riktige RLS-policyer

Feilsøkingsmodus

connectors:
supabase:
debug: true
log_level: verbose
log_queries: true
log_realtime: true

Test tilkobling

Terminal window
tajo connectors test supabase
# ✓ API-tilkobling vellykket
# ✓ Auth-endepunkt tilgjengelig
# ✓ Tabeller lesbare (12 tabeller funnet)
# ✓ Lagring tilgjengelig (3 bøtter)
# ✓ Realtime-tilkobling etablert
# ✓ Edge Functions tilgjengelig (4 funksjoner)

Beste praksis

  1. Bruk service_role-nøkkel kun på tjenersiden, Eksponer den aldri i klientkode
  2. Aktiver RLS på alle tabeller, Selv med service_role, design med RLS for dybdeforsvar
  3. Bruk Realtime for hendelsesdrevet synkronisering, Mer effektivt enn polling for endringer
  4. Batch-operasjoner, Bruk bulk-innsettinger og in-filter for operasjoner med stort volum
  5. Mapp brukermetadata, Lagre engasjementsrelevante felt i user_metadata ved registrering
  6. Bruk Edge Functions for webhooks, Behandle innkommende webhooks med Supabase Edge Functions for lav-latens-håndtering

Sikkerhet

  • API-nøkkelautentisering, Alle forespørsler krever gyldige API-nøkler
  • Row Level Security (RLS), Postgres-nativ tilgangskontroll per rad
  • JWT-verifisering, Auth-tokens er signerte JWT-er verifisert på hver forespørsel
  • SSL/TLS, Alle tilkoblinger er kryptert under transport
  • SOC 2 Type II, Supabase er SOC 2-kompatibel
  • Nettverksrestriksjoner, Valgfri IP-hviteliste på betalte planer

Relaterte ressurser

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-assistent

Hei! Spør meg om dokumentasjonen.