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

# Événements

> Dites à Lekalao ce qu'une personne a fait : ce sur quoi démarrent les automatisations et se construisent les segments.

Un [événement](/fr/contacts/events) est quelque chose qu'une personne a fait, signalé par votre boutique ou votre application. Il est gardé sur son profil, peut démarrer une automatisation, alimente les segments — et, nommé `order` avec une `value`, compte comme du revenu.

## Enregistrer un événement

```bash theme={null}
curl -X POST https://api.lekalao.com/v1/events \
  -H "Authorization: Bearer $LEKALAO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "ada@example.com",
    "name": "cart.abandoned",
    "reference": "cart-88213",
    "properties": {
      "url": "https://boutique.example.com/panier/88213",
      "total": "27 500 FCFA",
      "items": [
        { "name": "Darjeeling première récolte", "price": "15 000 FCFA", "quantity": 1 },
        { "name": "Théière", "price": "12 500 FCFA", "quantity": 1 }
      ]
    }
  }'
```

| Champ               |                                                                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `email`             | Qui l'a fait. Obligatoire. La personne n'a pas besoin d'être déjà abonnée : l'événement l'attend sur son profil.                                 |
| `name`              | Obligatoire, à vous de le choisir : lettres, chiffres, espaces et `_ . : -`, 100 caractères au plus.                                             |
| `properties`        | Ce qui le décrit. Les e-mails de l'automatisation qu'il démarre les lisent directement : `{{ event.total }}`, `{% for item in event.items %}`.   |
| `value`, `currency` | Un entier dans la plus petite unité (`1250` vaut 12,50 €) et trois lettres. L'un exige l'autre.                                                  |
| `reference`         | Votre propre identifiant. La même référence deux fois n'est enregistrée qu'une fois : le second appel répond `200` avec `"status": "duplicate"`. |
| `occurred_at`       | Maintenant, si absent. Au plus un jour dans le futur.                                                                                            |

La réponse est `201` avec `{"data": {"index": 0, "status": "recorded", "id": "…"}}`.

## Un lot

Jusqu'à **1 000** événements sous `events`. Chaque ligne reçoit sa propre réponse, dans l'ordre d'arrivée — une ligne fausse ne coûte rien aux autres :

```json theme={null}
{
  "data": [
    { "index": 0, "status": "recorded", "id": "01a0…" },
    { "index": 1, "status": "invalid", "errors": { "email": ["Le champ email doit être une adresse e-mail valide."] } }
  ],
  "failed": 1
}
```

L'appel répond `200`, ou `422` quand **toutes** les lignes sont invalides.

## Une commande est du revenu

Un événement nommé `order` porteur d'une `value` est crédité au dernier e-mail que la personne a ouvert ou cliqué dans la fenêtre d'attribution, exactement comme le fait [`POST /v1/conversions`](/fr/developers/conversions). Envoyez l'un ou l'autre pour une vente, pas les deux.

## Ce qu'une personne a fait

```bash theme={null}
curl "https://api.lekalao.com/v1/events?email=ada@example.com&name=order" \
  -H "Authorization: Bearer $LEKALAO_TOKEN" -H "Accept: application/json"
```

Du plus récent au plus ancien, 50 par défaut, 200 au plus (`per_page`). Une adresse inconnue de l'équipe répond une liste vide.

## Champs de contact

Les champs donnent un type à ce que vous envoyez sous `attributes` sur un [abonné](/fr/developers/subscribers). `GET /v1/fields` les liste ; `POST /v1/fields` en crée un (`key`, `label`, `type` : `text`, `number`, `date` ou `boolean`) ; `PATCH` change son libellé ou son type ; `DELETE` le retire. Une clé jamais déclarée crée d'elle-même un champ `text`. Voir [Champs de contact](/fr/contacts/fields).
