> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Transformationen

> Modifizieren Sie storekit-Webhook-Payloads mit eigenem JavaScript, bevor sie Ihren Endpoint erreichen. Ändern Sie URL, Methode, Body oder Header ohne Proxy-Server.

Transformationen erlauben es Ihnen, JavaScript-Code zu schreiben, der Webhook-Eigenschaften modifiziert, bevor sie an Ihren Endpoint zugestellt werden. Sie können die HTTP-Methode, die Ziel-URL, die Payload oder benutzerdefinierte Header ändern oder bestimmte Webhooks sogar abbrechen.

## Anwendungsfälle

Transformationen sind nützlich, wenn Sie:

* **Payloads anpassen**, um dem erwarteten Format Ihres Systems zu entsprechen
* **Webhooks umleiten** an unterschiedliche URLs je nach Payload-Inhalt
* **Benutzerdefinierte Header hinzufügen** für Authentifizierung oder Routing
* **Webhooks filtern**, indem Sie nicht benötigte abbrechen
* **Daten transformieren** (z. B. Währungsformate konvertieren, Felder umbenennen)

## Zugriff auf Transformationen

1. Öffnen Sie die [Webhook-Einstellungen](https://dashboard.storekit.com/developers/webhooks) in Ihrem Dashboard
2. Klicken Sie auf einen Endpoint, um dessen Details anzuzeigen
3. Wechseln Sie zum Tab **Advanced**
4. Scrollen Sie zur Karte **Transformations**
5. Aktivieren Sie den Schalter, um Transformationen zu aktivieren

## Eine Transformation schreiben

Transformationen verwenden eine JavaScript-Funktion `handler`, die die Webhook-Daten erhält und die modifizierte Version zurückgibt.

### Eingabeeigenschaften

Die Funktion `handler` erhält ein Objekt mit diesen Eigenschaften:

| Eigenschaft | Typ    | Beschreibung                         |
| ----------- | ------ | ------------------------------------ |
| `method`    | string | HTTP-Methode (`"POST"` oder `"PUT"`) |
| `url`       | string | Die Endpoint-URL                     |
| `payload`   | object | Die Webhook-Payload als JSON         |
| `eventType` | string | Der Event-Typ (schreibgeschützt)     |

### Rückgabeeigenschaften

Geben Sie dasselbe Objekt mit Ihren Änderungen zurück. Sie können außerdem hinzufügen:

| Eigenschaft | Typ     | Beschreibung                                                  |
| ----------- | ------- | ------------------------------------------------------------- |
| `cancel`    | boolean | Auf `true` setzen, um diesen Webhook abzubrechen              |
| `headers`   | object  | Benutzerdefinierte Header, die dem Request hinzugefügt werden |

## Beispiele

### Payload modifizieren

Verschachtelte Daten flach machen oder Felder umbenennen:

```javascript theme={null}
function handler(webhook) {
  // Add a custom field
  webhook.payload.source = "storekit";
  
  // Rename a field
  webhook.payload.orderId = webhook.payload.order_id;
  delete webhook.payload.order_id;
  
  return webhook;
}
```

### Basierend auf Payload umleiten

Webhooks je nach Inhalt an unterschiedliche URLs senden:

```javascript theme={null}
function handler(webhook) {
  if (webhook.payload.priority === "high") {
    webhook.url = "https://example.com/webhooks/priority";
  }
  return webhook;
}
```

### Benutzerdefinierte Header hinzufügen

Zusätzliche Header für Ihren Endpoint einfügen:

```javascript theme={null}
function handler(webhook) {
  webhook.headers = {
    "X-Custom-Header": "my-value",
    "X-Store-ID": webhook.payload.store_id
  };
  return webhook;
}
```

### Bestimmte Webhooks abbrechen

Filtern Sie Webhooks heraus, die Sie nicht empfangen möchten:

```javascript theme={null}
function handler(webhook) {
  // Don't send webhooks for test orders
  if (webhook.payload.test_mode === true) {
    webhook.cancel = true;
  }
  return webhook;
}
```

### HTTP-Methode ändern

Von POST zu PUT wechseln, falls benötigt:

```javascript theme={null}
function handler(webhook) {
  webhook.method = "PUT";
  return webhook;
}
```

## Transformationen testen

Bevor Sie Ihre Transformation speichern:

1. Klicken Sie im Transformations-Editor auf **Test**
2. Wählen Sie einen Event-Typ aus oder geben Sie eine eigene Payload ein
3. Prüfen Sie die transformierte Ausgabe
4. Verifizieren Sie die Änderungen, bevor Sie speichern

<Warning>
  Abgebrochene Webhooks erscheinen in Ihren Logs als erfolgreiche Zustellungen. Verwenden Sie Abbrüche mit Bedacht, um keine wichtigen Events zu verpassen.
</Warning>

<Tip>
  Halten Sie Transformationen einfach und schnell. Komplexe Logik kann zu Timeouts oder unerwartetem Verhalten führen.
</Tip>
