> ## 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.

# Transformaties

> Pas storekit webhook-payloads aan met eigen JavaScript voordat ze je endpoint bereiken. Wijzig de URL, methode, body of headers zonder proxyserver.

Met transformaties kun je JavaScript-code schrijven die webhook-eigenschappen aanpast voordat ze aan je endpoint worden bezorgd. Je kunt de HTTP-methode, de doel-URL, de payload of headers wijzigen, of specifieke webhooks annuleren.

## Toepassingen

Transformaties zijn handig wanneer je:

* **Payloads aanpassen** aan het verwachte formaat van je systeem
* **Webhooks omleiden** naar andere URL's op basis van de inhoud van de payload
* **Eigen headers toevoegen** voor authenticatie of routing
* **Webhooks filteren** door ongewenste te annuleren
* **Data transformeren** (bv. valutaformaten converteren, velden hernoemen)

## Transformaties openen

1. Ga naar de [Webhooks-instellingen](https://dashboard.storekit.com/developers/webhooks) in je dashboard
2. Klik op een endpoint om de details te openen
3. Ga naar het tabblad **Advanced**
4. Scrol naar de kaart **Transformations**
5. Zet de schakelaar aan om transformaties in te schakelen

## Een transformatie schrijven

Transformaties gebruiken een JavaScript-`handler`-functie die de webhookdata ontvangt en de gewijzigde versie teruggeeft.

### Inputproperties

De `handler`-functie ontvangt een object met deze eigenschappen:

| Property    | Type   | Beschrijving                       |
| ----------- | ------ | ---------------------------------- |
| `method`    | string | HTTP-methode (`"POST"` of `"PUT"`) |
| `url`       | string | De endpoint-URL                    |
| `payload`   | object | De webhook-payload als JSON        |
| `eventType` | string | Het eventtype (alleen-lezen)       |

### Return-properties

Geef hetzelfde object terug met jouw aanpassingen. Je kunt ook toevoegen:

| Property  | Type    | Beschrijving                                   |
| --------- | ------- | ---------------------------------------------- |
| `cancel`  | boolean | Zet op `true` om deze webhook te annuleren     |
| `headers` | object  | Eigen headers om aan het verzoek toe te voegen |

## Voorbeelden

### De payload aanpassen

Geneste data platslaan of velden hernoemen:

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

### Omleiden op basis van de payload

Webhooks naar verschillende URL's sturen op basis van de inhoud:

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

### Eigen headers toevoegen

Extra headers meesturen naar je endpoint:

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

### Specifieke webhooks annuleren

Webhooks uitfilteren die je niet wilt ontvangen:

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

Schakel indien nodig van POST naar PUT:

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

## Transformaties testen

Voordat je je transformatie opslaat:

1. Klik op **Test** in de transformatie-editor
2. Kies een eventtype of voer een eigen payload in
3. Bekijk de getransformeerde output
4. Verifieer dat de wijzigingen kloppen voordat je opslaat

<Warning>
  Geannuleerde webhooks verschijnen als succesvolle bezorgingen in je logs. Ga voorzichtig om met annulering, zodat je geen belangrijke events mist.
</Warning>

<Tip>
  Houd transformaties eenvoudig en snel. Complexe logica kan leiden tot timeouts of onverwacht gedrag.
</Tip>
