MailLandDocs
Analytique

Vue d'ensemble des analytiques

Suivez les performances des e-mails avec des résumés d'événements en temps réel, des statistiques quotidiennes, des taux et des métriques de volume

MailLand fournit des analytiques en temps réel alimentées par ClickHouse pour une agrégation haute performance sur des millions d'événements. Suivez les livraisons, les ouvertures, les clics, les rebonds et les plaintes avec des plages de dates flexibles et un filtrage par type d'e-mail.

Résumé des événements

Obtenez des comptages agrégés d'événements pour une période donnée :

GET https://api.mail.land/v1/transactional/analytics/events/summary
Get event summary
curl "https://api.mail.land/v1/transactional/analytics/events/summary?from=2026-01-18&to=2026-02-17" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Paramètres de requête

ParamètreTypeDéfautDescription
fromdatetimeIl y a 30 joursDate de début (alias : startDate)
todatetimeMaintenantDate de fin (alias : endDate)
emailTypeint-0 = Transactionnel, 1 = Marketing, omettre pour tous
refreshboolfalseContourner le cache et récupérer des données fraîches
Event summary response
{
  "from": "2026-01-18T00:00:00Z",
  "to": "2026-02-17T23:59:59Z",
  "sent": 142500,
  "delivered": 140325,
  "opened": 44878,
  "clicked": 5843,
  "bounced": 1125,
  "complained": 28,
  "source": "clickhouse",
  "data_source": "clickhouse",
  "is_degraded": false,
  "queryTimeMs": 45
}
ChampDescription
sentE-mails acceptés par le MTA
deliveredLivrés avec succès au serveur de messagerie du destinataire
openedMessages uniques avec au moins un événement d'ouverture : inclut l'activité automatisée (voir l'encadré ci-dessous)
clickedMessages uniques avec au moins un événement de clic : inclut l'activité automatisée (voir l'encadré ci-dessous)
bouncedÉchecs permanents : rebonds durs, messages expirés (tentatives épuisées) et rebonds administratifs. Les rebonds hors bande ne sont pas actuellement comptabilisés (lacune connue, suivie séparément)
complainedDestinataires ayant signalé un spam
sourceSource des données : clickhouse, postgres (secours) ou cache
data_source, fallback_reason, is_degradedChamps en snake_case décrivant l'état dégradé/de secours : seul le point de terminaison de résumé des événements bascule vers PostgreSQL, et la réponse est alors marquée is_degraded: true ; tous les autres points de terminaison d'analytiques sont exclusivement ClickHouse
queryTimeMsTemps d'exécution de la requête en millisecondes

Les ouvertures et les clics incluent l'activité automatisée, le préchargement d'Apple Mail Privacy Protection et les scanners de liens de sécurité, que MailLand ne filtre pas aujourd'hui. Considérez ces chiffres comme une limite supérieure de l'engagement humain, et non comme un décompte précis.

La réponse inclut les en-têtes X-Cache: HIT, MISS ou FRESH indiquant si les données ont été servies depuis le cache. Utilisez refresh=true pour forcer une requête fraîche.

Statistiques quotidiennes

Obtenez des ventilations d'événements par jour pour la création de graphiques :

GET https://api.mail.land/v1/transactional/analytics/stats/daily
Get daily stats
curl "https://api.mail.land/v1/transactional/analytics/stats/daily?from=2026-01-18&to=2026-02-17" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParamètreTypeDéfautDescription
fromdatetimeles 7 derniers jours UTC completsDate de début
todatetimeMaintenantDate de fin
emailTypeint-Filtrer par type d'e-mail
Daily stats response
[
  {
    "date": "2026-02-17T00:00:00Z",
    "sent": 4750,
    "delivered": 4680,
    "opened": 1498,
    "clicked": 195,
    "bounced": 38
  },
  {
    "date": "2026-02-16T00:00:00Z",
    "sent": 4320,
    "delivered": 4260,
    "opened": 1380,
    "clicked": 175,
    "bounced": 32
  }
]

Taux

Obtenez les taux de livraison, d'ouverture et de clic calculés en pourcentages :

GET https://api.mail.land/v1/transactional/analytics/rates
Get rates
curl "https://api.mail.land/v1/transactional/analytics/rates?from=2026-01-18&to=2026-02-17" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParamètreTypeDéfautDescription
fromdatetimeIl y a 30 joursDate de début
todatetimeMaintenantDate de fin
emailTypeint-Filtrer par type d'e-mail
Rates response
{
  "from": "2026-01-18T00:00:00Z",
  "to": "2026-02-17T23:59:59Z",
  "deliveryRate": 98.47,
  "openRate": 31.49,
  "clickRate": 13.02
}

Calculs des taux :

TauxFormule
Taux de livraisondelivered / accepted * 100 (plafonné à 100) : pas sent
Taux d'ouvertureopened / delivered * 100 (plafonné à 100)
Taux de clicclicked / delivered * 100 (plafonné à 100) : pas clicked / opened

Les trois requêtes de taux s'exécutent en parallèle pour des performances optimales.

Liens les plus cliqués

Consultez les liens les plus cliqués dans vos e-mails :

GET https://api.mail.land/v1/transactional/analytics/links/top
Get top links
curl "https://api.mail.land/v1/transactional/analytics/links/top?from=2026-01-18&to=2026-02-17&limit=10" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParamètreTypeDéfautDescription
fromdatetimeIl y a 30 joursDate de début
todatetimeMaintenantDate de fin
limitint10Nombre maximum de liens à retourner
emailTypeint-Filtrer par type d'e-mail
Top links response
[
  {
    "url": "https://your-app.com/orders/track",
    "clicks": 2340,
    "uniqueRecipients": 1890
  },
  {
    "url": "https://your-app.com/dashboard",
    "clicks": 1150,
    "uniqueRecipients": 980
  }
]

Volume horaire

Suivez le volume d'envoi par heure, avec une superposition optionnelle de la ligne de base pour la détection d'anomalies :

GET https://api.mail.land/v1/transactional/analytics/volume/hourly?days=7
Get hourly volume
curl "https://api.mail.land/v1/transactional/analytics/volume/hourly?days=7" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
ParamètreTypeDéfautDescription
daysint7Période de rétrospection (1–30)
Hourly volume response
[
  {
    "hour": "2026-02-17T14:00:00Z",
    "sent": 520,
    "baseline": 480.5
  },
  {
    "hour": "2026-02-17T13:00:00Z",
    "sent": 495,
    "baseline": 480.5
  }
]

La baseline est le volume moyen historique pour cette heure de la journée, calculé par VolumeAnomalyWorker. Elle vaut null si aucune donnée de référence n'est encore disponible.

Mise en cache

Les points de terminaison d'analytiques sont mis en cache côté serveur pour minimiser la charge des requêtes :

Point de terminaisonDurée de cache
events/summary (plage par défaut)5 minutes
events/summary (plage personnalisée)3 minutes
stats/daily3 minutes
rates3 minutes
links/top5 minutes
volume/hourly3 minutes

Le point de terminaison events/summary fusionne les requêtes identiques simultanées par serveur : une seule requête atteint ClickHouse par instance de l'API, et tous les appelants de cette instance reçoivent le même résultat. Les autres points de terminaison de cette page ne fusionnent pas les requêtes ; chacune lit le cache puis interroge.

Sources de données

MailLand utilise ClickHouse comme source de données analytiques principale pour une agrégation rapide sur des milliards d'événements.

Seul events/summary bascule vers PostgreSQL lorsque ClickHouse est indisponible ou ne renvoie aucune donnée, et cette réponse est alors marquée is_degraded: true. Tous les autres points de terminaison d'analytiques de cette page sont exclusivement ClickHouse et n'ont pas de secours.

Le champ source dans les réponses indique quel magasin de données a servi le résultat. Le champ queryTimeMs aide à surveiller les performances.

Rétention

Les données d'événements analytiques suivent le forfait de l'espace de travail : les journaux sont conservés 30 jours en Free, 90 jours en Pro et 180 jours en Max.

Étapes suivantes

Sur cette page