Connecteur SendGrid
Connectez votre compte SendGrid à Brevo via Tajo pour la migration d’infrastructure email, la synchronisation des contacts, le transfert de données de campagnes et des analytiques d’engagement unifiées sur les deux plateformes.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | SendGrid (Twilio) |
| Catégorie | Marketing |
| Complexité de configuration | Facile |
| Intégration officielle | Oui |
| Données synchronisées | Contacts, Campagnes, Email Transactionnel, Événements |
| URL de base API | https://api.sendgrid.com/v3 |
Fonctionnalités
- Migration de contacts - Migration des contacts SendGrid Marketing vers Brevo avec les champs personnalisés
- Synchronisation email transactionnel - Suivi des événements d’emails transactionnels pour un reporting unifié
- Données de campagnes - Synchronisation des données de performance des campagnes Single Send et Automation
- Webhooks d’événements - Transfert des événements email (delivered, opened, clicked, bounced) vers Brevo
- Synchronisation des suppressions - Migration des listes de rebonds, blocages et désinscriptions pour la conformité
- Migration de templates - Export des Dynamic Transactional Templates pour utilisation dans Brevo
- Vérification d’expéditeur - Synchronisation des identités d’expéditeur vérifiées et de l’authentification de domaine
- Synchronisation des statistiques - Import des statistiques d’engagement historiques vers les attributs Brevo
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un compte SendGrid (Free, Essentials, Pro ou Premier)
- Une clé API SendGrid avec les permissions requises
- Un compte Brevo avec accès API
- Un compte Tajo
Authentification
Authentification par clé API
SendGrid utilise l’authentification par bearer token.
curl https://api.sendgrid.com/v3/marketing/contacts \ -H "Authorization: Bearer SG.YOUR_API_KEY" \ -H "Content-Type: application/json"Créez les clés API dans SendGrid Settings > API Keys avec des niveaux de permission spécifiques :
- Full Access - Accès API complet
- Restricted Access - Contrôle de permissions granulaire
- Billing Access - Opérations de facturation uniquement
Permissions requises
Marketing: Full Access - Contacts (read) - Single Sends (read) - Automations (read)Mail Send: Full Access - Mail Send (read)Stats: Read AccessSuppressions: Read AccessTracking: Read AccessSécurité des clés API
Les clés API SendGrid ne sont affichées qu’une seule fois à la création. Stockez-les de manière sécurisée. Si perdues, vous devrez créer une nouvelle clé.
Configuration
Configuration de base
connectors: sendgrid: enabled: true api_key: "${SENDGRID_API_KEY}"
# Options de synchronisation des données sync: contacts: true campaigns: true transactional: true suppressions: true statistics: true
# Mappage de listes vers Brevo list_mapping: "All Contacts": 60 "Newsletter": 61 "Transactional": 62Mappage de champs
Mappez les champs de contact SendGrid aux attributs de contact Brevo :
Mappages par défaut
| Parameter | Type | Description |
|---|---|---|
email required | string | Adresse email du contact (identifiant unique) |
first_name optional | string | Mappé vers l'attribut FIRSTNAME |
last_name optional | string | Mappé vers l'attribut LASTNAME |
phone_number optional | string | Mappé vers l'attribut SMS |
city optional | string | Ville du contact |
country optional | string | Pays du contact |
custom_fields optional | object | Paires clé-valeur des champs personnalisés |
list_ids optional | array | Appartenances aux listes SendGrid |
Mappage de champs personnalisés
field_mapping: # Champs standards email: email first_name: FIRSTNAME last_name: LASTNAME phone_number: SMS
# Champs de localisation city: CITY state_province_region: STATE country: COUNTRY postal_code: POSTAL_CODE
# Métriques d'engagement avg_open_rate: AVG_OPEN_RATE avg_click_rate: AVG_CLICK_RATE
# Champs personnalisés custom_fields.company: COMPANY_NAME custom_fields.plan: PLAN_TYPEEndpoints API
Marketing Contacts
| Méthode | Endpoint | Description |
|---|---|---|
PUT | /v3/marketing/contacts | Ajouter ou mettre à jour des contacts |
POST | /v3/marketing/contacts/search | Rechercher des contacts |
GET | /v3/marketing/contacts/count | Obtenir le nombre de contacts |
POST | /v3/marketing/contacts/exports | Exporter les contacts |
DELETE | /v3/marketing/contacts | Supprimer des contacts |
GET | /v3/marketing/lists | Lister toutes les listes de contacts |
Email transactionnel (Mail Send)
| Méthode | Endpoint | Description |
|---|---|---|
POST | /v3/mail/send | Envoyer un email |
GET | /v3/templates | Lister les Dynamic Templates |
GET | /v3/templates/{id} | Obtenir les détails d’un template |
Campagnes (Single Sends)
| Méthode | Endpoint | Description |
|---|---|---|
GET | /v3/marketing/singlesends | Lister les Single Sends |
GET | /v3/marketing/singlesends/{id} | Obtenir les détails d’un Single Send |
GET | /v3/marketing/automations | Lister les Automations |
Statistiques
| Méthode | Endpoint | Description |
|---|---|---|
GET | /v3/stats | Obtenir les statistiques email globales |
GET | /v3/categories/stats | Obtenir les statistiques par catégorie |
GET | /v3/marketing/stats/singlesends | Obtenir les stats des Single Sends |
Suppressions
| Méthode | Endpoint | Description |
|---|---|---|
GET | /v3/suppression/bounces | Lister les emails rejetés |
GET | /v3/suppression/blocks | Lister les emails bloqués |
GET | /v3/suppression/spam_reports | Lister les signalements spam |
GET | /v3/suppression/unsubscribes | Lister les désinscriptions globales |
Événements
Événements email (via Event Webhook)
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
processed | Email accepté par SendGrid | Confirmation d’envoi |
delivered | Email livré au destinataire | Suivi de livraison |
open | Email ouvert | Scoring d’engagement |
click | Lien cliqué | Suivi d’intérêt |
bounce | Email rejeté | Hygiène de liste |
dropped | Email supprimé | Revue de conformité |
deferred | Livraison différée | Surveillance de retry |
spam_report | Marqué comme spam | Gestion de réputation |
unsubscribe | Désinscription via lien | Synchronisation de préférences |
Exemples de code
Initialiser le connecteur
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connecter SendGridawait tajo.connectors.connect('sendgrid', { apiKey: process.env.SENDGRID_API_KEY});Migrer les contacts vers Brevo
// Migration complète des contacts de SendGrid vers Brevoawait tajo.connectors.sync('sendgrid', { type: 'full', resources: ['contacts', 'suppressions'], options: { includeCustomFields: true, migrateListMemberships: true, migrateSuppressions: true }});
// Vérifier le statut de migrationconst status = await tajo.connectors.status('sendgrid');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsMigrated: 45000,// suppressionsSynced: 3200,// listsMapped: 8// }Transférer les événements email
// Gérer l'Event Webhook SendGridapp.post('/webhooks/sendgrid', async (req, res) => { const signature = req.get('X-Twilio-Email-Event-Webhook-Signature');
// Vérifier la signature du webhook (ECDSA) if (!verifySendGridSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
// Traiter le batch d'événements 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 taux
Limites de taux de l’API SendGrid :
| Endpoint | Limite | Détails |
|---|---|---|
Mail Send (/v3/mail/send) | Dépend du plan | Free : 100/jour, Essentials : selon plan |
| Marketing Contacts PUT | 3 requêtes/seconde | Batch jusqu’à 30 000 contacts |
| Marketing Contacts Search | 50 requêtes/seconde | Par clé API |
| API générale | 1 000 requêtes/seconde | Par clé API |
| Event Webhook | Livraison batch | Jusqu’à 1 000 événements par POST |
Limites Mail Send
Les limites Mail Send dépendent de votre plan SendGrid. Les comptes Free sont limités à 100 emails/jour. Consultez les détails de votre plan pour les limites d’envoi exactes.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Clé API invalide | Vérifiez la clé API dans SendGrid Settings |
| 403 Forbidden | Permissions de clé API insuffisantes | Créez une nouvelle clé avec les périmètres requis |
| Export de contacts en attente | Traitement de gros dataset | Interrogez l’endpoint de statut d’export jusqu’à complétion |
| Synchronisation des suppressions incomplète | Pagination requise | Implémentez la pagination avec le paramètre offset |
| Event webhook non reçu | URL non vérifiée | Complétez la vérification d’URL de webhook dans SendGrid |
Mode debug
Activer la journalisation détaillée :
connectors: sendgrid: debug: true log_level: verbose log_webhooks: trueTester la connexion
tajo connectors test sendgrid# ✓ API connection successful# ✓ Contacts readable# ✓ Lists accessible# ✓ Statistics readable# ✓ Suppressions accessibleBonnes pratiques
- Migrez les suppressions en premier - Assurez-vous que les rebonds, blocages et désinscriptions sont dans Brevo avant d’envoyer
- Utilisez les téléversements de contacts en batch - PUT jusqu’à 30 000 contacts par requête pour l’efficacité
- Vérifiez l’Event Webhook - Activez les webhooks signés avec vérification ECDSA
- Mappez les champs personnalisés - Créez les attributs Brevo correspondants avant la migration des contacts
- Synchronisez les données d’engagement - Importez les stats historiques pour la segmentation dans Brevo
- Gérez les exports asynchrones - Les exports de contacts sont asynchrones ; interrogez jusqu’à complétion
Sécurité
- Authentification par clé API - Bearer token avec niveaux de permission granulaires
- Signature de l’Event Webhook - Vérification de signature ECDSA pour les payloads de webhook
- Chiffrement TLS - Toutes les communications API chiffrées via HTTPS
- Gestion d’accès par IP - Restriction de l’accès au Dashboard et à l’API par IP
- Authentification à deux facteurs - 2FA disponible pour l’accès au compte