Supabase Bağlayıcısı
Bağlayıcı durumu: Planlandı Henüz oluşturulmadı. Tajo bu bağlayıcıyı bugün çalıştırmıyor.
Temsili görsel · örnek veriler
Senkronizasyon örneği
Kaynak
Supabase
Bağlayıcı durumu: Planlandı
Hedef
Diğer aracınız
Bağlayıcı durumu: Özel araç
Alan eşleme
| Kaynak alanı | Hedef alanı | Örnek değer |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Taslak
- Bir kaydı inceleyin
- Bu sürümü onaylayın
Durumlar tek tek bağlayıcılara aittir; bu senkronizasyonun hazır olduğunu garanti etmez. Alanlar örnektir. Senkronizasyon çalışmadan önce gerçek şemayı ve izinleri kontrol edin.
Müşteri etkileşim otomasyonu için veritabanı kayıtlarını, kullanıcı kimlik doğrulama verilerini, dosya depolama olaylarını ve gerçek zamanlı değişiklikleri senkronize etmek üzere Supabase projenizi bağlayın.
Genel Bakış
| Özellik | Değer |
|---|---|
| Platform | Supabase |
| Kategori | Veritabanı ve Arka Uç |
| Kurulum Karmaşıklığı | Kolay |
| Resmi Entegrasyon | Hayır |
| Senkronize Edilen Veri | Kullanıcılar, Tablolar, Depolama, Olaylar |
| Kullanılabilir Yetenekler | 11 |
| API Türü | REST (PostgREST) + Gerçek Zamanlı WebSocket |
| Resmi Belgeler | supabase.com/docs |
Özellikler
- Otomatik oluşturulan REST API, PostgREST aracılığıyla herhangi bir Postgres tablosunda CRUD işlemleri, kod gerektirmez
- Kimlik doğrulama kullanıcı senkronizasyonu, Supabase Auth kullanıcılarını (e-posta, telefon, sosyal oturumlar) etkileşim platformunuza senkronize edin
- Gerçek zamanlı abonelikler, Herhangi bir tablodaki INSERT, UPDATE, DELETE olaylarını gerçek zamanlı olarak dinleyin
- Satır Düzeyi Güvenlik, Tüm API erişimi, güvenli çok kiracılı veri için Postgres RLS politikalarına uyar
- Depolama entegrasyonu, Dosya yüklemelerini izleyin ve Depolama kovaları arasında varlıkları yönetin
- Edge Functions, Özel mantık ve webhook’lar için sunucusuz Deno işlevleri çağırın
- Tam metin arama, API aracılığıyla Postgres tam metin arama özelliklerinden yararlanın
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Bir Supabase projesi (app.supabase.com)
- Projenizin API URL’si ve API anahtarları (Settings → API bölümünde bulunur)
- API erişimi olan bir Tajo hesabı
API Anahtarları
Supabase iki anahtar sağlar: anon (herkese açık, RLS’ye uyar) ve service_role (RLS’yi atlar, yönetici erişimi). Sunucu tarafı entegrasyonlar için service_role, istemci tarafı için anon kullanın.
Kimlik Doğrulama
Supabase API anahtarı kimlik doğrulaması kullanır. Her istek apikey başlığını gerektirir ve kullanıcı kapsamlı erişim için isteğe bağlı olarak Authorization bearer belirteci gerektirir.
# anon anahtarı kullanma (RLS'ye uyar)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_ANON_KEY>" \ -H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# service_role anahtarı kullanma (RLS'yi atlar)curl 'https://<project_ref>.supabase.co/rest/v1/customers' \ -H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \ -H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"Yapılandırma
Temel Kurulum
connectors: supabase: enabled: true project_url: "https://xyzcompany.supabase.co" api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Veri senkronizasyon seçenekleri sync: users: true tables: - customers - orders - products storage: true realtime: true
# Supabase Auth kullanıcılarını kişilere eşle user_mapping: email: email phone: SMS user_metadata.full_name: FIRSTNAME created_at: SIGNUP_DATEAlan Eşleştirme
Supabase tablo sütunlarını etkileşim platformu özniteliklerine eşleyin:
Varsayılan Kullanıcı Eşleştirmeleri
| Parameter | Type | Description |
|---|---|---|
email required | string | Supabase Auth'tan kullanıcı e-postası (benzersiz tanımlayıcı) |
phone optional | string | SMS/WhatsApp etkileşimi için telefon numarası |
user_metadata.full_name optional | string | Auth kullanıcı meta verilerinden görünen ad |
user_metadata.avatar_url optional | string | Profil resmi URL'si |
created_at optional | timestamp | Hesap oluşturma zaman damgası |
last_sign_in_at optional | timestamp | Etkileşim puanlaması için en son oturum açma |
app_metadata.provider optional | string | Kimlik doğrulama sağlayıcısı (email, google, github vb.) |
confirmed_at optional | timestamp | E-posta onay zaman damgası |
Özel Tablo Eşleştirme
table_mapping: customers: # Sütun → Öznitelik eşleştirmesi email: email full_name: FIRSTNAME company: COMPANY plan: SUBSCRIPTION_PLAN mrr: MONTHLY_REVENUE created_at: SIGNUP_DATE
orders: # Olay olarak izle sync_as: events event_name: "order_placed" properties: total: amount status: order_status items: line_itemsAPI Uç Noktaları
Supabase REST API’si, veritabanı şemanızdan https://<ref>.supabase.co/rest/v1/ adresinde otomatik olarak oluşturulur.
| Uç Nokta | Yöntem | Açıklama |
|---|---|---|
/rest/v1/{table} | GET | Filtreleme, sıralama, sayfalama ile satırları sorgula |
/rest/v1/{table} | POST | Satır ekle (toplu ve upsert destekler) |
/rest/v1/{table} | PATCH | Filtrelerle eşleşen satırları güncelle |
/rest/v1/{table} | DELETE | Filtrelerle eşleşen satırları sil |
/rest/v1/rpc/{function} | POST | Bir Postgres fonksiyonu çağır |
/auth/v1/signup | POST | Yeni kullanıcı oluştur |
/auth/v1/token?grant_type=password | POST | Parolayla oturum aç |
/auth/v1/user | GET | Mevcut kullanıcıyı al |
/auth/v1/admin/users | GET | Tüm kullanıcıları listele (service_role) |
/storage/v1/object/{bucket}/{path} | POST | Dosya yükle |
/storage/v1/object/list/{bucket} | POST | Kovadaki dosyaları listele |
/functions/v1/{function_name} | POST | Edge Function çağır |
Filtreleme Operatörleri
| Operatör | Açıklama | Örnek |
|---|---|---|
eq | Eşittir | ?status=eq.active |
neq | Eşit değildir | ?status=neq.deleted |
gt, gte | Büyüktür | ?amount=gt.100 |
lt, lte | Küçüktür | ?created_at=lt.2024-01-01 |
like, ilike | Desen eşleştirme | ?name=ilike.%john% |
in | Dizide | ?status=in.(active,trial) |
is | Null kontrolü | ?deleted_at=is.null |
Olaylar
Kimlik Doğrulama Olayları
| Olay | Tetikleyici | Kullanım Durumu |
|---|---|---|
user.signed_up | Yeni kullanıcı kaydı | Hoş geldiniz serisi |
user.signed_in | Kullanıcı oturumu | Aktivite takibi |
user.updated | Profil değişiklikleri | Veri senkronizasyonu |
user.deleted | Hesap silme | Temizleme iş akışları |
Veritabanı Olayları (Gerçek Zamanlı)
| Olay | Tetikleyici | Kullanım Durumu |
|---|---|---|
INSERT | Yeni satır eklendi | Yeni sipariş/müşteri bildirimleri |
UPDATE | Satır değiştirildi | Durum değişiklik iş akışları |
DELETE | Satır kaldırıldı | Kayıp tespiti |
Webhook Olayları
| Olay | Tetikleyici | Kullanım Durumu |
|---|---|---|
auth.user.created | Webhook aracılığıyla kullanıcı kaydı | Onboarding tetikleme |
storage.object.created | Dosya yüklendi | Varlık işleme |
Kod Örnekleri
Bağlayıcıyı Başlatma
import { TajoClient } from '@tajo/sdk';import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY,});
// Supabase projesini bağlaawait tajo.connectors.connect('supabase', { projectUrl: process.env.SUPABASE_URL, serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,});Kullanıcıları Kişilere Senkronize Etme
// Tüm Supabase Auth kullanıcılarını kişi olarak senkronize etawait tajo.connectors.sync('supabase', { type: 'full', resources: ['users'],});
// Artımlı senkronizasyon (yalnızca yeni/değişen kullanıcılar)await tajo.connectors.sync('supabase', { type: 'incremental', resources: ['users'], since: '2024-01-01T00:00:00Z',});Gerçek Zamanlı Değişiklikleri Dinleme
// Etkileşim tetikleyicileri için yeni siparişlere abone olconst 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) => { // Tajo'ya olay olarak ilet 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();Sorgulama ve Segmentleme
// Hedefli kampanyalar için müşterileri plana göre sorgulaconst { data: proUsers } = await supabase .from('customers') .select('email, full_name, plan, mrr') .eq('plan', 'pro') .gt('mrr', 100) .order('mrr', { ascending: false });
// Kampanya hedefleme için bir Brevo listesine senkronize etawait tajo.lists.addContacts(PRO_LIST_ID, proUsers);Hız Sınırları
API Hız Sınırları
Supabase hız sınırları planınıza bağlıdır. Ücretsiz katman: dakikada 500 istek. Pro: saniyede 1.000 istek. Kurumsal sınırlar için Supabase ile iletişime geçin.
| Plan | Hız Sınırı | Gerçek Zamanlı Bağlantılar |
|---|---|---|
| Ücretsiz | 500 istek/dk | 200 eşzamanlı |
| Pro | 1.000 istek/sn | 500 eşzamanlı |
| Team | 2.000 istek/sn | 1.000 eşzamanlı |
| Enterprise | Özel | Özel |
Sorun Giderme
Yaygın Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Geçersiz veya süresi dolmuş API anahtarı | Supabase Dashboard → Settings → API bölümünden API anahtarlarını kontrol edin |
| 403 Forbidden | RLS politikası erişimi engelliyor | Yönetici işlemleri için service_role anahtarını kullanın veya RLS politikalarını kontrol edin |
| Gerçek zamanlı olay yok | Tablo için Realtime etkin değil | Database → Replication → tabloyu yayına ekleyin |
| Boş sorgu sonuçları | RLS tüm satırları filtreliyor | RLS politikalarının kimliği doğrulanmış rolün okumasına izin verdiğini doğrulayın |
| Depolama yüklemesi başarısız | Kova politikaları | Depolama kovasının herkese açık veya doğru RLS politikalarına sahip olduğunu kontrol edin |
Hata Ayıklama Modu
connectors: supabase: debug: true log_level: verbose log_queries: true log_realtime: trueBağlantı Testi
tajo connectors test supabase# ✓ API bağlantısı başarılı# ✓ Kimlik doğrulama uç noktası erişilebilir# ✓ Tablolar okunabilir (12 tablo bulundu)# ✓ Depolama erişilebilir (3 kova)# ✓ Gerçek zamanlı bağlantı kuruldu# ✓ Edge Functions mevcut (4 işlev)En İyi Uygulamalar
- service_role anahtarını yalnızca sunucu tarafında kullanın, Asla istemci kodunda ifşa etmeyin
- Tüm tablolarda RLS’yi etkinleştirin, service_role ile bile, derinlemesine savunma için RLS ile tasarlayın
- Olay odaklı senkronizasyon için Realtime kullanın, Değişiklikleri yoklamaktan daha verimlidir
- Toplu işlemler, Yüksek hacimli işlemler için toplu eklemeler ve
infiltresini kullanın - Kullanıcı meta verilerini eşleyin, Kayıt sırasında etkileşimle ilgili alanları
user_metadataiçinde saklayın - Webhook’lar için Edge Functions kullanın, Düşük gecikmeli işleme için gelen webhook’ları Supabase Edge Functions ile işleyin
Güvenlik
- API Anahtarı Kimlik Doğrulaması, Tüm istekler geçerli API anahtarları gerektirir
- Satır Düzeyi Güvenlik (RLS), Satır başına Postgres yerel erişim kontrolü
- JWT Doğrulaması, Kimlik doğrulama belirteçleri her istekte doğrulanan imzalı JWT’lerdir
- SSL/TLS, Tüm bağlantılar aktarımda şifrelenir
- SOC 2 Type II, Supabase SOC 2 uyumludur
- Ağ Kısıtlamaları, Ücretli planlarda isteğe bağlı IP izin verme