---
title: "Connecteur SendGrid"
description: "Guide complet d'intégration SendGrid pour synchroniser contacts, emails transactionnels, campagnes marketing et événements d'engagement avec Brevo via Tajo."
url: https://tajo.io/fr/docs/connectors/marketing/sendgrid/
markdown: https://tajo.io/fr/docs/connectors/marketing/sendgrid.md
lang: fr-FR
robots: noindex
---

Demandez un accès anticipé

Indiquez votre prénom et votre adresse e-mail professionnelle. Nous vous enverrons un lien pour confirmer votre demande d’accès à Tajo.

# Connecteur SendGrid

Statut du connecteur: En cours En construction. Pas encore vérifié.

| Champ source | Champ de destination | Valeur d’exemple |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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** | Non |
| **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 :

1. Un compte SendGrid (Free, Essentials, Pro ou Premier)
2. Une clé API SendGrid avec les permissions requises
3. Un compte Brevo avec accès API
4. Un compte Tajo

## Authentification

### Authentification par clé API

SendGrid utilise l’authentification par bearer token.

```bash
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 Access
Suppressions: Read Access
Tracking: Read Access
```

Sé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

```yaml
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": 62
```

### Mappage 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

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

## Endpoints 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

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

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

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

### Migrer les contacts vers Brevo

```javascript
// Migration complète des contacts de SendGrid vers Brevo
await tajo.connectors.sync('sendgrid', {
  type: 'full',
  resources: ['contacts', 'suppressions'],
  options: {
    includeCustomFields: true,
    migrateListMemberships: true,
    migrateSuppressions: true
  }
});

// Vérifier le statut de migration
const 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

```javascript
// Gérer l'Event Webhook SendGrid
app.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 :

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

### Tester la connexion

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

## Bonnes pratiques

1. **Migrez les suppressions en premier** - Assurez-vous que les rebonds, blocages et désinscriptions sont dans Brevo avant d’envoyer
2. **Utilisez les téléversements de contacts en batch** - PUT jusqu’à 30 000 contacts par requête pour l’efficacité
3. **Vérifiez l’Event Webhook** - Activez les webhooks signés avec vérification ECDSA
4. **Mappez les champs personnalisés** - Créez les attributs Brevo correspondants avant la migration des contacts
5. **Synchronisez les données d’engagement** - Importez les stats historiques pour la segmentation dans Brevo
6. **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

## Ressources liées

- [Documentation API SendGrid](https://docs.sendgrid.com/api-reference)
- [Guide Event Webhook SendGrid](https://docs.sendgrid.com/for-developers/tracking-events/event)
- [Connecteur Brevo](https://tajo.io/fr/docs/connectors/marketing/brevo)
- [Connecteur Mailchimp](https://tajo.io/fr/docs/connectors/marketing/mailchimp)
- [Compétence de synchronisation client](https://tajo.io/fr/docs/skills/data-sync/customer-sync)
