Per event vs Batched
Modes d'envoi
Le tag Probr Listener supporte deux modes d'envoi des données vers l'API.
Per Event (recommandé)
Un appel HTTP par événement.
Événement page_view → POST /ingest → Probr API
Événement purchase → POST /ingest → Probr API
Événement add_to_cart → POST /ingest → Probr API
Avantages
- Temps réel : chaque événement apparaît immédiatement dans le dashboard
- Aucune perte de données : pas de buffer en mémoire, donc aucun risque de perte si l'instance sGTM redémarre
- Simplicité : pas de configuration supplémentaire
Inconvénients
- Plus de requêtes HTTP : une requête par événement. Sur un site à très fort trafic (>100k événements/heure), cela génère un volume de requêtes significatif
- Latence réseau : chaque requête a sa propre latence (bien que le tag soit non-bloquant)
Quand l'utiliser
- Sites à trafic faible à moyen (<100k événements/heure)
- Quand le monitoring temps réel est prioritaire
- En phase de debug ou de mise en place initiale
- En cas de doute : commencez par ce mode
Payload envoyé
{
"container_id": "GTM-XXXXXX",
"event_name": "purchase",
"timestamp_ms": 1708790400000,
"tags": [
{
"id": "15",
"name": "GA4 - Event",
"status": "success",
"execution_time": 120
},
{
"id": "22",
"name": "Meta CAPI",
"status": "success",
"execution_time": 350
}
],
"user_data": {
"has_email": true,
"has_phone": false,
"has_first_name": true,
"has_last_name": true,
"has_city": false,
"has_country": true
},
"ecommerce": {
"has_value": true,
"has_currency": true,
"has_transaction_id": true,
"has_items": true
}
}
Batched (trafic élevé)
Accumule N événements en mémoire, puis envoie un résumé agrégé.
Événement 1 ─┐
Événement 2 ─┤
... ─┤── Buffer (templateDataStorage)
Événement 49 ─┤
Événement 50 ─┘──► POST /ingest (batch agrégé) → Probr API
Avantages
- Moins de requêtes HTTP : un seul appel pour N événements
- Charge réseau réduite : adapté aux sites à très fort trafic
- Payload optimisé : les données sont agrégées (compteurs), pas les événements bruts
Inconvénients
- Pas temps réel : les données apparaissent dans le dashboard par fenêtres (tous les N événements)
- Risque de perte : si l'instance sGTM est terminée avant le flush du buffer, les événements en attente sont perdus
- Buffer par instance : chaque instance Cloud Run maintient son propre buffer indépendant
Quand l'utiliser
- Sites à très fort trafic (>100k événements/heure)
- Quand la réduction de charge réseau est prioritaire sur le temps réel
- Environnements stables avec peu de redémarrages d'instances
Configuration du batch
| Paramètre | Description | Par défaut |
|---|---|---|
| Batch Size | Nombre d'événements avant envoi | 50 |
Recommandations de taille de batch :
| Trafic | Batch size recommandé |
|---|---|
| 100k - 500k événements/heure | 50 (défaut) |
| 500k - 1M événements/heure | 100 |
| >1M événements/heure | 200 |
Ne dépassez pas 500 : le risque de perte de données en cas de redémarrage augmente avec la taille du buffer.
Payload envoyé (batch agrégé)
{
"container_id": "GTM-XXXXXX",
"batch": true,
"window_start_ms": 1708790400000,
"window_end_ms": 1708790460000,
"total_events": 50,
"event_counts": {
"page_view": 32,
"purchase": 5,
"add_to_cart": 8,
"begin_checkout": 3,
"view_item": 2
},
"tag_metrics": {
"GA4 - Event": {
"success": 48,
"failure": 2,
"timeout": 0,
"exception": 0,
"total_exec_ms": 6240,
"count": 50
},
"Meta CAPI": {
"success": 45,
"failure": 3,
"timeout": 2,
"exception": 0,
"total_exec_ms": 17500,
"count": 50
}
},
"user_data_quality": {
"email": 42,
"phone": 15,
"address": 38,
"total": 50
},
"ecommerce_quality": {
"value": 5,
"currency": 5,
"transaction_id": 4,
"items": 5,
"total": 5
}
}
Comment lire les métriques agrégées
-
tag_metrics : pour calculer le taux de succès d'un tag, divisez
successparcount- Exemple : Meta CAPI → 45/50 = 90% de succès
- Temps moyen d'exécution :
total_exec_ms / count→ 17500/50 = 350ms
-
user_data_quality : pour calculer le taux de présence email, divisez
emailpartotal- Exemple : 42/50 = 84% des événements ont un email
-
ecommerce_quality : même logique, rapporté aux événements e-commerce uniquement
- Exemple :
transaction_id4/5 = 80% des achats ont un transaction_id
- Exemple :
Comparatif
| Critère | Per Event | Batched |
|---|---|---|
| Temps réel | Oui | Non (par fenêtres) |
| Requêtes HTTP | 1 par événement | 1 par N événements |
| Perte de données possible | Non | Oui (si restart) |
| Configuration | Aucune | Batch size |
| Recommandé pour | La majorité des sites | Sites à très fort trafic |