La collecte côté serveur
Un serveur, un traitement par lots ou le serveur d’une application mobile peut envoyer ses événements directement, sans navigateur : c’est l’équivalent du Measurement Protocol de Google Analytics. Le cas le plus courant : la commande confirmée par votre serveur, une fois le paiement accepté.
POST https://stats.exemple.fr/collect/serverAuthorization: Bearer eoas_…Content-Type: application/json
{ "events": [{ "type": "event", "name": "purchase", "at": "2026-10-04T14:12:00Z", "visitor": "3f9c0d2e8b7a4c1d9e0f1a2b3c4d5e6f.20260912", "props": { "transaction_id": "C-2026-10412", "value": 129.9, "currency": "EUR" }, "items": [{ "id": "KA2", "name": "Kerys Air 2", "price": 125, "quantity": 1 }] }]}La clé d’envoi
Section intitulée « La clé d’envoi »Dans les Réglages du site, section Clés d’envoi serveur, créez une clé : eoas_….
- Elle est affichée une seule fois, puis gardée hachée.
- Elle ne vaut que pour son site, et que pour envoyer : elle ne lit rien.
- Elle se révoque d’un clic ; sa dernière utilisation est affichée, sa création et sa révocation sont inscrites au journal d’audit.
Gardez-la côté serveur, dans la configuration de votre application.
La charge
Section intitulée « La charge »Un envoi porte jusqu’à 100 événements. Chaque événement :
| Champ | Obligatoire | Rôle |
|---|---|---|
type | oui | pageview ou event |
name | pour event | le nom de l’événement, mêmes règles que track |
at | non | l’instant, au format ISO 8601 ; 72 heures dans le passé au plus ; maintenant par défaut |
url, referrer, title | non | la page concernée |
props, items | non | les propriétés et les articles, comme dans le navigateur |
visitor | non | la valeur du cookie _eoa du visiteur |
user_id | non | l’identité du visiteur chez vous (si le site accepte les visiteurs connectés) |
ip, user_agent | non | l’adresse et le navigateur du visiteur, pour le hachage du jour |
language | non | la langue du visiteur |
Un champ absent s’omet : n’envoyez pas null. Il n’y a ni contrôle d’origine ni filtre de
robots : la clé suffit. Le débit est propre à la
clé.
Rattacher l’événement à la visite
Section intitulée « Rattacher l’événement à la visite »Pour que la commande arrive dans la bonne visite — et soit attribuée au bon canal —, le serveur relaie ce qu’il sait du visiteur :
- en mode cookie de mesure : la valeur du cookie
_eoa, que le navigateur envoie avec chaque requête vers votre site ; - sinon : l’adresse IP et l’agent utilisateur du visiteur, qui donnent le même hachage du jour que le script. Ils sont oubliés aussitôt, comme partout ailleurs.
Sans l’un ni l’autre, l’événement est rangé sans visiteur (visitor_kind = none).
await fetch('https://stats.exemple.fr/collect/server', { method: 'POST', headers: { Authorization: `Bearer ${process.env.EODIA_SERVER_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ events: [{ type: 'event', name: 'purchase', visitor: req.cookies._eoa, // mode cookie ip: req.ip, user_agent: req.get('user-agent'), props: { transaction_id: order.id, value: order.total, currency: 'EUR' }, }], }),})<?php$event = [ 'type' => 'event', 'name' => 'purchase', 'ip' => $_SERVER['REMOTE_ADDR'], 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', 'props' => ['transaction_id' => $order->id, 'value' => $order->total, 'currency' => 'EUR'],];if (isset($_COOKIE['_eoa'])) $event['visitor'] = $_COOKIE['_eoa']; // mode cookie$body = json_encode(['events' => [$event]]);$ch = curl_init('https://stats.exemple.fr/collect/server');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('EODIA_SERVER_KEY'), 'Content-Type: application/json'], CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => true,]);curl_exec($ch);import os, requests
event = { "type": "event", "name": "purchase", "ip": request.remote_addr, "user_agent": request.headers.get("User-Agent", ""), "props": {"transaction_id": order.id, "value": order.total, "currency": "EUR"},}if "_eoa" in request.cookies: # mode cookie event["visitor"] = request.cookies["_eoa"]
requests.post( "https://stats.exemple.fr/collect/server", headers={"Authorization": f"Bearer {os.environ['EODIA_SERVER_KEY']}"}, json={"events": [event]}, timeout=5,)curl -X POST https://stats.exemple.fr/collect/server \ -H "Authorization: Bearer $EODIA_SERVER_KEY" \ -H "Content-Type: application/json" \ -d '{"events":[{"type":"event","name":"invoice_paid","props":{"value":49,"currency":"EUR"}}]}'Effacer les données d’une personne
Section intitulée « Effacer les données d’une personne »La même clé peut demander l’effacement des données d’une personne, pour brancher les demandes reçues par votre site :
curl -X POST https://stats.exemple.fr/collect/server/erase \ -H "Authorization: Bearer $EODIA_SERVER_KEY" \ -H "Content-Type: application/json" \ -d '{"user_id":"client-1042"}'L’un des deux, user_id ou visitor (la valeur du cookie). Voir
les droits des personnes.
eodia analytics est un logiciel libre d’Eodia.