Supabase Connector
Connectorstatus: Planlagt Ikke bygget endnu. Tajo kører ikke denne connector i dag.
Illustration · eksempeldata
Eksempel på synkronisering
Kilde
Supabase
Connectorstatus: Planlagt
Destination
Dit andet værktøj
Connectorstatus: Eget værktøj
Feltmapping
| Kildefelt | Destinationsfelt | Eksempelværdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Udkast
- Gennemse én post
- Godkend denne version
Status gælder den enkelte connector og garanterer ikke, at denne synkronisering er klar. Felterne er illustrative. Tjek det faktiske skema og tilladelser før en synkronisering.
Forbind dit Supabase-projekt for at synkronisere databaseposter, autentifikationsdata, fillagringshændelser og realtidsændringer til automatisering af kundeengagement.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | Supabase |
| Kategori | Database og backend |
| Opsætningskompleksitet | Let |
| Officiel integration | Nej |
| Synkroniserede data | Brugere, tabeller, lagring, hændelser |
| Tilgængelige skills | 11 |
| API-type | REST (PostgREST) + Realtime WebSocket |
| Officiel dokumentation | supabase.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:
- Et Supabase-projekt (app.supabase.com)
- Dit projekts API-URL og API-nøgler (findes under Settings → API)
- 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.
# 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_DATEFeltmapping
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_itemsAPI-endpoints
Supabase REST API genereres automatisk fra dit databaseskema på https://<ref>.supabase.co/rest/v1/.
| Endpoint | Metode | Beskrivelse |
|---|---|---|
/rest/v1/{table} | GET | Forespørg rækker med filtrering, sortering, paginering |
/rest/v1/{table} | POST | Indsæt rækker (understøtter bulk og upsert) |
/rest/v1/{table} | PATCH | Opdatér rækker, der matcher filtre |
/rest/v1/{table} | DELETE | Slet rækker, der matcher filtre |
/rest/v1/rpc/{function} | POST | Kald en Postgres-funktion |
/auth/v1/signup | POST | Opret en ny bruger |
/auth/v1/token?grant_type=password | POST | Log ind med adgangskode |
/auth/v1/user | GET | Hent aktuel bruger |
/auth/v1/admin/users | GET | Vis alle brugere (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Upload fil |
/storage/v1/object/list/{bucket} | POST | Vis filer i bucket |
/functions/v1/{function_name} | POST | Aktivér Edge Function |
Filtreringsoperatorer
| Operator | Beskrivelse | Eksempel |
|---|---|---|
eq | Lig med | ?status=eq.active |
neq | Ikke lig med | ?status=neq.deleted |
gt, gte | Større end | ?amount=gt.100 |
lt, lte | Mindre end | ?created_at=lt.2024-01-01 |
like, ilike | Mønstermatch | ?name=ilike.%john% |
in | I array | ?status=in.(active,trial) |
is | Null-tjek | ?deleted_at=is.null |
Hændelser
Auth-hændelser
| Hændelse | Trigger | Anvendelse |
|---|---|---|
user.signed_up | Ny brugerregistrering | Velkomstserie |
user.signed_in | Brugerlogin | Aktivitetstracking |
user.updated | Profilændringer | Datasynkronisering |
user.deleted | Kontosletning | Oprydnings-workflows |
Databasehændelser (Realtime)
| Hændelse | Trigger | Anvendelse |
|---|---|---|
INSERT | Ny række tilføjet | Notifikationer om ny ordre/kunde |
UPDATE | Række ændret | Workflows ved statusændring |
DELETE | Række fjernet | Churn-detektion |
Webhook-hændelser
| Hændelse | Trigger | Anvendelse |
|---|---|---|
auth.user.created | Brugertilmelding via webhook | Udløs onboarding |
storage.object.created | Fil uploadet | Asset-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 projectawait 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 contactsawait 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 triggersconst 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 campaignsconst { 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 targetingawait 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.
| Plan | Ratebegrænsning | Realtime-forbindelser |
|---|---|---|
| Free | 500 req/min | 200 samtidige |
| Pro | 1.000 req/sek | 500 samtidige |
| Team | 2.000 req/sek | 1.000 samtidige |
| Enterprise | Tilpasset | Tilpasset |
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldig eller udløbet API-nøgle | Tjek API-nøgler i Supabase Dashboard → Settings → API |
| 403 Forbidden | RLS-politik blokerer adgang | Brug service_role-nøgle til administratoroperationer, eller tjek RLS-politikker |
| Ingen realtime-hændelser | Realtime ikke aktiveret for tabel | Aktivér i Database → Replication → tilføj tabel til publication |
| Tomme query-resultater | RLS filtrerer alle rækker | Verificér, at RLS-politikker tillader den autentificerede rolle at læse |
| Storage-upload fejler | Bucket-politikker | Tjek, 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: trueTest forbindelse
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
- Brug kun service_role-nøglen på serverside, Eksponér den aldrig i klientkode
- Aktivér RLS på alle tabeller, Selv med service_role bør du designe med RLS for defense in depth
- Brug Realtime til hændelsesdrevet synkronisering, Mere effektivt end polling for ændringer
- Batch-operationer, Brug bulk-inserts og
in-filteret til operationer med højt volumen - Map brugermetadata, Gem engagementrelevante felter i
user_metadataunder tilmelding - 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