Supabase-koppling

Anslut ditt Supabase-projekt för att synka databasposter, data för användarautentisering, fillagringshändelser och realtidsändringar för automation av kundengagemang.

Översikt

EgenskapVärde
PlattformSupabase
KategoriDatabas & Backend
InstallationskomplexitetEnkel
Officiell integrationJa
Data som synkasAnvändare, tabeller, lagring, händelser
Tillgängliga skills11
API-typREST (PostgREST) + Realtime WebSocket
Officiella dokumentsupabase.com/docs

Funktioner

  • Autogenererat REST API, CRUD-operationer på vilken Postgres-tabell som helst via PostgREST, ingen kod krävs
  • Synk av Auth-användare, Synka Supabase Auth-användare (e-post, telefon, sociala inloggningar) till din engagemangsplattform
  • Realtidsprenumerationer, Lyssna på INSERT, UPDATE, DELETE-händelser på vilken tabell som helst i realtid
  • Row Level Security, All API-åtkomst respekterar Postgres RLS-policyer för säker data med flera tenants
  • Lagringsintegration, Spåra filuppladdningar och hantera tillgångar över Storage-buckets
  • Edge Functions, Anropa serverlösa Deno-funktioner för anpassad logik och webhooks
  • Fulltextsökning, Utnyttja Postgres fulltextsökningsfunktioner via API:et

Förutsättningar

Innan du börjar, se till att du har:

  1. Ett Supabase-projekt (app.supabase.com)
  2. Ditt projekts API-URL och API-nycklar (finns i Settings → API)
  3. Ett Tajo-konto med API-åtkomst

API-nycklar

Supabase tillhandahåller två nycklar: anon (publik, respekterar RLS) och service_role (kringgår RLS, adminåtkomst). Använd service_role för serversideintegrationer och anon för klientsida.

Autentisering

Supabase använder API-nyckelautentisering. Varje förfrågan kräver apikey-headern och valfritt en Authorization-bearer-token för användarscoped åtkomst.

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

Grundinställning

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

Fältmappning

Mappa Supabase-tabellkolumner till engagemangsplattformsattribut:

Standardmappningar för användare

Parameter Type Description
email required
string

Användarens e-post från Supabase Auth (unik identifierare)

phone optional
string

Telefonnummer för SMS/WhatsApp-engagemang

user_metadata.full_name optional
string

Visningsnamn från Auth-användarens metadata

user_metadata.avatar_url optional
string

URL till profilbild

created_at optional
timestamp

Tidsstämpel för kontoskapande

last_sign_in_at optional
timestamp

Senaste inloggning för engagemangspoäng

app_metadata.provider optional
string

Auth-leverantör (email, google, github, etc.)

confirmed_at optional
timestamp

Tidsstämpel för e-postbekräftelse

Mappning av anpassade tabeller

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 genereras automatiskt från ditt databasschema på https://<ref>.supabase.co/rest/v1/.

EndpointMetodBeskrivning
/rest/v1/{table}GETFråga rader med filtrering, sortering, sidindelning
/rest/v1/{table}POSTInfoga rader (stöder bulk och upsert)
/rest/v1/{table}PATCHUppdatera rader som matchar filter
/rest/v1/{table}DELETERadera rader som matchar filter
/rest/v1/rpc/{function}POSTAnropa en Postgres-funktion
/auth/v1/signupPOSTSkapa en ny användare
/auth/v1/token?grant_type=passwordPOSTLogga in med lösenord
/auth/v1/userGETHämta aktuell användare
/auth/v1/admin/usersGETLista alla användare (service_role)
/storage/v1/object/{bucket}/{path}POSTLadda upp fil
/storage/v1/object/list/{bucket}POSTLista filer i bucket
/functions/v1/{function_name}POSTAnropa Edge Function

Filtreringsoperatorer

OperatorBeskrivningExempel
eqLika med?status=eq.active
neqInte lika med?status=neq.deleted
gt, gteStörre än?amount=gt.100
lt, lteMindre än?created_at=lt.2024-01-01
like, ilikeMönstermatchning?name=ilike.%john%
inI array?status=in.(active,trial)
isNull-kontroll?deleted_at=is.null

Händelser

Auth-händelser

HändelseUtlösareAnvändningsfall
user.signed_upNy användarregistreringVälkomstserie
user.signed_inAnvändarinloggningAktivitetsspårning
user.updatedProfiländringarDatasynk
user.deletedKontoraderingRensningsarbetsflöden

Databashändelser (Realtime)

HändelseUtlösareAnvändningsfall
INSERTNy rad tillagdNotifieringar för ny beställning/kund
UPDATERad ändradArbetsflöden för statusändring
DELETERad borttagenChurnupptäckt

Webhook-händelser

HändelseUtlösareAnvändningsfall
auth.user.createdAnvändarregistrering via webhookUtlös onboarding
storage.object.createdFil uppladdadTillgångsbearbetning

Kodexempel

Initiera kopplingen

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,
});

Synka användare till 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',
});

Lyssna på realtidsändringar

// 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();

Fråga och segmentera

// 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);

Hastighetsbegränsningar

API-hastighetsbegränsningar

Supabases hastighetsbegränsningar beror på din plan. Free tier: 500 förfrågningar/minut. Pro: 1 000 förfrågningar/sekund. Kontakta Supabase för Enterprise-gränser.

PlanHastighetsbegränsningRealtidsanslutningar
Free500 förfrågningar/min200 samtidiga
Pro1 000 förfrågningar/sek500 samtidiga
Team2 000 förfrågningar/sek1 000 samtidiga
EnterpriseAnpassadAnpassad

Felsökning

Vanliga problem

ProblemOrsakLösning
401 UnauthorizedOgiltig eller utgången API-nyckelKontrollera API-nycklar i Supabase Dashboard → Settings → API
403 ForbiddenRLS-policy blockerar åtkomstAnvänd service_role-nyckel för adminoperationer, eller kontrollera RLS-policyer
Inga realtidshändelserRealtime ej aktiverat för tabellAktivera i Database → Replication → lägg till tabell i publikation
Tomma frågeresultatRLS filtrerar bort alla raderVerifiera att RLS-policyer tillåter den autentiserade rollen att läsa
Lagringsuppladdning misslyckasBucket-policyerKontrollera att Storage-bucket är satt till publik eller har korrekta RLS-policyer

Felsökningsläge

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

Testa anslutning

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)

Bästa praxis

  1. Använd service_role-nyckel endast på serversidan, Exponera den aldrig i klientkod
  2. Aktivera RLS på alla tabeller, Även med service_role, designa med RLS för djupförsvar
  3. Använd Realtime för händelsedriven synk, Mer effektivt än polling efter ändringar
  4. Batcha operationer, Använd bulk-insättningar och in-filtret för operationer med stor volym
  5. Mappa användarmetadata, Lagra engagemangsrelevanta fält i user_metadata vid registrering
  6. Använd Edge Functions för webhooks, Behandla inkommande webhooks med Supabase Edge Functions för låg latens

Säkerhet

  • API-nyckelautentisering, Alla förfrågningar kräver giltiga API-nycklar
  • Row Level Security (RLS), Postgres-nativ åtkomstkontroll per rad
  • JWT-verifiering, Auth-tokens är signerade JWT:er som verifieras vid varje förfrågan
  • SSL/TLS, Alla anslutningar krypterade i transit
  • SOC 2 Type II, Supabase är SOC 2-kompatibel
  • Nätverksbegränsningar, Valfri IP-allowlisting på betalplaner

Relaterade resurser

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Fråga mig om dokumentationen.