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

# Livraison et relances

> Comment Pulse-Sell relance les envois échoués, ce qui désactive un Pulse et comment lire l'historique.

Votre serveur peut être en panne, lent ou en maintenance. Pulse-Sell est conçu pour que **vous ne perdiez pas d'événement** : la livraison est garantie « au moins une fois », avec des relances automatiques.

## Ce qui compte comme un succès

Une réponse HTTP **2xx** en moins de **10 secondes**. Tout le reste (4xx, 5xx, délai dépassé, connexion refusée) est un échec. Le corps de la réponse n'est pas utilisé.

## Relances

| Tentative | Délai après l'échec précédent |
| - | - |
| 1 | Immédiate |
| 2 | 1 minute |
| 3 | 5 minutes |
| 4 | 30 minutes |
| 5 | 2 heures |

Au bout de cinq tentatives échouées, l'envoi est marqué échoué dans l'historique. L'en-tête `X-PulseSell-Attempt` indique le numéro de la tentative.

> [!WARNING]
>
> Parce qu'un envoi peut arriver plus d'une fois (réponse perdue, relance), votre traitement doit être **idempotent** : gardez les `event.id` déjà traités et ignorez les doublons.

## Désactivation automatique

Si votre adresse échoue **5 envois de suite**, Pulse-Sell désactive le Pulse pour ne pas marteler un serveur en panne. Vous êtes prévenu de deux façons :

* une **notification** dans le tableau de bord ;
* un **e-mail** à l'adresse de votre compte (jamais le secret de signature).

Une fois votre serveur réparé, réactivez le Pulse (tableau de bord, ou `PATCH /pulses/{id}` avec `{ "status": "active" }`) : le compteur d'échecs repart à zéro.

## Historique

Chaque envoi est conservé avec son statut, le code HTTP reçu, la durée et le nombre de tentatives.

```bash theme={null}
curl "https://api.pulse-sell.com/v1/pulses/cm1pulse01/deliveries?status=failed" \
  -H "Authorization: Bearer $PULSESELL_API_KEY"
```

Filtrez par `status` : `pending`, `success` ou `failed`. Le tableau de bord affiche les mêmes informations dans l'onglet **Livraisons**, avec les chiffres des 7 derniers jours.

## Recommandations pour votre récepteur

**1. Vérifiez la signature**

Avant tout autre travail. Voir [Sécurité](https://docs.pulse-sell.com/pulses/security.md).

**2. Enregistrez l'événement, répondez 200**

Écrivez-le dans une file ou une table, puis répondez immédiatement. Ne faites pas un travail long avant de répondre : au-delà de 10 secondes, c'est un échec et un doublon arrivera.

**3. Traitez en arrière-plan, une seule fois**

Dédoublonnez sur `event.id` (une contrainte d'unicité en base suffit).

**4. Surveillez**

Alertez-vous quand votre propre file d'événements grossit : c'est le premier signe d'un problème.

> [!NOTE]
>
> Les événements ne sont pas garantis dans l'ordre : une relance de `sale.completed` peut arriver après `license.issued`. Fiez-vous aux dates (`created_at`) et aux états lus dans les objets, pas à l'ordre d'arrivée.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.