---
title: "Conector Supabase"
description: "Guia completo de integração do Supabase para sincronizar registros de banco de dados, autenticação de usuário, armazenamento de arquivos e eventos em tempo real com sua plataforma de engajamento."
url: https://tajo.io/pt/docs/connectors/custom/supabase/
markdown: https://tajo.io/pt/docs/connectors/custom/supabase.md
lang: pt-BR
robots: noindex
---

Solicite acesso antecipado

Indique o seu nome e endereço de e-mail profissional. Enviaremos um link para confirmar o seu pedido de acesso ao Tajo.

# Conector Supabase

Status do conector: Planejado Ainda não construído. O Tajo não executa este conector hoje.

| Campo de origem | Campo de destino | Valor de exemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Conecte seu projeto Supabase para sincronizar registros de banco de dados, dados de autenticação de usuário, eventos de armazenamento de arquivos e alterações em tempo real para automação de engajamento de clientes.

## Visão geral

| Propriedade | Valor |
| --- | --- |
| **Plataforma** | Supabase |
| **Categoria** | Banco de Dados e Backend |
| **Complexidade de configuração** | Fácil |
| **Integração oficial** | Não |
| **Dados sincronizados** | Usuários, Tabelas, Armazenamento, Eventos |
| **Skills disponíveis** | 11 |
| **Tipo de API** | REST (PostgREST) + WebSocket Realtime |
| **Documentação oficial** | [supabase.com/docs](https://supabase.com/docs) |

## Recursos

- **API REST gerada automaticamente**, Operações CRUD em qualquer tabela Postgres via PostgREST, sem necessidade de código
- **Sincronização de usuários do Auth**, Sincronize usuários do Supabase Auth (e-mail, telefone, logins sociais) para sua plataforma de engajamento
- **Assinaturas em tempo real**, Escute eventos INSERT, UPDATE, DELETE em qualquer tabela em tempo real
- **Row Level Security**, Todo acesso à API respeita as políticas RLS do Postgres para dados multi-tenant seguros
- **Integração com Storage**, Rastreie uploads de arquivos e gerencie assets em buckets do Storage
- **Edge Functions**, Invoque funções serverless em Deno para lógica personalizada e webhooks
- **Busca full-text**, Aproveite os recursos de busca full-text do Postgres através da API

## Pré-requisitos

Antes de começar, certifique-se de ter:

1. Um projeto Supabase ([app.supabase.com](https://app.supabase.com/))
2. A **URL da API** e as **API keys** do seu projeto (em Settings → API)
3. Uma conta Tajo com acesso à API

API Keys

O Supabase fornece duas chaves: `anon` (pública, respeita RLS) e `service_role` (ignora RLS, acesso admin). Use `service_role` para integrações do lado do servidor e `anon` para o lado do cliente.

## Autenticação

O Supabase usa autenticação por API key. Cada requisição requer o cabeçalho `apikey` e, opcionalmente, um bearer token `Authorization` para acesso com escopo de usuário.

```bash
# 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>"
```

## Configuração

### Configuração básica

```yaml
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
```

### Mapeamento de campos

Mapeie colunas de tabelas do Supabase para atributos da plataforma de engajamento:

#### Mapeamentos padrão de usuário

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | E-mail do usuário do Supabase Auth (identificador único) |
| `phone` optional | string | Número de telefone para engajamento via SMS/WhatsApp |
| `user_metadata.full_name` optional | string | Nome de exibição do metadata do usuário do Auth |
| `user_metadata.avatar_url` optional | string | URL da imagem de perfil |
| `created_at` optional | timestamp | Timestamp de criação da conta |
| `last_sign_in_at` optional | timestamp | Login mais recente para pontuação de engajamento |
| `app_metadata.provider` optional | string | Provedor de Auth (email, google, github, etc.) |
| `confirmed_at` optional | timestamp | Timestamp de confirmação de e-mail |

#### Mapeamento personalizado de tabela

```yaml
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
```

## Endpoints da API

A API REST do Supabase é gerada automaticamente a partir do schema do seu banco de dados em `https://<ref>.supabase.co/rest/v1/`.

| Endpoint | Método | Descrição |
| --- | --- | --- |
| `/rest/v1/{table}` | `GET` | Consultar linhas com filtragem, ordenação, paginação |
| `/rest/v1/{table}` | `POST` | Inserir linhas (suporta inserção em massa e upsert) |
| `/rest/v1/{table}` | `PATCH` | Atualizar linhas correspondendo aos filtros |
| `/rest/v1/{table}` | `DELETE` | Excluir linhas correspondendo aos filtros |
| `/rest/v1/rpc/{function}` | `POST` | Chamar uma função Postgres |
| `/auth/v1/signup` | `POST` | Criar um novo usuário |
| `/auth/v1/token?grant_type=password` | `POST` | Entrar com senha |
| `/auth/v1/user` | `GET` | Obter usuário atual |
| `/auth/v1/admin/users` | `GET` | Listar todos os usuários (service\_role) |
| `/storage/v1/object/{bucket}/{path}` | `POST` | Fazer upload de arquivo |
| `/storage/v1/object/list/{bucket}` | `POST` | Listar arquivos no bucket |
| `/functions/v1/{function_name}` | `POST` | Invocar Edge Function |

### Operadores de filtragem

| Operador | Descrição | Exemplo |
| --- | --- | --- |
| `eq` | Igual | `?status=eq.active` |
| `neq` | Diferente | `?status=neq.deleted` |
| `gt`, `gte` | Maior que | `?amount=gt.100` |
| `lt`, `lte` | Menor que | `?created_at=lt.2024-01-01` |
| `like`, `ilike` | Correspondência de padrão | `?name=ilike.%john%` |
| `in` | No array | `?status=in.(active,trial)` |
| `is` | Verificação de null | `?deleted_at=is.null` |

## Eventos

### Eventos do Auth

| Evento | Gatilho | Caso de uso |
| --- | --- | --- |
| `user.signed_up` | Novo registro de usuário | Série de boas-vindas |
| `user.signed_in` | Login do usuário | Rastreamento de atividade |
| `user.updated` | Alterações no perfil | Sincronização de dados |
| `user.deleted` | Exclusão de conta | Workflows de limpeza |

### Eventos do banco de dados (Realtime)

| Evento | Gatilho | Caso de uso |
| --- | --- | --- |
| `INSERT` | Nova linha adicionada | Notificações de novo pedido/cliente |
| `UPDATE` | Linha modificada | Workflows de mudança de status |
| `DELETE` | Linha removida | Detecção de churn |

### Eventos de webhook

| Evento | Gatilho | Caso de uso |
| --- | --- | --- |
| `auth.user.created` | Cadastro de usuário via webhook | Disparar onboarding |
| `storage.object.created` | Arquivo enviado | Processamento de asset |

## Exemplos de código

### Inicializar o conector

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

### Sincronizar usuários para contatos

```javascript
// 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',
});
```

### Escutar alterações em tempo real

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

### Consultar e segmentar

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

## Limites de taxa

Limites de taxa da API

Os limites de taxa do Supabase dependem do seu plano. Tier gratuito: 500 requisições/minuto. Pro: 1.000 requisições/segundo. Entre em contato com o Supabase para limites Enterprise.

| Plano | Limite de taxa | Conexões Realtime |
| --- | --- | --- |
| Free | 500 req/min | 200 simultâneas |
| Pro | 1.000 req/seg | 500 simultâneas |
| Team | 2.000 req/seg | 1.000 simultâneas |
| Enterprise | Personalizado | Personalizado |

## Solução de problemas

### Problemas comuns

| Problema | Causa | Solução |
| --- | --- | --- |
| 401 Unauthorized | API key inválida ou expirada | Verifique as API keys no Supabase Dashboard → Settings → API |
| 403 Forbidden | Política RLS bloqueando acesso | Use a chave `service_role` para operações admin ou verifique as políticas RLS |
| Sem eventos em tempo real | Realtime não habilitado para a tabela | Habilite em Database → Replication → adicione a tabela à publication |
| Resultados de consulta vazios | RLS filtrando todas as linhas | Verifique se as políticas RLS permitem que a role autenticada leia |
| Falha no upload para Storage | Políticas do bucket | Verifique se o bucket do Storage é público ou tem políticas RLS corretas |

### Modo de depuração

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

### Testar conexão

```bash
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)
```

## Melhores práticas

1. **Use a chave service\_role apenas no servidor**, Nunca a exponha em código do cliente
2. **Habilite RLS em todas as tabelas**, Mesmo com service\_role, projete com RLS para defesa em profundidade
3. **Use Realtime para sincronização orientada por eventos**, Mais eficiente do que polling para detectar alterações
4. **Operações em lote**, Use inserções em massa e o filtro `in` para operações de alto volume
5. **Mapeie metadata do usuário**, Armazene campos relevantes para engajamento em `user_metadata` durante o cadastro
6. **Use Edge Functions para webhooks**, Processe webhooks recebidos com Supabase Edge Functions para tratamento de baixa latência

## Segurança

- **Autenticação por API Key**, Todas as requisições requerem API keys válidas
- **Row Level Security (RLS)**, Controle de acesso nativo do Postgres por linha
- **Verificação de JWT**, Tokens de Auth são JWTs assinados verificados em cada requisição
- **SSL/TLS**, Todas as conexões criptografadas em trânsito
- **SOC 2 Type II**, Supabase é compatível com SOC 2
- **Restrições de rede**, Lista opcional de permissões de IP em planos pagos

## Recursos relacionados

- [Conector Shopify](https://tajo.io/pt/docs/connectors/ecommerce/shopify)
- [Conector Stripe](https://tajo.io/pt/docs/connectors/ecommerce/stripe)
- [Conector Auth0](https://tajo.io/pt/docs/connectors/custom/auth0)
- [Documentação oficial do Supabase](https://supabase.com/docs)
- [Guia da API REST do Supabase](https://supabase.com/docs/guides/api)
- [Guia do Auth do Supabase](https://supabase.com/docs/guides/auth)
