---
title: "Konektor SendGrid"
description: "Kompletny przewodnik integracji SendGrid do synchronizacji kontaktów, e-maili transakcyjnych, kampanii marketingowych i zdarzeń zaangażowania z Brevo przez Tajo."
url: https://tajo.io/pl/docs/connectors/marketing/sendgrid/
markdown: https://tajo.io/pl/docs/connectors/marketing/sendgrid.md
lang: pl-PL
robots: noindex
---

Poproś o wcześniejszy dostęp

Podaj imię i firmowy adres e-mail. Wyślemy Ci link potwierdzający prośbę o dostęp do Tajo.

# Konektor SendGrid

Status konektora: W trakcie W budowie. Jeszcze niezweryfikowany.

| Pole źródłowe | Pole docelowe | Przykładowa wartość |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Połącz swoje konto SendGrid z Brevo przez Tajo dla migracji infrastruktury e-mailowej, synchronizacji kontaktów, transferu danych kampanii i ujednoliconej analityki zaangażowania na obu platformach.

## Przegląd

| Właściwość | Wartość |
| --- | --- |
| **Platforma** | SendGrid (Twilio) |
| **Kategoria** | Marketing |
| **Poziom konfiguracji** | Łatwy |
| **Integracja oficjalna** | Nie |
| **Synchronizowane dane** | Kontakty, Kampanie, E-mail transakcyjny, Zdarzenia |
| **Bazowy URL API** | `https://api.sendgrid.com/v3` |

## Funkcje

- **Migracja kontaktów** - Migruj kontakty marketingowe SendGrid do Brevo z niestandardowymi polami
- **Synchronizacja e-maili transakcyjnych** - Śledź zdarzenia e-maili transakcyjnych dla ujednoliconego raportowania
- **Dane kampanii** - Synchronizuj dane wydajności kampanii Single Send i Automation
- **Webhooki zdarzeń** - Przekazuj zdarzenia e-mailowe (dostarczone, otwarte, kliknięte, odrzucone) do Brevo
- **Synchronizacja suppressions** - Migruj listy odrzuceń, blokad i rezygnacji dla zgodności
- **Migracja szablonów** - Eksportuj szablony transakcyjne Dynamic dla użytku w Brevo
- **Weryfikacja nadawcy** - Synchronizuj zweryfikowane tożsamości nadawców i uwierzytelnianie domeny
- **Synchronizacja statystyk** - Importuj historyczne statystyki zaangażowania do atrybutów Brevo

## Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz:

1. Konto SendGrid (Free, Essentials, Pro lub Premier)
2. Klucz API SendGrid z wymaganymi uprawnieniami
3. Konto Brevo z dostępem do API
4. Konto Tajo

## Uwierzytelnianie

### Uwierzytelnianie kluczem API

SendGrid używa uwierzytelniania tokenem bearer.

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

Twórz klucze API w SendGrid Settings > API Keys z określonymi poziomami uprawnień:

- **Full Access** - Pełny dostęp do API
- **Restricted Access** - Szczegółowa kontrola uprawnień
- **Billing Access** - Operacje tylko rozliczeniowe

#### Wymagane uprawnienia

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

Bezpieczeństwo klucza API

Klucze API SendGrid są wyświetlane tylko raz podczas tworzenia. Przechowuj je bezpiecznie. W przypadku utraty musisz utworzyć nowy klucz.

## Konfiguracja

### Podstawowa konfiguracja

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

### Mapowanie pól

Mapuj pola kontaktów SendGrid na atrybuty kontaktów Brevo:

#### Domyślne mapowania

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Adres e-mail kontaktu (unikalny identyfikator) |
| `first_name` optional | string | Mapuje na atrybut FIRSTNAME |
| `last_name` optional | string | Mapuje na atrybut LASTNAME |
| `phone_number` optional | string | Mapuje na atrybut SMS |
| `city` optional | string | Miasto kontaktu |
| `country` optional | string | Kraj kontaktu |
| `custom_fields` optional | object | Niestandardowe pary klucz-wartość |
| `list_ids` optional | array | Przynależności do list SendGrid |

#### Mapowanie niestandardowych pól

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

## Endpointy API

### Kontakty marketingowe

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `PUT` | `/v3/marketing/contacts` | Dodaj lub zaktualizuj kontakty |
| `POST` | `/v3/marketing/contacts/search` | Wyszukaj kontakty |
| `GET` | `/v3/marketing/contacts/count` | Pobierz liczbę kontaktów |
| `POST` | `/v3/marketing/contacts/exports` | Eksportuj kontakty |
| `DELETE` | `/v3/marketing/contacts` | Usuń kontakty |
| `GET` | `/v3/marketing/lists` | Lista wszystkich list kontaktów |

### E-mail transakcyjny (Mail Send)

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `POST` | `/v3/mail/send` | Wyślij e-mail |
| `GET` | `/v3/templates` | Lista szablonów Dynamic |
| `GET` | `/v3/templates/{id}` | Szczegóły szablonu |

### Kampanie (Single Sends)

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/v3/marketing/singlesends` | Lista Single Sends |
| `GET` | `/v3/marketing/singlesends/{id}` | Szczegóły Single Send |
| `GET` | `/v3/marketing/automations` | Lista automatyzacji |

### Statystyki

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/v3/stats` | Globalne statystyki e-mailowe |
| `GET` | `/v3/categories/stats` | Statystyki kategorii |
| `GET` | `/v3/marketing/stats/singlesends` | Statystyki Single Send |

### Suppressions

| Metoda | Endpoint | Opis |
| --- | --- | --- |
| `GET` | `/v3/suppression/bounces` | Lista odrzuconych e-maili |
| `GET` | `/v3/suppression/blocks` | Lista zablokowanych e-maili |
| `GET` | `/v3/suppression/spam_reports` | Lista raportów spamu |
| `GET` | `/v3/suppression/unsubscribes` | Lista globalnych rezygnacji |

## Zdarzenia

### Zdarzenia e-mailowe (przez Event Webhook)

| Zdarzenie | Wyzwalacz | Przypadek użycia |
| --- | --- | --- |
| `processed` | E-mail zaakceptowany przez SendGrid | Potwierdzenie wysyłki |
| `delivered` | E-mail dostarczony do odbiorcy | Śledzenie dostarczenia |
| `open` | E-mail otwarty | Scoring zaangażowania |
| `click` | Link kliknięty | Śledzenie zainteresowania |
| `bounce` | E-mail odrzucony | Higiena listy |
| `dropped` | E-mail wyciszony | Przegląd zgodności |
| `deferred` | Dostarczenie odłożone | Monitorowanie ponownych prób |
| `spam_report` | Oznaczono jako spam | Zarządzanie reputacją |
| `unsubscribe` | Rezygnacja przez link | Synchronizacja preferencji |

## Przykłady kodu

### Inicjalizacja konektora

```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
});
```

### Migruj kontakty do 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
// }
```

### Przekazuj zdarzenia e-mailowe

```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');
});
```

## Limity API

Limity szybkości SendGrid API:

| Endpoint | Limit | Szczegóły |
| --- | --- | --- |
| Mail Send (`/v3/mail/send`) | Zależy od planu | Free: 100/dzień, Essentials: zależy od planu |
| Marketing Contacts PUT | 3 żądania/sekundę | Do 30 000 kontaktów w partii |
| Marketing Contacts Search | 50 żądań/sekundę | Na klucz API |
| General API | 1 000 żądań/sekundę | Na klucz API |
| Event Webhook | Dostarczanie wsadowe | Do 1 000 zdarzeń na POST |

Limity Mail Send

Limity Mail Send zależą od Twojego planu SendGrid. Konta bezpłatne są ograniczone do 100 e-maili/dzień. Sprawdź szczegóły planu dla dokładnych limitów wysyłania.

## Rozwiązywanie problemów

### Typowe problemy

| Problem | Przyczyna | Rozwiązanie |
| --- | --- | --- |
| 401 Unauthorized | Nieprawidłowy klucz API | Zweryfikuj klucz API w SendGrid Settings |
| 403 Forbidden | Niewystarczające uprawnienia klucza API | Utwórz nowy klucz z wymaganymi zakresami |
| Eksport kontaktów oczekujący | Przetwarzanie dużego zestawu danych | Odpytuj endpoint statusu eksportu do zakończenia |
| Niekompletna synchronizacja suppressions | Wymagana paginacja | Wdrożyj paginację z parametrem offset |
| Webhook nie odebrany | URL nie zweryfikowany | Ukończ weryfikację URL webhooka w SendGrid |

### Tryb debug

Włącz szczegółowe logowanie:

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

### Test połączenia

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

## Najlepsze praktyki

1. **Najpierw migruj suppressions** - Upewnij się, że odrzucenia, blokady i rezygnacje są w Brevo przed wysyłaniem
2. **Używaj wsadowych przesyłań kontaktów** - PUT do 30 000 kontaktów na żądanie dla wydajności
3. **Weryfikuj Event Webhook** - Włącz podpisane webhooki z weryfikacją ECDSA
4. **Mapuj pola niestandardowe** - Utwórz odpowiednie atrybuty Brevo przed migracją kontaktów
5. **Synchronizuj dane zaangażowania** - Importuj historyczne statystyki dla segmentacji w Brevo
6. **Obsługuj asynchroniczne eksporty** - Eksporty kontaktów są asynchroniczne; odpytuj pod kątem zakończenia

## Bezpieczeństwo

- **Uwierzytelnianie kluczem API** - Token bearer ze szczegółowymi poziomami uprawnień
- **Podpisywanie Event Webhook** - Weryfikacja podpisu ECDSA dla ładunków webhooków
- **Szyfrowanie TLS** - Cała komunikacja API szyfrowana przez HTTPS
- **IP Access Management** - Ogranicz dostęp do Dashboard i API według IP
- **Uwierzytelnianie dwuskładnikowe** - 2FA dostępne dla dostępu do konta

## Powiązane zasoby

- [Dokumentacja SendGrid API](https://docs.sendgrid.com/api-reference)
- [Przewodnik SendGrid Event Webhook](https://docs.sendgrid.com/for-developers/tracking-events/event)
- [Konektor Brevo](https://tajo.io/pl/docs/connectors/marketing/brevo)
- [Konektor Mailchimp](https://tajo.io/pl/docs/connectors/marketing/mailchimp)
- [Skill synchronizacji klientów](https://tajo.io/pl/docs/skills/data-sync/customer-sync)
