---
title: "Conector SendGrid"
description: "Guia completo de integração do SendGrid para sincronizar contatos, e-mails transacionais, campanhas de marketing e eventos de engajamento com o Brevo via Tajo."
url: https://tajo.io/pt/docs/connectors/marketing/sendgrid/
markdown: https://tajo.io/pt/docs/connectors/marketing/sendgrid.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 SendGrid

Status do conector: Em andamento Em construção. Ainda não verificado.

| 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 sua conta SendGrid ao Brevo via Tajo para migração de infraestrutura de e-mail, sincronização de contatos, transferência de dados de campanha e analytics de engajamento unificados entre as duas plataformas.

## Visão geral

| Propriedade | Valor |
| --- | --- |
| **Plataforma** | SendGrid (Twilio) |
| **Categoria** | Marketing |
| **Complexidade de configuração** | Fácil |
| **Integração oficial** | Não |
| **Dados sincronizados** | Contatos, Campanhas, E-mail Transacional, Eventos |
| **URL base da API** | `https://api.sendgrid.com/v3` |

## Recursos

- **Migração de contatos** - Migre contatos do SendGrid Marketing para o Brevo com campos personalizados
- **Sincronização de e-mail transacional** - Rastreie eventos de e-mail transacional para relatórios unificados
- **Dados de campanha** - Sincronize dados de desempenho de campanhas Single Send e Automation
- **Webhooks de evento** - Encaminhe eventos de e-mail (entregue, aberto, clicado, bounce) para o Brevo
- **Sincronização de supressão** - Migre listas de bounce, block e unsubscribe para conformidade
- **Migração de templates** - Exporte Dynamic Transactional Templates para uso no Brevo
- **Verificação de remetente** - Sincronize identidades de remetente verificadas e autenticação de domínio
- **Sincronização de estatísticas** - Importe estatísticas históricas de engajamento para atributos do Brevo

## Pré-requisitos

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

1. Uma conta SendGrid (Free, Essentials, Pro ou Premier)
2. Uma chave API do SendGrid com as permissões necessárias
3. Uma conta Brevo com acesso à API
4. Uma conta Tajo

## Autenticação

### Autenticação por chave API

O SendGrid usa autenticação bearer token.

```bash
curl https://api.sendgrid.com/v3/marketing/contacts \
  -H "Authorization: Bearer SG.YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

Crie chaves API em SendGrid Settings > API Keys com níveis de permissão específicos:

- **Full Access** - Acesso total à API
- **Restricted Access** - Controle granular de permissões
- **Billing Access** - Operações apenas de cobrança

#### Permissões necessárias

```
Marketing: Full Access
  - Contacts (read)
  - Single Sends (read)
  - Automations (read)
Mail Send: Full Access
  - Mail Send (read)
Stats: Read Access
Suppressions: Read Access
Tracking: Read Access
```

Segurança da chave API

As chaves API do SendGrid são exibidas apenas uma vez na criação. Armazene-as com segurança. Se perdidas, você deve criar uma nova chave.

## Configuração

### Configuração básica

```yaml
connectors:
  sendgrid:
    enabled: true
    api_key: "${SENDGRID_API_KEY}"

    # Data sync options
    sync:
      contacts: true
      campaigns: true
      transactional: true
      suppressions: true
      statistics: true

    # List mapping to Brevo
    list_mapping:
      "All Contacts": 60
      "Newsletter": 61
      "Transactional": 62
```

### Mapeamento de campos

Mapeie campos de contato do SendGrid para atributos de contato do Brevo:

#### Default Mappings

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Endereço de e-mail do contato (identificador único) |
| `first_name` optional | string | Mapeia para o atributo FIRSTNAME |
| `last_name` optional | string | Mapeia para o atributo LASTNAME |
| `phone_number` optional | string | Mapeia para o atributo SMS |
| `city` optional | string | Cidade do contato |
| `country` optional | string | País do contato |
| `custom_fields` optional | object | Pares chave-valor de campos personalizados |
| `list_ids` optional | array | Associações de lista do SendGrid |

#### Mapeamento de campos personalizados

```yaml
field_mapping:
  # Standard fields
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  phone_number: SMS

  # Location fields
  city: CITY
  state_province_region: STATE
  country: COUNTRY
  postal_code: POSTAL_CODE

  # Engagement metrics
  avg_open_rate: AVG_OPEN_RATE
  avg_click_rate: AVG_CLICK_RATE

  # Custom fields
  custom_fields.company: COMPANY_NAME
  custom_fields.plan: PLAN_TYPE
```

## Endpoints da API

### Marketing Contacts

| Método | Endpoint | Descrição |
| --- | --- | --- |
| `PUT` | `/v3/marketing/contacts` | Adicionar ou atualizar contatos |
| `POST` | `/v3/marketing/contacts/search` | Pesquisar contatos |
| `GET` | `/v3/marketing/contacts/count` | Obter contagem de contatos |
| `POST` | `/v3/marketing/contacts/exports` | Exportar contatos |
| `DELETE` | `/v3/marketing/contacts` | Excluir contatos |
| `GET` | `/v3/marketing/lists` | Listar todas as listas de contato |

### E-mail transacional (Mail Send)

| Método | Endpoint | Descrição |
| --- | --- | --- |
| `POST` | `/v3/mail/send` | Enviar um e-mail |
| `GET` | `/v3/templates` | Listar Dynamic Templates |
| `GET` | `/v3/templates/{id}` | Obter detalhes do template |

### Campanhas (Single Sends)

| Método | Endpoint | Descrição |
| --- | --- | --- |
| `GET` | `/v3/marketing/singlesends` | Listar Single Sends |
| `GET` | `/v3/marketing/singlesends/{id}` | Obter detalhes de Single Send |
| `GET` | `/v3/marketing/automations` | Listar Automations |

### Estatísticas

| Método | Endpoint | Descrição |
| --- | --- | --- |
| `GET` | `/v3/stats` | Obter estatísticas globais de e-mail |
| `GET` | `/v3/categories/stats` | Obter estatísticas por categoria |
| `GET` | `/v3/marketing/stats/singlesends` | Obter estatísticas de Single Send |

### Supressões

| Método | Endpoint | Descrição |
| --- | --- | --- |
| `GET` | `/v3/suppression/bounces` | Listar e-mails com bounce |
| `GET` | `/v3/suppression/blocks` | Listar e-mails bloqueados |
| `GET` | `/v3/suppression/spam_reports` | Listar reclamações de spam |
| `GET` | `/v3/suppression/unsubscribes` | Listar descadastros globais |

## Eventos

### Eventos de e-mail (via Event Webhook)

| Evento | Gatilho | Caso de uso |
| --- | --- | --- |
| `processed` | E-mail aceito pelo SendGrid | Confirmação de envio |
| `delivered` | E-mail entregue ao destinatário | Rastreamento de entrega |
| `open` | E-mail aberto | Pontuação de engajamento |
| `click` | Link clicado | Rastreamento de interesse |
| `bounce` | E-mail retornou com bounce | Higiene de lista |
| `dropped` | E-mail suprimido | Revisão de conformidade |
| `deferred` | Entrega adiada | Monitoramento de retry |
| `spam_report` | Marcado como spam | Gestão de reputação |
| `unsubscribe` | Descadastrou via link | Sincronização de preferências |

## Exemplos de código

### Inicializar o conector

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect SendGrid
await tajo.connectors.connect('sendgrid', {
  apiKey: process.env.SENDGRID_API_KEY
});
```

### Migrar contatos para o Brevo

```javascript
// Full contact migration from SendGrid to Brevo
await tajo.connectors.sync('sendgrid', {
  type: 'full',
  resources: ['contacts', 'suppressions'],
  options: {
    includeCustomFields: true,
    migrateListMemberships: true,
    migrateSuppressions: true
  }
});

// Check migration status
const status = await tajo.connectors.status('sendgrid');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-01-15T10:30:00Z',
//   contactsMigrated: 45000,
//   suppressionsSynced: 3200,
//   listsMapped: 8
// }
```

### Encaminhar eventos de e-mail

```javascript
// Handle SendGrid Event Webhook
app.post('/webhooks/sendgrid', async (req, res) => {
  const signature = req.get('X-Twilio-Email-Event-Webhook-Signature');

  // Verify webhook signature (ECDSA)
  if (!verifySendGridSignature(req.body, signature)) {
    return res.status(401).send('Unauthorized');
  }

  // Process batch of events
  for (const event of req.body) {
    await tajo.connectors.handleWebhook('sendgrid', {
      type: event.event,
      email: event.email,
      timestamp: event.timestamp,
      payload: event
    });
  }

  res.status(200).send('OK');
});
```

## Limites de taxa

Limites de taxa da API do SendGrid:

| Endpoint | Limite | Detalhes |
| --- | --- | --- |
| Mail Send (`/v3/mail/send`) | Depende do plano | Free: 100/dia, Essentials: baseado no plano |
| Marketing Contacts PUT | 3 requisições/segundo | Lote de até 30.000 contatos |
| Marketing Contacts Search | 50 requisições/segundo | Por chave API |
| API geral | 1.000 requisições/segundo | Por chave API |
| Event Webhook | Entrega em lote | Até 1.000 eventos por POST |

Limites de Mail Send

Os limites de Mail Send dependem do seu plano SendGrid. Contas Free são limitadas a 100 e-mails/dia. Verifique os detalhes do seu plano para limites exatos de envio.

## Solução de problemas

### Problemas comuns

| Problema | Causa | Solução |
| --- | --- | --- |
| 401 Unauthorized | Chave API inválida | Verifique a chave API em SendGrid Settings |
| 403 Forbidden | Permissões de chave API insuficientes | Crie uma nova chave com os escopos necessários |
| Exportação de contatos pendente | Processamento de grande conjunto de dados | Faça polling do endpoint de status de exportação até a conclusão |
| Sincronização de supressão incompleta | Paginação necessária | Implemente paginação com o parâmetro offset |
| Event webhook não recebido | URL não verificada | Complete a verificação da URL do webhook no SendGrid |

### Modo de depuração

Ative o log detalhado:

```yaml
connectors:
  sendgrid:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Testar conexão

```bash
tajo connectors test sendgrid
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Lists accessible
# ✓ Statistics readable
# ✓ Suppressions accessible
```

## Melhores práticas

1. **Migre supressões primeiro** - Garanta que bounces, blocks e unsubscribes estejam no Brevo antes de enviar
2. **Use uploads em lote de contatos** - Envie PUT com até 30.000 contatos por requisição para eficiência
3. **Verifique o Event Webhook** - Habilite webhooks assinados com verificação ECDSA
4. **Mapeie campos personalizados** - Crie os atributos correspondentes no Brevo antes da migração de contatos
5. **Sincronize dados de engajamento** - Importe estatísticas históricas para segmentação no Brevo
6. **Trate exportações assíncronas** - Exportações de contato são assíncronas; faça polling para conclusão

## Segurança

- **Autenticação por chave API** - Bearer token com níveis de permissão granulares
- **Assinatura de Event Webhook** - Verificação de assinatura ECDSA para payloads de webhook
- **Criptografia TLS** - Toda comunicação com a API é criptografada via HTTPS
- **IP Access Management** - Restrinja acesso ao Dashboard e à API por IP
- **Autenticação de dois fatores** - 2FA disponível para acesso à conta

## Recursos relacionados

- [Documentação da API do SendGrid](https://docs.sendgrid.com/api-reference)
- [Guia do Event Webhook do SendGrid](https://docs.sendgrid.com/for-developers/tracking-events/event)
- [Conector Brevo](https://tajo.io/pt/docs/connectors/marketing/brevo)
- [Conector Mailchimp](https://tajo.io/pt/docs/connectors/marketing/mailchimp)
- [Skill de sincronização de clientes](https://tajo.io/pt/docs/skills/data-sync/customer-sync)
