Supabase-connector
Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.
Illustratie · voorbeelddata
Voorbeeld van synchronisatie
Bron
Supabase
Connectorstatus: Gepland
Bestemming
Je andere tool
Connectorstatus: Eigen tool
Veldtoewijzing
| Bronveld | Doelveld | Voorbeeldwaarde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Opstellen
- Eén record controleren
- Deze versie goedkeuren
Statussen gelden per connector en garanderen niet dat deze synchronisatie klaar is. De velden zijn illustratief. Controleer het echte schema en de rechten voordat een synchronisatie draait.
Verbind je Supabase-project om databaserecords, gebruikersauthenticatiedata, file storage-events en realtime wijzigingen te synchroniseren voor automatisering van klantbetrokkenheid.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Supabase |
| Categorie | Database & Backend |
| Setupcomplexiteit | Eenvoudig |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Gebruikers, Tabellen, Storage, Events |
| Beschikbare skills | 11 |
| API-type | REST (PostgREST) + Realtime WebSocket |
| Officiële docs | supabase.com/docs |
Functies
- Auto-gegenereerde REST API, CRUD-operaties op elke Postgres-tabel via PostgREST, geen code nodig
- Auth-gebruikersynchronisatie, Synchroniseer Supabase Auth-gebruikers (email, telefoon, social logins) naar je engagementplatform
- Realtime subscriptions, Luister realtime naar INSERT-, UPDATE- en DELETE-events op elke tabel
- Row Level Security, Alle API-toegang respecteert Postgres RLS-policies voor veilige multi-tenant data
- Storage-integratie, Volg file uploads en beheer assets in Storage-buckets
- Edge Functions, Roep serverless Deno-functies aan voor custom logic en webhooks
- Full-text search, Maak gebruik van Postgres full-text search via de API
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Supabase-project (app.supabase.com)
- De API URL en API keys van je project (te vinden in Settings → API)
- Een Tajo-account met API-toegang
API Keys
Supabase biedt twee keys: anon (publiek, respecteert RLS) en service_role (omzeilt RLS, admin-toegang). Gebruik service_role voor server-side integraties en anon voor client-side.
Authenticatie
Supabase gebruikt API key-authenticatie. Elke request vereist de apikey-header en optioneel een Authorization bearer token voor user-scoped toegang.
# 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>"Configuratie
Basisinstelling
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_DATEVeldmapping
Map Supabase-tabelkolommen naar attributen van het engagementplatform:
Standaard gebruikersmappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Gebruikers-e-mail uit Supabase Auth (unieke identifier) |
phone optional | string | Telefoonnummer voor SMS/WhatsApp-engagement |
user_metadata.full_name optional | string | Displaynaam uit Auth user metadata |
user_metadata.avatar_url optional | string | URL van profielafbeelding |
created_at optional | timestamp | Tijdstempel van account-aanmaak |
last_sign_in_at optional | timestamp | Meest recente login voor engagement-scoring |
app_metadata.provider optional | string | Auth-provider (email, google, github, etc.) |
confirmed_at optional | timestamp | Tijdstempel van e-mailbevestiging |
Custom 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
De Supabase REST API wordt automatisch gegenereerd vanuit je databaseschema op https://<ref>.supabase.co/rest/v1/.
| Endpoint | Method | Beschrijving |
|---|---|---|
/rest/v1/{table} | GET | Rijen queryen met filtering, ordering, paginering |
/rest/v1/{table} | POST | Rijen invoegen (ondersteunt bulk en upsert) |
/rest/v1/{table} | PATCH | Rijen bijwerken die aan filters voldoen |
/rest/v1/{table} | DELETE | Rijen verwijderen die aan filters voldoen |
/rest/v1/rpc/{function} | POST | Een Postgres-functie aanroepen |
/auth/v1/signup | POST | Een nieuwe gebruiker aanmaken |
/auth/v1/token?grant_type=password | POST | Inloggen met wachtwoord |
/auth/v1/user | GET | Huidige gebruiker ophalen |
/auth/v1/admin/users | GET | Alle gebruikers opvragen (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Bestand uploaden |
/storage/v1/object/list/{bucket} | POST | Bestanden in bucket opvragen |
/functions/v1/{function_name} | POST | Edge Function aanroepen |
Filteringsoperatoren
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
eq | Gelijk aan | ?status=eq.active |
neq | Niet gelijk aan | ?status=neq.deleted |
gt, gte | Groter dan | ?amount=gt.100 |
lt, lte | Kleiner dan | ?created_at=lt.2024-01-01 |
like, ilike | Pattern match | ?name=ilike.%john% |
in | In array | ?status=in.(active,trial) |
is | Null check | ?deleted_at=is.null |
Events
Auth-events
| Event | Trigger | Use case |
|---|---|---|
user.signed_up | Nieuwe gebruikersregistratie | Welkomstreeks |
user.signed_in | Gebruikerslogin | Activiteitstracking |
user.updated | Profielwijzigingen | Datasynchronisatie |
user.deleted | Account verwijderd | Cleanup-workflows |
Database-events (Realtime)
| Event | Trigger | Use case |
|---|---|---|
INSERT | Nieuwe rij toegevoegd | Notificaties voor nieuwe order/klant |
UPDATE | Rij gewijzigd | Workflows voor statuswijziging |
DELETE | Rij verwijderd | Churn-detectie |
Webhook-events
| Event | Trigger | Use case |
|---|---|---|
auth.user.created | Gebruikersregistratie via webhook | Onboarding triggeren |
storage.object.created | Bestand geüpload | Asset-verwerking |
Codevoorbeelden
Connector initialiseren
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,});Gebruikers synchroniseren naar contacten
// 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',});Realtime wijzigingen beluisteren
// 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();Queryen en segmenteren
// 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);Rate limits
API-rate limits
Supabase-rate limits hangen af van je plan. Free tier: 500 requests/minuut. Pro: 1.000 requests/seconde. Neem contact op met Supabase voor Enterprise-limieten.
| Plan | Rate Limit | Realtime-verbindingen |
|---|---|---|
| Free | 500 req/min | 200 gelijktijdig |
| Pro | 1.000 req/s | 500 gelijktijdig |
| Team | 2.000 req/s | 1.000 gelijktijdig |
| Enterprise | Custom | Custom |
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Ongeldige of verlopen API key | Controleer API keys in Supabase Dashboard → Settings → API |
| 403 Forbidden | RLS-policy blokkeert toegang | Gebruik service_role-key voor admin-operaties of controleer RLS-policies |
| Geen realtime events | Realtime niet ingeschakeld voor tabel | Schakel in via Database → Replication → tabel toevoegen aan publication |
| Lege query-resultaten | RLS filtert alle rijen weg | Verifieer dat RLS-policies de geauthenticeerde rol leestoegang geven |
| Storage-upload mislukt | Bucket-policies | Controleer of Storage-bucket publiek is of correcte RLS-policies heeft |
Debugmodus
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: trueVerbinding testen
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
- Gebruik service_role-key alleen server-side, Stel deze nooit bloot in client-code
- Schakel RLS in op alle tabellen, Ontwerp ook met service_role volgens RLS voor defense in depth
- Gebruik Realtime voor event-gedreven sync, Efficiënter dan pollen voor wijzigingen
- Batch-operaties, Gebruik bulk inserts en de
in-filter voor operaties met hoog volume - Map user metadata, Sla engagement-relevante velden op in
user_metadatatijdens signup - Gebruik Edge Functions voor webhooks, Verwerk binnenkomende webhooks met Supabase Edge Functions voor lage latency
Beveiliging
- API key-authenticatie, Alle requests vereisen geldige API keys
- Row Level Security (RLS), Postgres-native toegangscontrole per rij
- JWT-verificatie, Auth-tokens zijn gesigneerde JWT’s, geverifieerd bij elke request
- SSL/TLS, Alle verbindingen versleuteld tijdens transport
- SOC 2 Type II, Supabase is SOC 2-compliant
- Netwerkrestricties, Optionele IP-allowlisting op betaalde plannen