Supabase Connector

Forbind dit Supabase-projekt for at synkronisere databaseposter, autentifikationsdata, fillagringshændelser og realtidsændringer til automatisering af kundeengagement.

Oversigt

EgenskabVærdi
PlatformSupabase
KategoriDatabase og backend
OpsætningskompleksitetLet
Officiel integrationJa
Synkroniserede dataBrugere, tabeller, lagring, hændelser
Tilgængelige skills11
API-typeREST (PostgREST) + Realtime WebSocket
Officiel dokumentationsupabase.com/docs

Funktioner

  • Auto-genereret REST API, CRUD-operationer på enhver Postgres-tabel via PostgREST, uden kode
  • Auth-brugersynkronisering, Synkronisér Supabase Auth-brugere (e-mail, telefon, sociale logins) til din engagementplatform
  • Realtidsabonnementer, Lyt til INSERT-, UPDATE-, DELETE-hændelser på enhver tabel i realtid
  • Row Level Security, Al API-adgang respekterer Postgres RLS-politikker for sikre multi-tenant-data
  • Lagrings-integration, Spor filuploads og administrér assets på tværs af Storage-buckets
  • Edge Functions, Aktivér serverløse Deno-funktioner til brugerdefineret logik og webhooks
  • Fuldtekstsøgning, Udnyt Postgres’ fuldtekstsøgningsfunktioner via API’et

Forudsætninger

Før du begynder, skal du sikre dig, at du har:

  1. Et Supabase-projekt (app.supabase.com)
  2. Dit projekts API-URL og API-nøgler (findes under Settings → API)
  3. En Tajo-konto med API-adgang

API-nøgler

Supabase leverer to nøgler: anon (offentlig, respekterer RLS) og service_role (omgår RLS, administratoradgang). Brug service_role til serverside-integrationer og anon til klientside.

Autentifikation

Supabase bruger API-nøgle-autentifikation. Hver forespørgsel kræver headeren apikey og valgfrit en Authorization-bearer-token til brugerscoped adgang.

Terminal window
# Using anon key (respects RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_ANON_KEY>" \
-H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Using service_role key (bypasses RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \
-H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"

Konfiguration

Grundlæggende opsætning

connectors:
supabase:
enabled: true
project_url: "https://xyzcompany.supabase.co"
api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Data sync options
sync:
users: true
tables:
- customers
- orders
- products
storage: true
realtime: true
# Map Supabase Auth users to contacts
user_mapping:
email: email
phone: SMS
user_metadata.full_name: FIRSTNAME
created_at: SIGNUP_DATE

Feltmapping

Knyt Supabase-tabelkolonner til engagementplatformens attributter:

Standardmappings for brugere

Parameter Type Description
email required
string

Bruger-e-mail fra Supabase Auth (unik identifikator)

phone optional
string

Telefonnummer til SMS-/WhatsApp-engagement

user_metadata.full_name optional
string

Visningsnavn fra Auth-brugermetadata

user_metadata.avatar_url optional
string

URL til profilbillede

created_at optional
timestamp

Tidsstempel for kontooprettelse

last_sign_in_at optional
timestamp

Seneste login til engagementscoring

app_metadata.provider optional
string

Autentifikationsudbyder (email, google, github m.fl.)

confirmed_at optional
timestamp

Tidsstempel for e-mailbekræftelse

Brugerdefineret tabelmapping

table_mapping:
customers:
# Column → Attribute mapping
email: email
full_name: FIRSTNAME
company: COMPANY
plan: SUBSCRIPTION_PLAN
mrr: MONTHLY_REVENUE
created_at: SIGNUP_DATE
orders:
# Track as events
sync_as: events
event_name: "order_placed"
properties:
total: amount
status: order_status
items: line_items

API-endpoints

Supabase REST API genereres automatisk fra dit databaseskema på https://<ref>.supabase.co/rest/v1/.

EndpointMetodeBeskrivelse
/rest/v1/{table}GETForespørg rækker med filtrering, sortering, paginering
/rest/v1/{table}POSTIndsæt rækker (understøtter bulk og upsert)
/rest/v1/{table}PATCHOpdatér rækker, der matcher filtre
/rest/v1/{table}DELETESlet rækker, der matcher filtre
/rest/v1/rpc/{function}POSTKald en Postgres-funktion
/auth/v1/signupPOSTOpret en ny bruger
/auth/v1/token?grant_type=passwordPOSTLog ind med adgangskode
/auth/v1/userGETHent aktuel bruger
/auth/v1/admin/usersGETVis alle brugere (service_role)
/storage/v1/object/{bucket}/{path}POSTUpload fil
/storage/v1/object/list/{bucket}POSTVis filer i bucket
/functions/v1/{function_name}POSTAktivér Edge Function

Filtreringsoperatorer

OperatorBeskrivelseEksempel
eqLig med?status=eq.active
neqIkke lig med?status=neq.deleted
gt, gteStørre end?amount=gt.100
lt, lteMindre end?created_at=lt.2024-01-01
like, ilikeMønstermatch?name=ilike.%john%
inI array?status=in.(active,trial)
isNull-tjek?deleted_at=is.null

Hændelser

Auth-hændelser

HændelseTriggerAnvendelse
user.signed_upNy brugerregistreringVelkomstserie
user.signed_inBrugerloginAktivitetstracking
user.updatedProfilændringerDatasynkronisering
user.deletedKontosletningOprydnings-workflows

Databasehændelser (Realtime)

HændelseTriggerAnvendelse
INSERTNy række tilføjetNotifikationer om ny ordre/kunde
UPDATERække ændretWorkflows ved statusændring
DELETERække fjernetChurn-detektion

Webhook-hændelser

HændelseTriggerAnvendelse
auth.user.createdBrugertilmelding via webhookUdløs onboarding
storage.object.createdFil uploadetAsset-behandling

Kodeeksempler

Initialisér konnektor

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

Synkronisér brugere til kontakter

// Sync all Supabase Auth users as contacts
await tajo.connectors.sync('supabase', {
type: 'full',
resources: ['users'],
});
// Incremental sync (new/changed users only)
await tajo.connectors.sync('supabase', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01T00:00:00Z',
});

Lyt til realtidsændringer

// Subscribe to new orders for engagement triggers
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) => {
// Forward to Tajo as an event
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();

Forespørg og segmentér

// Query customers by plan for targeted campaigns
const { data: proUsers } = await supabase
.from('customers')
.select('email, full_name, plan, mrr')
.eq('plan', 'pro')
.gt('mrr', 100)
.order('mrr', { ascending: false });
// Sync to a Brevo list for campaign targeting
await tajo.lists.addContacts(PRO_LIST_ID, proUsers);

Ratebegrænsninger

API-ratebegrænsninger

Supabase-ratebegrænsninger afhænger af din plan. Free tier: 500 forespørgsler/minut. Pro: 1.000 forespørgsler/sekund. Kontakt Supabase for Enterprise-grænser.

PlanRatebegrænsningRealtime-forbindelser
Free500 req/min200 samtidige
Pro1.000 req/sek500 samtidige
Team2.000 req/sek1.000 samtidige
EnterpriseTilpassetTilpasset

Fejlfinding

Almindelige problemer

ProblemÅrsagLøsning
401 UnauthorizedUgyldig eller udløbet API-nøgleTjek API-nøgler i Supabase Dashboard → Settings → API
403 ForbiddenRLS-politik blokerer adgangBrug service_role-nøgle til administratoroperationer, eller tjek RLS-politikker
Ingen realtime-hændelserRealtime ikke aktiveret for tabelAktivér i Database → Replication → tilføj tabel til publication
Tomme query-resultaterRLS filtrerer alle rækkerVerificér, at RLS-politikker tillader den autentificerede rolle at læse
Storage-upload fejlerBucket-politikkerTjek, at Storage-bucket er sat til offentlig eller har korrekte RLS-politikker

Fejlfindingstilstand

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

Test forbindelse

Terminal window
tajo connectors test supabase
# ✓ API connection successful
# ✓ Auth endpoint accessible
# ✓ Tables readable (12 tables found)
# ✓ Storage accessible (3 buckets)
# ✓ Realtime connection established
# ✓ Edge Functions available (4 functions)

Best practices

  1. Brug kun service_role-nøglen på serverside, Eksponér den aldrig i klientkode
  2. Aktivér RLS på alle tabeller, Selv med service_role bør du designe med RLS for defense in depth
  3. Brug Realtime til hændelsesdrevet synkronisering, Mere effektivt end polling for ændringer
  4. Batch-operationer, Brug bulk-inserts og in-filteret til operationer med højt volumen
  5. Map brugermetadata, Gem engagementrelevante felter i user_metadata under tilmelding
  6. Brug Edge Functions til webhooks, Behandl indgående webhooks med Supabase Edge Functions for lav latens

Sikkerhed

  • API-nøgle-autentifikation, Alle forespørgsler kræver gyldige API-nøgler
  • Row Level Security (RLS), Postgres-native adgangskontrol per række
  • JWT-verifikation, Auth-tokens er signerede JWT’er, der verificeres ved hver forespørgsel
  • SSL/TLS, Alle forbindelser krypteres under overførsel
  • SOC 2 Type II, Supabase er SOC 2-compliant
  • Netværksrestriktioner, Valgfri IP-allowlisting på betalte planer

Relaterede ressourcer

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Spørg mig om dokumentationen.