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

PropriedadeValor
PlataformaSendGrid (Twilio)
CategoriaMarketing
Complexidade de configuraçãoFácil
Integração oficialSim
Dados sincronizadosContatos, Campanhas, E-mail Transacional, Eventos
URL base da APIhttps://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.

Terminal window
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

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

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étodoEndpointDescrição
PUT/v3/marketing/contactsAdicionar ou atualizar contatos
POST/v3/marketing/contacts/searchPesquisar contatos
GET/v3/marketing/contacts/countObter contagem de contatos
POST/v3/marketing/contacts/exportsExportar contatos
DELETE/v3/marketing/contactsExcluir contatos
GET/v3/marketing/listsListar todas as listas de contato

E-mail transacional (Mail Send)

MétodoEndpointDescrição
POST/v3/mail/sendEnviar um e-mail
GET/v3/templatesListar Dynamic Templates
GET/v3/templates/{id}Obter detalhes do template

Campanhas (Single Sends)

MétodoEndpointDescrição
GET/v3/marketing/singlesendsListar Single Sends
GET/v3/marketing/singlesends/{id}Obter detalhes de Single Send
GET/v3/marketing/automationsListar Automations

Estatísticas

MétodoEndpointDescrição
GET/v3/statsObter estatísticas globais de e-mail
GET/v3/categories/statsObter estatísticas por categoria
GET/v3/marketing/stats/singlesendsObter estatísticas de Single Send

Supressões

MétodoEndpointDescrição
GET/v3/suppression/bouncesListar e-mails com bounce
GET/v3/suppression/blocksListar e-mails bloqueados
GET/v3/suppression/spam_reportsListar reclamações de spam
GET/v3/suppression/unsubscribesListar descadastros globais

Eventos

Eventos de e-mail (via Event Webhook)

EventoGatilhoCaso de uso
processedE-mail aceito pelo SendGridConfirmação de envio
deliveredE-mail entregue ao destinatárioRastreamento de entrega
openE-mail abertoPontuação de engajamento
clickLink clicadoRastreamento de interesse
bounceE-mail retornou com bounceHigiene de lista
droppedE-mail suprimidoRevisão de conformidade
deferredEntrega adiadaMonitoramento de retry
spam_reportMarcado como spamGestão de reputação
unsubscribeDescadastrou via linkSincronizaçã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 SendGrid
await tajo.connectors.connect('sendgrid', {
apiKey: process.env.SENDGRID_API_KEY
});

Migrar contatos para o Brevo

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

// 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:

EndpointLimiteDetalhes
Mail Send (/v3/mail/send)Depende do planoFree: 100/dia, Essentials: baseado no plano
Marketing Contacts PUT3 requisições/segundoLote de até 30.000 contatos
Marketing Contacts Search50 requisições/segundoPor chave API
API geral1.000 requisições/segundoPor chave API
Event WebhookEntrega em loteAté 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

ProblemaCausaSolução
401 UnauthorizedChave API inválidaVerifique a chave API em SendGrid Settings
403 ForbiddenPermissões de chave API insuficientesCrie uma nova chave com os escopos necessários
Exportação de contatos pendenteProcessamento de grande conjunto de dadosFaça polling do endpoint de status de exportação até a conclusão
Sincronização de supressão incompletaPaginação necessáriaImplemente paginação com o parâmetro offset
Event webhook não recebidoURL não verificadaComplete 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: true

Testar conexão

Terminal window
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

Subscribe to updates

developer-docs

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

auto-detect
Assistente AI

Olá! Pergunte-me qualquer coisa sobre a documentação.