Quelle: https://docs.printstack.de/integrationen/api
Inhaltsverzeichnis: https://docs.printstack.de/llms.txt

# Printstack über die API anbinden

Mit der API kannst du Empfänger aus einem eigenen System an eine Printstack-Kampagne übergeben und noch nicht versendete Datensätze wieder entfernen.

Für automatisch erzeugte Gutscheincodes verbindest du zusätzlich einen Shop. Das erklärt [Automatisch im Shop erstellen](https://docs.printstack.de/gutscheine/automatisch-im-shop-erstellen).

**Unterstützung bei deiner Integration**

Du nutzt ein anderes CRM-System oder möchtest Printstack über deine eigenen Schnittstellen einbinden? Wir helfen dir gerne bei der Umsetzung. Schreib uns bei Fragen an [kontakt@printstack.de](mailto:kontakt@printstack.de).

## Empfänger übertragen

1. Öffne deine Printstack-Kampagne und klicke auf **Klaviyo Webhook verbinden**.
2. Wähle im Dialog **Datenquelle verbinden** den Reiter **Eigene Integration**.
3. Kopiere die **Ziel-URL**, den Header **X-API-Key** samt Schlüssel und den **Body** in dein Tool oder deine Integration. Der Body enthält keine Klaviyo-Platzhalter. Fülle die leeren Empfängerfelder mit den Daten aus deinem System; die vorgegebene Kampagnen-ID bleibt erhalten.

![Eigene Integration in Printstack: Ziel-URL, API-Key-Header und kopierbarer Body mit leeren Empfängerfeldern. Der Schlüsselwert ist verdeckt.](https://docs.printstack.de/screenshots/integrationen/api/eigene-integration.webp)

Bewahre den API-Key wie ein Passwort auf. Übertrage ihn ausschließlich im Header, niemals in einer öffentlich sichtbaren URL oder in Client-Code.

Ein gekürztes Beispiel mit erfundenen Empfängerdaten:

```json
{
  "data": {
    "campaign": "123",
    "email": "erika@example.com",
    "vorname": "Erika",
    "nachname": "Beispiel",
    "strasse": "Musterstraße 1",
    "adresszusatz": "",
    "plz": "12345",
    "ort": "Musterstadt",
    "land": "DE"
  }
}
```

Die Kampagnen-ID `123` ist ein Beispiel. Verwende in deiner Integration die ID aus dem kopierten Body.

Teste die Übertragung zunächst mit einer Kampagne im Status **Entwurf** oder **Pausiert**. Sende den ausgefüllten Body per HTTPS an die Ziel-URL und setze den Header `X-API-Key`. Im Entwurf oder pausierten Zustand wird keine reguläre Sendung gespeichert (`200`, `stored: false`). Erst eine aktive Kampagne nimmt reguläre Sendungen an (`202`); kontrolliere danach den sichtbaren Sendungsstatus.

Bei mehreren [Gutscheinangeboten](https://docs.printstack.de/gutscheine/gutscheinangebot-erstellen) benötigt der Request zusätzlich `data.coupon_variant`. Wähle das Angebot im Printstack-Dialog **Datenquelle verbinden** aus und übernimm den erzeugten Body vollständig. Bei genau einem Angebot ist das Feld optional; Printstack wählt das Angebot automatisch. Fehlende oder unbekannte Varianten bei mehreren Angeboten werden mit HTTP `400` abgelehnt. Der Variantenschlüssel ist kein eigenes Personalisierungsfeld.

Welche Pflichtfelder und zusätzlichen Variablen gelten, zeigt die Kampagne. Variablen für das Druckmotiv werden unter [Personalisierte Inhalte](https://docs.printstack.de/kampagnen/personalisierte-inhalte) erklärt.

## Empfänger entfernen

Sende einen `POST`-Aufruf an `https://app.printstack.de/api/records/delete/` mit dem Header `X-API-Key`. Der Body enthält die E-Mail-Adresse und bei Bedarf eine Einschränkung auf bestimmte Kampagnen.

### Alle Kampagnen berücksichtigen

Ohne Kampagnenangabe entfernt Printstack alle noch löschbaren Sendungen dieser E-Mail-Adresse innerhalb deiner Organisation:

```json
{
  "email": "erika@example.com"
}
```

Die Einrichtung dieses Falls in Klaviyo zeigt [Käufer vor Versand entfernen](https://docs.printstack.de/integrationen/klaviyo/kaeufer-entfernen).

### Auf eine oder mehrere Kampagnen beschränken

Das ist sinnvoll, wenn beispielsweise nur Winback-Mailings entfallen sollen, während andere Mailings zur Kundenbindung weiterhin versendet werden.

Für **eine Kampagne** ergänzt du `campaign`:

```json
{
  "email": "erika@example.com",
  "campaign": 123
}
```

Für **mehrere Kampagnen** verwendest du `campaigns`:

```json
{
  "email": "erika@example.com",
  "campaigns": [123, 456]
}
```

Ersetze die Beispiel-IDs durch die IDs deiner Printstack-Kampagnen. Du findest sie im erzeugten Body der jeweiligen Kampagne unter `campaign`; gemeint ist die Printstack-ID, nicht die Post-Kampagnen-ID. Verwende `campaign` und `campaigns` nicht gleichzeitig.

### Ergebnis prüfen

`202` mit `queued: true` bestätigt die Annahme des Auftrags. Die Löschung folgt im Hintergrund; prüfe das Ergebnis in der Sendungsübersicht. Die [Grenzen der Entfernung](https://docs.printstack.de/versand-optimieren/kaeufer-entfernen#bis-wann-ist-die-entfernung-moglich) gelten für alle Integrationen.

## Verarbeitung und Fehlerfälle

API-Aufrufe können asynchron verarbeitet werden. Eine technische Annahme bestätigt daher nicht automatisch eine postalisch verwertbare Adresse. Behandle Wiederholungen so, dass derselbe Vorgang nicht unbeabsichtigt mehrfach angelegt wird. Werte die dokumentierten HTTP-Statuscodes aus.

- `2xx`: Anfrage wurde angenommen oder verarbeitet; das sichtbare Ergebnis trotzdem prüfen.
- `4xx`: Anfrage, Zugangsdaten oder Payload korrigieren.
- `5xx`: später erneut versuchen und Wiederholungen kontrolliert begrenzen.

Fehlerhafte oder ausgeschlossene Datensätze werden unter [Fehlerhafte und ausgeschlossene Sendungen](https://docs.printstack.de/versand-optimieren/fehlerhafte-und-ausgeschlossene-sendungen) erklärt.

## API-Key rotieren

Wenn du deinen Schlüssel ersetzen möchtest, etwa weil er offengelegt wurde, öffne **Einstellungen → Verbindungen → API-Key → API-Key anzeigen** und klicke auf **Neuen API-Key erstellen**.

Der bisherige Schlüssel wird sofort ungültig. Trage den neuen Schlüssel anschließend in allen verbundenen Webhooks und Integrationen ein, damit sie wieder Daten übertragen können.

![API-Key-Einstellungen in Printstack: Neuen API-Key erstellen ist hervorgehoben; der geheime Schlüsselwert ist verdeckt.](https://docs.printstack.de/screenshots/integrationen/api/api-key-rotieren.webp)
