Conector SendGrid
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 | Sim |
| 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:
- Uma conta SendGrid (Free, Essentials, Pro ou Premier)
- Uma chave API do SendGrid com as permissões necessárias
- Uma conta Brevo com acesso à API
- Uma conta Tajo
Autenticação
Autenticação por chave API
O SendGrid usa autenticação bearer token.
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 AccessSuppressions: Read AccessTracking: Read AccessSeguranç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
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": 62Mapeamento 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
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_TYPEEndpoints 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
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect SendGridawait tajo.connectors.connect('sendgrid', { apiKey: process.env.SENDGRID_API_KEY});Migrar contatos para o Brevo
// Full contact migration from SendGrid to Brevoawait tajo.connectors.sync('sendgrid', { type: 'full', resources: ['contacts', 'suppressions'], options: { includeCustomFields: true, migrateListMemberships: true, migrateSuppressions: true }});
// Check migration statusconst 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
// Handle SendGrid Event Webhookapp.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:
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueTestar conexão
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleMelhores práticas
- Migre supressões primeiro - Garanta que bounces, blocks e unsubscribes estejam no Brevo antes de enviar
- Use uploads em lote de contatos - Envie PUT com até 30.000 contatos por requisição para eficiência
- Verifique o Event Webhook - Habilite webhooks assinados com verificação ECDSA
- Mapeie campos personalizados - Crie os atributos correspondentes no Brevo antes da migração de contatos
- Sincronize dados de engajamento - Importe estatísticas históricas para segmentação no Brevo
- 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