---
title: "Migration von SparkPost"
description: "Migrieren Sie Ihre SparkPost-E-Mail-Integration zu Bird mit Zuordnungen für Transmissions, SMTP, Templates, Unterdrückungen und Webhooks sowie einer Cutover-Checkliste."
canonical: "https://bird.com/de-de/dokumentation/guides/email/migrate/sparkpost"
---

# Migration von SparkPost

Nutzen Sie diese Anleitung, um ausgehende E-Mails von SparkPost zu Bird zu migrieren. Folgen Sie der [Haupt-Migrations-Checkliste](/docs/guides/email/migrate) und verwenden Sie die folgenden Zuordnungen für Ihre HTTP- oder SMTP-Integration.

## Bevor Sie beginnen

Sie benötigen Zugriff auf Ihr SparkPost-Konto und Ihre Subaccounts, das DNS der Sende-Domain, die Anwendungskonfiguration und den Webhook-Handler. Richten Sie einen [Bird-Workspace](/docs/guides/workspaces) und einen [API-Schlüssel](/docs/api/authentication) in Ihrer gewählten [Region](/docs/api/regions) ein. Der Opt-out-Import erfordert außerdem `preferences`-Schreibberechtigung auf dem Schlüssel.

Inventarisieren Sie Absender, Templates, Snippets, Empfängerlisten, Unterdrückungen, geplante Sendungen, IP-Pools und Webhooks. Berücksichtigen Sie SDKs, Framework-Mail-Adapter, Hintergrundjobs und eingehende E-Mail-Flows. Notieren Sie neue Ressourcen-IDs, sobald Sie sie erstellen; SparkPost-IDs und -Anmeldedaten funktionieren in Bird nicht. Verwenden Sie die [Bird-SDKs](/docs/sdks) als Ersatz für einen SparkPost-Client, und prüfen Sie dessen Retries, Timeouts und Paginierung.

Wenn Sie [SparkPost-Subaccounts](https://developers.sparkpost.com/api/subaccounts/) verwenden, [kontaktieren Sie uns](/help/support), bevor Sie ein Workspace-Layout wählen. Bestätigen Sie die verfügbaren Workspaces, Berechtigungen, gemeinsam genutzten Ressourcen und den Workflow zur Mandantenbereitstellung. Ein Workspace-API-Schlüssel kann Mandanten nicht per `X-MSYS-SUBACCOUNT` wechseln. Bewahren Sie gesperrte Mandanten und mandantenspezifische Sendebeschränkungen während der Migration.

Bestätigen Sie, dass Ihre Bird-[Plankontingente](/docs/guides/billing-and-usage) und [Anfragerate-Begrenzungen](/docs/guides/rate-limits) Ihr Sendevolumen, Ihre Ressourcenanzahl und Ihren Spitzenverkehr abdecken.

Registrieren Sie Ihre [Sende-Domains](/docs/guides/email/sending-domains) frühzeitig. Bewahren Sie funktionierendes SparkPost-DNS und wählen Sie bei Bedarf separate Return-Path- und Tracking-Hostnamen. Wenn die Registrierung einen Eigentümerkonflikt meldet, [kontaktieren Sie den Support](/help/support), bevor Sie eine aktive Domain entfernen.

**Dedizierte IPs:** [Kontaktieren Sie uns](/help/support) oder Ihr Account-Team vor der Migration. Bitten Sie uns zu bestätigen, ob Ihre bestehenden SparkPost-IPs zu Bird übertragen werden können, und stimmen Sie Pool-Einrichtung, Zeitplan und eventuell nötiges Warmup ab. Geben Sie Ihre Kontoregion, IP-Adressen, Pool-Namen und Ihr Sendevolumen an. Halten Sie Ihre aktuellen IPs aktiv, bis der Migrationsplan bestätigt ist.

Bestätigen Sie die [Pool-Auswahl](/docs/guides/email/dedicated-ips-and-pools#select-a-pool-at-send-time) und die IP- oder Hostname-Allowlists der Empfänger vor dem Cutover. Der Kauf einer IP ändert nicht den Standard-Pool. Neu erworbene IPs können während des [Warmups](/docs/guides/email/ip-warmup) Überlauf über die gemeinsame Infrastruktur senden, was relevant ist, wenn Empfänger E-Mails nur von bestimmten IPs akzeptieren.

## Übergeben Sie dies Ihrem Agenten

Fügen Sie dies in Ihren Coding-Agenten in Ihrem Anwendungs-Repository ein:

```text
Help me migrate my SparkPost email integration to Bird.
1. Use an existing Bird MCP connection or signed-in CLI. Otherwise follow https://bird.com/docs/ai/set-up-your-agent.md. Append .md to Bird docs URLs to read Markdown.
2. Read https://bird.com/docs/guides/email/migrate/sparkpost.md and https://bird.com/docs/guides/email/migrate.md. Make a read-only inventory of my SparkPost call sites, SDKs, resource IDs, configured URLs, sending domains, and scheduled jobs before editing. Never print API keys.
3. Propose workspace and region mappings. If subaccounts, dedicated IPs, or domain ownership conflicts need a migration plan, use the available Bird tools to open a human email support ticket and return its ID. For CLI usage, read https://bird.com/docs/cli/reference/support-tickets-create.md. Wait for the agreed plan before moving those resources.
4. Follow https://bird.com/docs/guides/email/sending-domains.md; preserve working DNS and show me proposed records. Ask before DNS changes or paid provisioning.
5. Port sending, templates, and webhooks using this guide. Preserve recipient privacy, personalization, and categories. Export suppressions with scope and type; show me the handling before importing or changing preferences.
6. Test using https://bird.com/docs/guides/email/testing-sandbox.md. Show me results and unresolved differences, including tracking, signatures, and correlation.
7. Ask for explicit approval before production cutover. Keep a rollback path; get separate approval before retiring SparkPost resources or credentials.
```

## Sende-Aufruf zuordnen

Ersetzen Sie `POST /api/v1/transmissions` durch [`POST /v1/email/messages`](/docs/api/reference/create-email-message) oder [`POST /v1/email/batches`](/docs/api/reference/create-email-message-batch) für unabhängige Nachrichten. Die [SparkPost-API-Übersicht](https://developers.sparkpost.com/api/) listet die regionalen Hosts und die Authentifizierung auf. Bird verwendet `https://us1.platform.bird.com` oder `https://eu1.platform.bird.com`, passend zur Region Ihres API-Schlüssels, mit `Authorization: Bearer $BIRD_API_KEY`.

Eine SparkPost-Transmission kann separate, personalisierte E-Mails für ihre Empfänger erzeugen. Bird teilt Inhalt und Parameter über die Empfänger eines einzelnen Versands. Verwenden Sie eine separate Nachricht pro Personalisierung, optional gruppiert in einem [Batch](/docs/guides/email/sending-bulk). Reine To-Versendungen bleiben einzeln adressiert; prüfen Sie die sichtbaren Header, wenn Sie Cc-/Bcc-Kopien hinzufügen.

Ordnen Sie die [SparkPost-Transmission-Felder](https://developers.sparkpost.com/api/transmissions/) zu:

| SparkPost                                         | Bird-Migration                                                                                                                                                                   |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `content.from`, `subject`, `html`, `text`         | Felder auf oberster Ebene mit denselben Namen                                                                                                                                    |
| `content.reply_to`                                | `reply_to`-Array                                                                                                                                                                 |
| `recipients[].address`                            | Eine Nachricht pro personalisiertem Empfänger                                                                                                                                    |
| `address.header_to`, `content.headers.CC`         | `to`-/`cc`-/`bcc`-Gruppen neu aufbauen; siehe Adressierungshinweis unten                                                                                                         |
| `content.headers`                                 | `headers`; reservierte Namen im Sendleitfaden prüfen                                                                                                                             |
| `substitution_data`                               | Inline-`parameters` oder gespeichertes `template.parameters`; Überschreibungen auflösen und Birds [kleineres Parameterlimit](/docs/guides/email/sending-email#content) einhalten |
| `content.template_id`                             | Neues Bird-Template `id` oder `slug`; Inhalt zuerst konvertieren und veröffentlichen                                                                                             |
| Transmission-/Empfänger-`metadata`                | In `metadata` zusammenführen, wobei Empfängerschlüssel Vorrang haben; Birds [kleineres Metadatenlimit](/docs/guides/email/sending-email#tags-vs-metadata) einhalten              |
| Empfänger `tags`, `campaign_id`                   | `{ name, value }`-Tags wählen; es wird kein Broadcast erstellt                                                                                                                   |
| `options.transactional`                           | Explizit `category`: `transactional` oder `marketing`                                                                                                                            |
| `options.open_tracking`, `options.click_tracking` | `track_opens`, `track_clicks`; Überschreibungen zuerst auflösen                                                                                                                  |
| `options.start_time`                              | `scheduled_at`; Template-Inhalt wird bei Annahme fixiert; siehe Hinweise zur Planung unten                                                                                       |
| `options.ip_pool`                                 | Bird `ip_pool_id`; kontaktieren Sie uns vor dem Umzug dedizierter IPs                                                                                                            |
| `content.attachments`                             | `type` → `content_type` (Basis-MIME-Typ), `name` → `filename`, `data` → Base64 `content`; Dateien validieren, die auf MIME-Parameter angewiesen sind                             |
| `content.inline_images`                           | Gleiches Datei-Mapping, plus `name` → `content_id`; siehe unten                                                                                                                  |
| `return_path`, `tracking_domain`                  | Bird-Domain-Konfiguration; siehe unten                                                                                                                                           |
| `content.ab_test_id`                              | Wählen Sie Varianten und verfolgen Sie Ergebnisse in Ihrer Anwendung; kein direktes Sendefeld-Äquivalent                                                                         |

Für To/Cc/Bcc-Kopien einer E-Mail erstellen Sie die Empfängergruppe einmalig neu. SparkPosts [angezeigte Adressen](https://developers.sparkpost.com/api/recipient-lists/#header-address-object) können von den Zustellempfängern abweichen; Birds `to`, `cc` und `bcc` fügen jeweils Zustellempfänger hinzu. Das Kopieren eines SparkPost-`CC`-Headers in das `cc` jeder expandierten Nachricht kann doppelte Kopien versenden. Prüfen Sie sichtbare Header und Empfängeranzahlen vor der Umstellung.

Prüfen Sie [Sendefeld-Limits](/docs/guides/email/sending-email), [Zeitplanung](/docs/guides/email/scheduled-sending) und [Anhangregeln](/docs/guides/email/attachments). Aktualisieren Sie Inline-Bild-IDs und zugehörige `cid:`-Referenzen gemäß den Regeln von Bird. Konfigurieren Sie den [Return-Path](/docs/guides/email/bounce-domain) und die [Tracking-Domain](/docs/guides/email/tracking-domain) auf der Domain.

Die HTTP-Sendefelder von Bird enthalten nicht SparkPosts `content.email_rfc822`, `content.amp_html` oder `options.inline_css`. Erstellen Sie Rohnachrichten mit den unterstützten Feldern neu, stellen Sie HTML/Text-Fallbacks für AMP bereit und inlinen Sie CSS vor dem Einreichen von HTML. SMTP parst und erstellt unterstützte Nachrichtenteile neu; validieren Sie die empfangene MIME, wenn Sie von deren exakter Struktur abhängen. MIME-Parameter von Anhängen wie Kalender-`method` oder Text-`charset` bleiben nicht erhalten.

Für geplante API-Nachrichten fixiert Bird die Template-Version, Sprache und Parameter bei Annahme der Anfrage. Spätere Template-Änderungen aktualisieren diese Nachricht nicht. Um sie zu ändern, [stornieren Sie die geplante Nachricht](/docs/guides/email/scheduled-sending#canceling-a-scheduled-send), bevor die Verarbeitung beginnt, und reichen Sie einen Ersatz ein. Bewahren Sie eine Gruppe von Bird-Nachrichten-IDs auf, wenn Sie SparkPosts kampagnenbasierte Stornierung ersetzen müssen.

Setzen Sie `BIRD_API_KEY` auf Ihren Bird-Key. Dieses [Sandbox](/docs/guides/email/testing-sandbox)-Beispiel benötigt keine verifizierte Domain und erreicht keinen echten Posteingang. Für einen EU-Key verwenden Sie `https://eu1.platform.bird.com`:

```bash
curl --fail-with-body https://us1.platform.bird.com/v1/email/messages \
  -H "Authorization: Bearer $BIRD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "onboarding@messagebird.dev",
    "to": ["delivered@messagebird.dev"],
    "subject": "Your receipt",
    "text": "Thanks for your order, {{ first_name }}.",
    "parameters": {"first_name": "Alex"},
    "category": "transactional",
    "metadata": {"order_id": "order_123"},
    "tags": [{"name": "mailstream", "value": "receipts"}]
  }'
```

Erwarten Sie `202 Accepted` und eine `em_`-Nachrichten-ID. Speichern Sie diese ID und verfolgen Sie Empfängerergebnisse über [Events](/docs/guides/email/events). Annahme bedeutet nicht Zustellung: Ein unterdrückter Empfänger kann angenommen und später abgelehnt werden. Aktualisieren Sie das Response-Parsing, die [Fehlerbehandlung](/docs/guides/errors) und die [idempotenten Wiederholungsversuche](/docs/guides/idempotency) zusammen mit dem Sendeaufruf.

Lesen Sie bei einem Batch das `data`-Array aus und speichern Sie die ID jeder Nachricht zusammen mit Ihrem eigenen Sendedatensatz. Bird validiert den Batch vor dem Einreihen in die Warteschlange: Eine ungültige Nachricht kann dazu führen, dass die gesamte Anfrage abgelehnt wird. Teilen Sie große Übertragungen auf, damit sie die [Batch-Limits](/docs/guides/email/sending-bulk) einhalten, und befolgen Sie die Retry-Regeln von Bird, wenn eine Antwort mehrdeutig ist.

Vergeben Sie für jede einzelne Anfrage oder jeden Batch-Abschnitt einen eigenen stabilen Idempotenz-Schlüssel. Das [Replay-Fenster](/docs/guides/idempotency) von Bird unterscheidet sich von dem bei SparkPost; bewahren Sie Ihre Sendedatensätze über dieses Fenster hinaus auf, um Duplikate während des Cutover oder Rollback zu vermeiden.

## SMTP-Absender migrieren

Verwenden Sie die [SMTP-Verbindungseinstellungen](/docs/guides/email/smtp) von Bird, den Benutzernamen `bird` und einen API-Schlüssel mit aktiviertem E-Mail-Versand. Prüfen Sie die Region, TLS und die Schlüsselkonfiguration.

Konvertieren Sie SparkPosts [`X-MSYS-API`-Optionen](https://developers.sparkpost.com/api/smtp/), bevor Sie den Header entfernen. Legen Sie Kategorie, Tags, Tracking und Pool-Standardwerte in der [SMTP-Konfiguration](/docs/guides/email/smtp#what-comes-from-the-message-and-what-comes-from-the-keys-configuration) von Bird fest. Diese Einstellungen gelten pro API-Schlüssel; verwenden Sie separate konfigurierte Schlüssel oder HTTP, wenn sie zwischen Nachrichten variieren. Verwenden Sie HTTP für nachrichtenspezifische Metadaten oder Template-Parameter.

Setzen Sie jeden Zustellungsempfänger in den SMTP-Envelope, sichtbare Empfänger in die MIME-Header `To`/`Cc` und Bcc-Empfänger ausschließlich in den Envelope. Inventarisieren Sie `X-MSYS-API.archive` separat: SparkPost-Archivkopien behalten die Tracking-URLs des ursprünglichen Empfängers bei, daher ist gewöhnliches Bcc nicht gleichwertig. Validieren Sie einen Ersatz, bevor Sie diesen Ablauf umstellen.

Übernehmen Sie Ihre wirksamen Tracking-Einstellungen explizit: Ein unkonfigurierter SMTP-Schlüssel von Bird aktiviert Open- und Click-Tracking, während die SparkPost-Standardwerte je nach Account variieren. Setzen Sie auch die Kategorie: Bird SMTP verwendet standardmäßig transaktional und Inline-HTTP standardmäßig Marketing. Newsletter-Absender benötigen `marketing` auf beiden Wegen.

Verwenden Sie bei [SMTP-Retries](/docs/guides/email/smtp#retrying-safely) denselben Idempotenz-Schlüssel, Envelope und exakt dieselben MIME-Bytes. Eine Neugenerierung von `Date`, `Message-ID` oder MIME-Boundaries ändert den Payload und kann einen sicheren Retry verhindern.

## Templates konvertieren

Exportieren Sie die Versionen, die Sie tatsächlich über SparkPosts [Templates-API](https://developers.sparkpost.com/api/templates/) versenden: Listen Sie mit `GET /api/v1/templates?draft=false` auf und rufen Sie den Inhalt mit `GET /api/v1/templates/{id}?draft=false` ab. Speichern Sie Entwürfe bei Bedarf separat. Nehmen Sie mit Subaccounts geteilte Templates und referenzierte [Snippets](https://developers.sparkpost.com/api/snippets/) in das Inventar auf.

SparkPosts [Template-Sprache](https://developers.sparkpost.com/api/template-language/) und die Liquid-Syntax von Bird unterscheiden sich. Konvertieren Sie Bedingungen, Schleifen, Standardwerte und verschachtelte Werte. Lösen Sie Empfänger-Overrides und für das Rendering verwendete Metadaten in explizite Parameter auf. Zum Beispiel wird `{{ if ... }}` zu `{% if ... %}`. Gemeinsame `{{ name }}`-Syntax allein stellt keine Kompatibilität her.

Expandieren Sie Snippets vor der Veröffentlichung; das Liquid von Bird unterstützt weder `include` noch `render`. Ersetzen Sie bei gespeicherten Templates externe Referenzen wie `{{ user.name }}` durch flache Parameter wie `{{ user_name }}`. Wenn Sie dynamisches HTML über SparkPost-Parameter einfügen, rendern Sie es in Ihrer Anwendung und übermitteln Sie den fertigen Body ohne Inline-`parameters`; gewöhnliche HTML-Parameterwerte werden escaped.

Erstellen, prüfen und veröffentlichen Sie ein [Bird-Template](/docs/guides/email/templates) und folgen Sie dann [Senden mit einem Template](/docs/guides/email/sending-email#sending-with-a-template). Übernehmen Sie den effektiven Absender, Reply-To und benutzerdefinierte Header aus SparkPost in die Sendeanfrage; Bird-Templates liefern den Inhalt.

Für Inline-Liquid geben Sie `parameters` an, auch `{}`; ohne diese Angabe bleiben Tokens unverändert. Prüfen Sie fehlende Werte, Escaping und URLs.

Ersetzen Sie Abmelde-Platzhalter durch `{{ bird.unsubscribe_url }}`. Bird liefert [Marketing-Abmelde-Header](/docs/guides/email/unsubscribe-links); entfernen Sie benutzerdefinierte `List-Unsubscribe`- und `List-Unsubscribe-Post`-Header aus Marketing-Sendungen, um eine `422`-Ablehnung zu vermeiden.

Die Abmelde-Links von Bird melden die Adresse workspace-weit von Marketing-E-Mails ab. Diese Links bieten keine listenspezifischen Abmeldungen. Prüfen Sie dieses Verhalten, wenn Ihre SparkPost-Integration separate Abonnements anbietet.

## Empfängerlisten migrieren

Exportieren Sie jede [gespeicherte Empfängerliste](https://developers.sparkpost.com/api/recipient-lists/) mit `GET /api/v1/recipient-lists/{id}?show_recipients=true`, um Mitgliedschaft und Personalisierung einzuschließen. Erstellen Sie Ziel-[Audiences](/docs/guides/email/audiences) und registrieren Sie [Kontakteigenschaften](/docs/guides/email/contacts#contact-properties) vor dem Import. Prüfen Sie jedes Importergebnis und gleichen Sie die Mitgliederzahlen ab.

Kontakteigenschaften gehören zum Kontakt über alle seine Audiences hinweg. Wenn dieselbe Adresse in mehreren SparkPost-Listen unterschiedliche Substitutionsdaten hat, gleichen Sie diese Werte vor dem Import ab, um ein Überschreiben zu vermeiden. Bird-Kontakteigenschaften haben skalare Typen; behalten Sie listenspezifische oder strukturierte Personalisierung in Ihrer Anwendung, wenn sie nicht sicher abgebildet werden kann.

Verwenden Sie [Broadcasts](/docs/guides/email/broadcasts), wenn ein veröffentlichtes Template aus Kontakteigenschaften befüllt werden kann. Die Audience-Mitgliedschaft wird beim Sendestart aufgelöst, und die Sende- und Parallelitätskontingente für Broadcasts gelten. Verwenden Sie unabhängige [Batch-Nachrichten](/docs/guides/email/sending-bulk) für anfragespezifische Parameter oder einen festen Empfänger-Snapshot. Validieren Sie Einwilligung und Unterdrückungsverarbeitung, bevor Sie eine migrierte Liste aktivieren.

## Unterdrückungen exportieren

Exportieren Sie vor dem Produktionsversand. Beginnen Sie mit `GET /api/v1/suppression-list?cursor=initial&types=transactional,non_transactional,open_tracking` und folgen Sie dann der Paginierung bis zum Abschluss. Speichern Sie die vollständigen Datensätze einschließlich Typ, Quelle, Listen-ID, Subaccount und Zeitstempel. Verwenden Sie `X-MSYS-SUBACCOUNT: 0` für das Hauptkonto und die jeweilige Subaccount-ID für dessen eigene Liste. Siehe SparkPosts [Suppression List API](https://developers.sparkpost.com/api/suppression-list/).

Klassifizieren Sie Datensätze nach Typ, Quelle und Geltungsbereich, bevor Sie die Importschleife des Hauptleitfadens verwenden. Birds [`POST /v1/email/suppressions`](/docs/api/reference/create-suppression) nimmt eine `email` entgegen und erstellt eine manuelle, workspace-weite Sperre für beide Kategorien:

- **Vom E-Mail-Empfang gesperrte Adressen:** Importieren Sie diejenigen, die kategorieübergreifend gesperrt werden sollen. Bewahren Sie den Originalexport für den Abgleich auf; importierte Datensätze tragen den manuellen Grund von Bird.
- **Kontoweite Marketing-Abmeldungen:** Verwenden Sie [`POST /v1/preferences`](/docs/api/reference/create-preference) mit `channel: "email"`, der Adresse in `handle`, `status: "revoked"` und `coverage: "non_transactional"`. Setzen Sie `source: "sparkpost-migration"` für den Abgleich. Prüfen Sie zuerst vorhandene Bird-Präferenzen und bewahren Sie strengere Einschränkungen; kontrollieren Sie `applied` und die zurückgegebene Präferenz nach jedem Schreibvorgang.
- **Listen-spezifische oder rein transaktionale Einschränkungen:** Bewahren Sie deren Geltungsbereich in der Sendeberechtigungslogik Ihrer Anwendung. Die E-Mail-Präferenzen von Bird gelten kanalweit und können diese Geltungsbereiche nicht abbilden. Eine manuelle Unterdrückung kann auch Passwortrücksetzungen blockieren. Halten Sie betroffenen Versand an, bis Sie den Ersatz verifiziert haben.
- **Open-Tracking-Abmeldungen:** Setzen Sie `track_opens: false` für die unabhängige Nachricht, zusätzlich zu etwaigen Sendeeinschränkungen. Für SMTP verwenden Sie einen Schlüssel mit deaktiviertem Open-Tracking oder nutzen Sie HTTP für nachrichtenspezifische Steuerung.

Die obige Präferenzanfrage erfasst die Einschränkung zum Importzeitpunkt. Behalten Sie die ursprünglichen Zeitstempel von SparkPost in Ihrem Export und gleichen Sie spätere Einwilligungen ab, bevor Sie schreiben. Gleichen Sie importierte Datensätze und fehlgeschlagene Schreibvorgänge ab und testen Sie dann beide Kategorien. Synchronisieren Sie neue Abmeldungen und Unterdrückungen, solange beide Anbieter senden. Wenden Sie Abmeldungen aus zuvor über SparkPost zugestellten E-Mails auch nach der Umstellung weiterhin auf Bird an. Siehe [Unterdrückungen](/docs/guides/email/suppressions) für die native Bounce- und Beschwerdebehandlung.

## Webhook-Events übersetzen

SparkPost sendet [gebündelte Webhook-Events](https://developers.sparkpost.com/api/webhooks/) in `msys`-Wrappern. Bird liefert ein Event pro Anfrage mit `type`, `timestamp` und `data`. [Registrieren Sie einen Bird-Endpoint](/docs/guides/webhooks) mit expliziten Event-Abonnements und Signaturverifizierung. Halten Sie den SparkPost-Handler für den verbleibenden Datenverkehr aktiv.

| SparkPost-Event                   | Bird-Event                 |
| --------------------------------- | -------------------------- |
| `injection`                       | `email.processed`          |
| `delivery`                        | `email.delivered`          |
| `delay`                           | `email.deferred`           |
| `bounce`                          | `email.bounced`            |
| `out_of_band`                     | `email.out_of_band_bounce` |
| `spam_complaint`                  | `email.complained`         |
| Sendeseitige Fehler (siehe unten) | `email.rejected`           |
| `open`, `initial_open`            | `email.opened`             |
| `click`                           | `email.clicked`            |
| `link_unsubscribe`                | `email.unsubscribed`       |
| `list_unsubscribe`                | `email.list_unsubscribed`  |

Direkte API- und SMTP-Sends lösen `email.accepted` vor der Verarbeitung aus. Broadcasts protokollieren die Annahme in den Events API und im E-Mail-Log, lösen diesen Webhook aber nicht aus. SparkPosts `policy_rejection`, `generation_failure` und `generation_rejection` werden auf `email.rejected` abgebildet; prüfen Sie `rejection_reason`. Deduplizieren Sie Öffnungen separat, wenn Sie eindeutige Interaktionen zählen.

Verwenden Sie `data.email_id` und `data.recipient_id` für die Bird-Korrelation und übergeben Sie Ihre eigenen Kennungen in `metadata`. Ersetzen Sie SparkPosts Batch-ID-Handling durch Birds [Regeln für Webhook-Deduplizierung und -Reihenfolge](/docs/guides/webhooks). Lesen Sie Bounce-Details, bevor Sie entscheiden, ob eine Adresse unterdrückt werden soll; die [Bounce-Klassifizierung](/docs/guides/email/events#bounce-classification) unterscheidet permanente Adressfehler von temporären oder richtlinienbedingten Fehlern.

## Reporting-Verlauf beibehalten

Exportieren Sie den [SparkPost-Event-Verlauf](https://developers.sparkpost.com/api/events/) und die [aggregierten Berichte](https://developers.sparkpost.com/api/metrics/), die Sie benötigen, bevor deren Aufbewahrungszeiträume ablaufen. Folgen Sie der Event-Paginierung bis zum Ende und bewahren Sie Provider-IDs, Account-/Subaccount-Zuordnung, Zeitstempel und Reporting-Filter auf. Sammeln Sie während der Überlappungsphase weiterhin verspätete Events und archivieren Sie den SparkPost-Verlauf separat.

Speichern Sie eine Baseline für jeden Sende-Stream. Vergleichen Sie übereinstimmende Empfängerpopulationen und Berichtszeiträume und prüfen Sie die [Metrikdefinitionen](/docs/guides/email/tracking-and-metrics): Provider-Annahme, Zustellung am Empfängerserver, eindeutige Interaktionen und vorab abgerufene Öffnungen sind unterschiedliche Messgrößen. Gleiche Metriknamen allein ergeben keine vergleichbaren Raten.

## Eingehende E-Mails separat migrieren

Wenn Sie [SparkPost-Relay-Webhooks](https://developers.sparkpost.com/api/relay-webhooks/) nutzen, folgen Sie für diesen Ablauf der Anleitung [E-Mails empfangen](/docs/guides/email/receiving-email). Der `email.received`-Webhook von Bird liefert eine `inbound_message_id`; rufen Sie Body, Anhänge oder das rohe MIME über die API ab, statt die vollständige Nachricht im Webhook zu erwarten. Testen Sie Ihren Handler mit einer Bird-Weiterleitungsadresse und bereiten Sie dann den Domain-Empfang vor, bevor Sie die MX-Einträge ändern. Prüfen Sie das Antwort-Routing nach der DNS-Änderung und archivieren Sie Inhalte, die Sie über die Empfangs-Aufbewahrungsfrist von Bird hinaus benötigen.

## Prüfen und umstellen

1. Prüfen Sie die Sendefähigkeit jeder Domain. Führen Sie den [Sandbox-Smoke-Test](/docs/guides/email/migrate#5-verify-in-the-sandbox-before-cutover) und Beschwerdefälle durch. Stellen Sie sicher, dass signierte Events Ihren Handler erreichen, der richtigen Nachricht zugeordnet werden und doppelte Zustellungen korrekt behandelt werden. Sandbox-Events belegen weder Inbox-Zustellung noch Rendering oder Tracking.
2. Senden Sie von Ihrer verifizierten Domain an kontrollierte echte Postfächer. Prüfen Sie Personalisierung, To/Cc/Bcc-Sichtbarkeit, Anhänge, Authentifizierung und Tracking. Testen Sie eine Abmeldung: Marketing muss stoppen, während berechtigte Transaktions-E-Mails weiterhin zugestellt werden. Testen Sie separat, dass kategorieübergreifende Sperren beide ablehnen. Halten Sie diese Prüfungen von simulierten Sandbox-Ergebnissen getrennt.
3. Weisen Sie ausstehende geplante Sendungen einem Anbieter zu. Leeren oder stornieren Sie das Original, bevor Sie es anderswo neu anlegen. Führen Sie in Ihrer Anwendung Buch darüber, welcher Anbieter jeden logischen Sendevorgang angenommen hat, damit Wiederholungsversuche oder Rollbacks keine zweite Kopie senden.
4. Verlagern Sie einen kontrollierten Teil des Datenverkehrs und überwachen Sie [Zustellmetriken](/docs/guides/email/tracking-and-metrics) und Webhook-Verarbeitung. Folgen Sie bei dedizierten IPs dem mit unserem Team vereinbarten Migrationsplan, einschließlich eines etwaigen [Warmups](/docs/guides/email/ip-warmup). Erhöhen Sie den Datenverkehr, nachdem die beobachteten Ergebnisse Ihre Zustellanforderungen erfüllen.
5. Falls die Validierung fehlschlägt, pausieren Sie den betroffenen Bird-Datenverkehr und leiten Sie neue Sendungen über den beibehaltenen SparkPost-Pfad mit aktuellen Opt-outs. Klären Sie uneindeutige Sendungen, bevor Sie sie erneut versuchen. Setzen Sie alte Zugangsdaten, Webhooks und DNS erst außer Betrieb, nachdem Warteschlangen und verspätete Events berücksichtigt sind; halten Sie alte Tracking- und Abmeldelinks für bereits zugestellte E-Mails funktionsfähig.

Falls die Authentifizierung fehlschlägt, prüfen Sie das Bird-Bearer-Token und die Region. Falls Präferenz-Importe `403` zurückgeben, prüfen Sie die `preferences`-Schreibberechtigung des Keys, bevor Sie fortfahren. Falls Personalisierung falsch gerendert wird, überprüfen Sie die Liquid-Konvertierung und die Parameter. Falls Transaktions-E-Mails unerwartet abgelehnt werden, prüfen Sie importierte manuelle Unterdrückungen. Verwenden Sie das [E-Mail-Log](/docs/guides/email/email-log) und die Event-Details, um jede Korrektur zu verifizieren.

## Nächste Schritte

- [E-Mails senden](/docs/guides/email/sending-email): Payload-Felder, Personalisierung und asynchrone Ergebnisse
- [E-Mail-Templates](/docs/guides/email/templates): Vorschau, Veröffentlichung und Liquid-Unterstützung
- [Unterdrückungen](/docs/guides/email/suppressions): Unterdrückungsgründe und Verwaltung
- [Webhooks und Events](/docs/guides/webhooks): Signaturen, Wiederholungsversuche und Replay

## Related resources

- [Getting started with email](/learn/email/getting-started-with-email) (video)
- [Email](/email-api) (product)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=email)
