---
title: "SendGrid Connector"
description: "Komplet guide til SendGrid-integration til synkronisering af kontakter, transaktionelle e-mails, marketingkampagner og engagementhændelser med Brevo via Tajo."
url: https://tajo.io/dk/docs/connectors/marketing/sendgrid/
markdown: https://tajo.io/dk/docs/connectors/marketing/sendgrid.md
lang: da-DK
robots: noindex
---

Bed om tidlig adgang til Tajo

Indtast dit fornavn og din arbejds-e-mailadresse. Vi sender dig et link til at bekræfte din anmodning om adgang til Tajo.

# SendGrid Connector

Connectorstatus: Under udvikling Under opbygning. Endnu ikke verificeret.

| Kildefelt | Destinationsfelt | Eksempelværdi |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Forbind din SendGrid-konto til Brevo via Tajo for migrering af e-mailinfrastruktur, kontaktsynkronisering, overførsel af kampagnedata og forenet engagementanalyse på tværs af begge platforme.

## Oversigt

| Egenskab | Værdi |
| --- | --- |
| **Platform** | SendGrid (Twilio) |
| **Kategori** | Marketing |
| **Opsætningskompleksitet** | Let |
| **Officiel integration** | Nej |
| **Synkroniserede data** | Kontakter, kampagner, transaktionelle e-mails, hændelser |
| **API-base-URL** | `https://api.sendgrid.com/v3` |

## Funktioner

- **Kontaktmigrering** - Migrér SendGrid Marketing-kontakter til Brevo med brugerdefinerede felter
- **Synkronisering af transaktionelle e-mails** - Spor transaktionelle e-mailhændelser til forenet rapportering
- **Kampagnedata** - Synkronisér Single Send- og Automation-kampagneperformance-data
- **Hændelses-webhooks** - Videresend e-mailhændelser (leveret, åbnet, klikket, afvist) til Brevo
- **Suppression-synkronisering** - Migrér bounce-, block- og unsubscribe-lister til compliance
- **Skabelonmigrering** - Eksportér Dynamic Transactional Templates til brug i Brevo
- **Afsenderverifikation** - Synkronisér verificerede afsenderidentiteter og domæneautentifikation
- **Synkronisering af statistik** - Importér historiske engagementstatistikker til Brevo-attributter

## Forudsætninger

Før du begynder, skal du sikre dig, at du har:

1. En SendGrid-konto (Free, Essentials, Pro eller Premier)
2. En SendGrid API-nøgle med de påkrævede rettigheder
3. En Brevo-konto med API-adgang
4. En Tajo-konto

## Autentifikation

### API-nøgle-autentifikation

SendGrid bruger bearer-token-autentifikation.

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

Opret API-nøgler i SendGrid Settings > API Keys med specifikke rettighedsniveauer:

- **Full Access** - Komplet API-adgang
- **Restricted Access** - Granulær rettighedskontrol
- **Billing Access** - Kun faktureringsoperationer

#### Påkrævede rettigheder

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

Sikkerhed for API-nøgler

SendGrid API-nøgler vises kun én gang ved oprettelsen. Opbevar dem sikkert. Hvis den mistes, skal du oprette en ny nøgle.

## Konfiguration

### Grundlæggende opsætning

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

### Feltmapping

Knyt SendGrid-kontaktfelter til Brevo-kontaktattributter:

#### Standardmappings

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Kontaktens e-mailadresse (unik identifikator) |
| `first_name` optional | string | Mapper til FIRSTNAME-attribut |
| `last_name` optional | string | Mapper til LASTNAME-attribut |
| `phone_number` optional | string | Mapper til SMS-attribut |
| `city` optional | string | Kontaktens by |
| `country` optional | string | Kontaktens land |
| `custom_fields` optional | object | Nøgleværdipar for brugerdefinerede felter |
| `list_ids` optional | array | SendGrid-listemedlemskaber |

#### Brugerdefineret feltmapping

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

## API-endpoints

### Marketing-kontakter

| Metode | Endpoint | Beskrivelse |
| --- | --- | --- |
| `PUT` | `/v3/marketing/contacts` | Tilføj eller opdatér kontakter |
| `POST` | `/v3/marketing/contacts/search` | Søg kontakter |
| `GET` | `/v3/marketing/contacts/count` | Hent kontakt-antal |
| `POST` | `/v3/marketing/contacts/exports` | Eksportér kontakter |
| `DELETE` | `/v3/marketing/contacts` | Slet kontakter |
| `GET` | `/v3/marketing/lists` | Vis alle kontaktlister |

### Transaktionel e-mail (Mail Send)

| Metode | Endpoint | Beskrivelse |
| --- | --- | --- |
| `POST` | `/v3/mail/send` | Send en e-mail |
| `GET` | `/v3/templates` | Vis Dynamic Templates |
| `GET` | `/v3/templates/{id}` | Hent skabelondetaljer |

### Kampagner (Single Sends)

| Metode | Endpoint | Beskrivelse |
| --- | --- | --- |
| `GET` | `/v3/marketing/singlesends` | Vis Single Sends |
| `GET` | `/v3/marketing/singlesends/{id}` | Hent Single Send-detaljer |
| `GET` | `/v3/marketing/automations` | Vis Automations |

### Statistik

| Metode | Endpoint | Beskrivelse |
| --- | --- | --- |
| `GET` | `/v3/stats` | Hent global e-mailstatistik |
| `GET` | `/v3/categories/stats` | Hent kategoristatistik |
| `GET` | `/v3/marketing/stats/singlesends` | Hent Single Send-statistik |

### Suppressions

| Metode | Endpoint | Beskrivelse |
| --- | --- | --- |
| `GET` | `/v3/suppression/bounces` | Vis afviste e-mails |
| `GET` | `/v3/suppression/blocks` | Vis blokerede e-mails |
| `GET` | `/v3/suppression/spam_reports` | Vis spamrapporter |
| `GET` | `/v3/suppression/unsubscribes` | Vis globale afmeldinger |

## Hændelser

### E-mailhændelser (via Event Webhook)

| Hændelse | Trigger | Anvendelse |
| --- | --- | --- |
| `processed` | E-mail accepteret af SendGrid | Afsendelsesbekræftelse |
| `delivered` | E-mail leveret til modtager | Leveringssporing |
| `open` | E-mail åbnet | Engagementscoring |
| `click` | Link klikket | Interessesporing |
| `bounce` | E-mail afvist | Listehygiejne |
| `dropped` | E-mail undertrykt | Compliance-gennemgang |
| `deferred` | Levering udskudt | Retry-overvågning |
| `spam_report` | Markeret som spam | Omdømmehåndtering |
| `unsubscribe` | Afmeldt via link | Præferencesynkronisering |

## Kodeeksempler

### Initialisér konnektor

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

### Migrér kontakter til 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
// }
```

### Videresend e-mailhændelser

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

## Ratebegrænsninger

SendGrid API-ratebegrænsninger:

| Endpoint | Grænse | Detaljer |
| --- | --- | --- |
| Mail Send (`/v3/mail/send`) | Afhænger af plan | Free: 100/dag, Essentials: baseret på plan |
| Marketing Contacts PUT | 3 forespørgsler/sekund | Batch op til 30.000 kontakter |
| Marketing Contacts Search | 50 forespørgsler/sekund | Per API-nøgle |
| Generel API | 1.000 forespørgsler/sekund | Per API-nøgle |
| Event Webhook | Batch-levering | Op til 1.000 hændelser per POST |

Mail Send-grænser

Mail Send-grænser afhænger af din SendGrid-plan. Gratis konti er begrænset til 100 e-mails/dag. Tjek dine plandetaljer for præcise afsendelsesgrænser.

## Fejlfinding

### Almindelige problemer

| Problem | Årsag | Løsning |
| --- | --- | --- |
| 401 Unauthorized | Ugyldig API-nøgle | Verificér API-nøgle i SendGrid Settings |
| 403 Forbidden | Utilstrækkelige API-nøglerettigheder | Opret ny nøgle med de påkrævede scopes |
| Kontakteksport afventer | Stort datasæt behandles | Poll eksportstatus-endpoint, indtil den er fuldført |
| Suppression-synkronisering ufuldstændig | Paginering påkrævet | Implementér paginering med offset-parameter |
| Event-webhook ikke modtaget | URL ikke verificeret | Gennemfør webhook-URL-verifikation i SendGrid |

### Fejlfindingstilstand

Aktivér udførlig logning:

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

### Test forbindelse

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

## Best practices

1. **Migrér suppressions først** - Sørg for, at bounces, blocks og unsubscribes er i Brevo, før du sender
2. **Brug batch-kontaktuploads** - PUT op til 30.000 kontakter per forespørgsel for effektivitet
3. **Verificér Event Webhook** - Aktivér signerede webhooks med ECDSA-verifikation
4. **Map brugerdefinerede felter** - Opret tilsvarende Brevo-attributter før kontaktmigrering
5. **Synkronisér engagementdata** - Importér historisk statistik til segmentering i Brevo
6. **Håndtér asynkrone eksporter** - Kontakteksporter er asynkrone; poll for fuldførelse

## Sikkerhed

- **API-nøgle-autentifikation** - Bearer-token med granulære rettighedsniveauer
- **Event Webhook-signering** - ECDSA-signaturverifikation for webhook-payloads
- **TLS-kryptering** - Al API-kommunikation krypteret via HTTPS
- **IP-adgangsstyring** - Begræns Dashboard- og API-adgang efter IP
- **Tofaktor-autentifikation** - 2FA tilgængelig til kontoadgang

## Relaterede ressourcer

- [SendGrid API-dokumentation](https://docs.sendgrid.com/api-reference)
- [SendGrid Event Webhook-guide](https://docs.sendgrid.com/for-developers/tracking-events/event)
- [Brevo Connector](https://tajo.io/dk/docs/connectors/marketing/brevo)
- [Mailchimp Connector](https://tajo.io/dk/docs/connectors/marketing/mailchimp)
- [Customer Sync Skill](https://tajo.io/dk/docs/skills/data-sync/customer-sync)
