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

# Transformations

> Modifiez les payloads webhook de storekit avec du JavaScript personnalisé avant qu'ils n'atteignent votre endpoint. Changez l'URL, la méthode, le corps ou les en-têtes sans serveur proxy.

Les transformations vous permettent d'écrire du code JavaScript qui modifie les propriétés des webhooks avant leur livraison à votre endpoint. Vous pouvez changer la méthode HTTP, l'URL cible, le payload, ajouter des en-têtes personnalisés, ou même annuler certains webhooks.

## Cas d'usage

Les transformations sont utiles lorsque vous devez :

* **Modifier les payloads** pour qu'ils correspondent au format attendu par votre système
* **Rediriger les webhooks** vers différentes URL en fonction du contenu du payload
* **Ajouter des en-têtes personnalisés** pour l'authentification ou le routage
* **Filtrer les webhooks** en annulant ceux dont vous n'avez pas besoin
* **Transformer les données** (par ex. convertir des formats de devise, renommer des champs)

## Accéder aux transformations

1. Accédez aux [paramètres Webhooks](https://dashboard.storekit.com/developers/webhooks) dans votre tableau de bord
2. Cliquez sur un endpoint pour en afficher les détails
3. Accédez à l'onglet **Advanced**
4. Faites défiler jusqu'à la carte **Transformations**
5. Activez le switch pour activer les transformations

## Écrire une transformation

Les transformations utilisent une fonction JavaScript `handler` qui reçoit les données du webhook et renvoie la version modifiée.

### Propriétés d'entrée

La fonction `handler` reçoit un objet avec les propriétés suivantes :

| Propriété   | Type   | Description                          |
| ----------- | ------ | ------------------------------------ |
| `method`    | string | Méthode HTTP (`"POST"` ou `"PUT"`)   |
| `url`       | string | L'URL de l'endpoint                  |
| `payload`   | object | Le payload du webhook au format JSON |
| `eventType` | string | Le type d'événement (lecture seule)  |

### Propriétés de retour

Renvoyez le même objet avec vos modifications. Vous pouvez également ajouter :

| Propriété | Type    | Description                                   |
| --------- | ------- | --------------------------------------------- |
| `cancel`  | boolean | Définir sur `true` pour annuler ce webhook    |
| `headers` | object  | En-têtes personnalisés à ajouter à la requête |

## Exemples

### Modifier le payload

Aplatir des données imbriquées ou renommer des champs :

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

### Rediriger en fonction du payload

Envoyer les webhooks vers différentes URL en fonction du contenu :

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

### Ajouter des en-têtes personnalisés

Inclure des en-têtes supplémentaires pour votre endpoint :

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

### Annuler certains webhooks

Filtrer les webhooks que vous ne souhaitez pas recevoir :

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

### Changer la méthode HTTP

Passer de POST à PUT si nécessaire :

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

## Tester les transformations

Avant d'enregistrer votre transformation :

1. Cliquez sur **Test** dans l'éditeur de transformation
2. Sélectionnez un type d'événement ou saisissez un payload personnalisé
3. Vérifiez la sortie transformée
4. Assurez-vous que les modifications sont correctes avant d'enregistrer

<Warning>
  Les webhooks annulés apparaissent comme des livraisons réussies dans vos logs. Utilisez l'annulation avec précaution pour ne pas manquer des événements importants.
</Warning>

<Tip>
  Gardez les transformations simples et rapides. Une logique complexe peut entraîner des timeouts ou des comportements inattendus.
</Tip>


## Related topics

- [Connecter un domaine personnalisé à votre page de commande storekit](/docs/fr/guides/marketing/custom-domains.md)
