Statistiques des messages
messages:list
Anchor link toAffiche la liste des messages envoyés.
POST https://api.pushwoosh.com/api/v2/messages:list
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Oui | Jeton API serveur. Doit être fourni dans le format suivant : Authorization: Api <Server Key>. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
platforms | Non | Array | Plateformes de message. Valeurs possibles : "IOS", "ANDROID", "OSX", "WINDOWS", "AMAZON", "SAFARI", "CHROME", "FIREFOX", "IE", "EMAIL", "HUAWEI_ANDROID", "SMS". |
date_range | Non | Object | Période de rapport, filtrée sur la date de création du message. date_from et date_to doivent suivre le format YYYY-MM-DD (par ex., "2000-01-01") ; les deux jours sont inclus en totalité, donc date_from et date_to définis à la même date retournent cette journée entière. Les dates sont interprétées en UTC, pas dans le fuseau horaire de votre compte. |
campaign | Non | String | Code de campagne |
filters | Oui | Object | Filtres de message. |
source | Non | String | Source du message. Par exemple : AB_TEST, API, AUTO_PUSH, CP, CSV, CUSTOMER_JOURNEY, EMAIL_API, EMAIL_CP, GEO_ZONE, PUSH_ON_EVENT, RSS. |
messages_codes | Non | Array | Codes de message obtenus à partir des réponses de l’API /createMessage. |
messages_ids | Non | Array | ID de message obtenus de l’historique des messages |
message_type | Non | String | Filtre du flux de messages. Valeurs possibles : "TRANSACTIONAL", "BROADCAST", "ALL". Vaut "ALL" par défaut si omis. |
params | Non | Object | Spécifiez s’il faut afficher les détails et les métriques du message. Définissez with_details: true pour inclure l’objet "details" et with_metrics: true pour inclure l’objet "metrics" dans la réponse. |
application | Oui | String | Code d’application Pushwoosh. |
per_page | Non | Integer | Nombre de résultats par page, de 1 à 499. Omettez le paramètre pour obtenir la taille de page par défaut de 500 résultats ; passer 500 ou plus explicitement est rejeté avec 400. |
page | Non | Integer | Numéro de page basé sur zéro pour la pagination. Voir la limite de pagination profonde ci-dessous. |
message_type détermine aussi jusqu’où remonte une requête sans date.
Exemple de requête
Anchor link to{ "filters": { "platforms": [], // IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, HUAWEI_ANDROID, SMS "date_range": { "date_from": "string", // Format requis : 2000-01-01 "date_to": "string" // Format requis : 2000-01-01 }, "source": "API", // AB_TEST, API, AUTO_PUSH, CP, CSV, CUSTOMER_JOURNEY, EMAIL_API, EMAIL_CP, GEO_ZONE, PUSH_ON_EVENT, RSS "campaign": "string", // Code de campagne "messages_ids": [], // ID de message "messages_codes": [], // Codes de message "message_type": "ALL", // TRANSACTIONAL, BROADCAST, ALL (par défaut) "application": "string" // Code d'application Pushwoosh }, "params": { "with_details": true, // Ajouter les détails du message à la réponse (objet "details") "with_metrics": true // Ajouter les métriques du message à la réponse (objet "metrics") }, "per_page": 20, // <= 499 "page": 0}Codes de réponse et exemples
{ "total": 0, "items": [{ "id": 0, "code": "string", "created_date": "string", "send_date": "string", "status": "string", "platforms": [], "source": "string", "push_info": { "details": { "title": "string", "filter_name": "string", "filter_code": "string", "content": { "key": "value" }, "platform_parameters": { "android_header": "string", "android_root_params": { "key": "value" }, "ios_title": "string", "ios_subtitle": "string", "ios_root_params": { "key": "value" }, "chrome_header": "string", "chrome_root_params": { "key": "value" }, "firefox_header": "string", "firefox_root_params": { "key": "value" }, "conditions": [ // conditions de tag (voir /developer/api-reference/messages-api/#tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND", // opérateur logique pour les tableaux de conditions ; valeurs possibles : AND, OR "data": { "key": "value" } }, "follow_user_timezone": true }, "metrics": [{ "sends": 0, "opens": 0, "deliveries": 0, "inbox_opens": 0, "unshowable_sends": 0, "errors": 0, "platform": 0 }] }, "email_info": { "details": { "template": "string", "filter_name": "string", "filter_code": "string", "subject": { "key": "value" }, "from_name": "string", "from_email": "string", "reply_name": "string", "reply_email": "string", "follow_user_timezone": true, "conditions": [ // conditions de tag (voir Messages-api - tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND" // opérateur logique pour les tableaux de conditions ; valeurs possibles : AND, OR }, "metrics": [{ "sends": 0, "opens": 0, "deliveries": 0, "hard_bounces": 0, "soft_bounces": 0, "rejects": 0, "confirmed_sends": 0, "unsubs": 0, "complaints": 0, "errors": 0 }] } }]}date_range couvre plus de 30 jours :
{ "error": "exceeded the maximum date interval. Max interval: 30 days"}page × per_page dépasse la limite de pagination profonde :
{ "error": "requested result window is too large, narrow the date range"}{ "error": "account not found"}totalsByIntervals
Anchor link toRetourne les métriques et les données de conversion basées sur le code du message, agrégées par heure.
POST https://api.pushwoosh.com/api/v2/statistics/messages/totalsByIntervals
Autorisation
Anchor link toL’autorisation est gérée via le jeton d’accès API dans l’en-tête de la requête.
Paramètres du corps de la requête
Anchor link to| Nom du paramètre | Type | Description | Requis |
|---|---|---|---|
message_code | string | Code de message obtenu à partir des réponses de l’API /createMessage. | Oui |
platforms | [int] | Plateformes | Non |
Exemple de requête
Anchor link to{ "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // requis. Identifiant unique du message "platforms": [1, 3, 7, 10, 11, 12] // optionnel. Liste des codes de plateforme}Champs de la réponse
Anchor link to| Nom | Type | Description |
|---|---|---|
metrics | array | Contient un tableau de métriques de message |
timestamp | string | L’heure de la métrique. |
platform | int | Le code de la plateforme (par ex., iOS, Android). |
sends | string | Le nombre de messages envoyés. |
opens | string | Le nombre de messages ouverts. |
deliveries | string | Le nombre de messages livrés. |
inbox_opens | string | Le nombre d’ouvertures de la boîte de réception. |
unshowable_sends | string | Le nombre de messages acceptés pour les appareils dont les notifications sont désactivées dans les paramètres de l’OS. Aucune bannière n’est affichée, mais le message atteint quand même l’application, et il apparaît dans la Boîte de réception des messages si l’envoi a l’option Enregistrer le message dans la boîte de réception activée. Comptabilisé comme des envois réussis, pas comme des erreurs. |
errors | string | Le nombre d’erreurs. |
conversion | object | Contient des données de conversion |
sends | string | Le nombre total de messages envoyés. |
opens | string | Le nombre total de messages ouverts. |
events | array | Un tableau d’événements avec leurs statistiques |
name | string | Le nom de l’événement (par ex., ajout au panier). |
hits | string | Le nombre de hits. |
conversion | float | Le taux de conversion par rapport aux ouvertures. |
revenue | float | Le revenu (uniquement pour les événements avec les attributs __amount et __currency). |
Exemple de réponse
Anchor link to{ "metrics": [{ "timestamp": "2024-08-03 15:00:00", // Horodatage des métriques au format "YYYY-MM-DD HH:MM:SS" "platform": 3, // Code de la plateforme "sends": "55902", // Nombre de messages envoyés "opens": "382", // Nombre de messages ouverts "deliveries": "22931", // Nombre de messages livrés "inbox_opens": "0", // Nombre de messages ouverts dans la boîte de réception "unshowable_sends": "2", // Envoyé aux appareils avec les notifications désactivées, aucune bannière affichée "errors": "0" // Nombre d'erreurs rencontrées }], "conversion": { "sends": "55902", // Nombre total de messages envoyés "opens": "772", // Nombre total de messages ouverts "events": [{ "name": "cart_add", // Nom de l'événement "hits": "96", // Nombre de hits pour l'événement "conversion": 0.12, // Taux de conversion par rapport aux ouvertures "revenue": 0 // Revenu généré par l'événement (uniquement pour les événements avec des attributs de montant/devise) }] }}Entonnoir de livraison
Anchor link toUtilisez l’entonnoir de livraison pour voir à quelle étape un message ou une campagne a perdu son audience (erreurs, non-livraison, non-ouverture) et pourquoi. Contrairement à totalsByIntervals, qui renvoie des totaux horaires, l’entonnoir décompose l’audience par étape et par motif d’abandon, une entrée par canal, avec une ventilation par plateforme. La séquence des étapes diffère selon le canal : voir stage sous Champs de GetDeliveryFunnelResponse ci-dessous pour savoir quelles étapes chaque canal comporte. Les deux méthodes nécessitent un jeton d’API serveur.
Les deux méthodes renvoient la même forme de réponse, GetDeliveryFunnelResponse, décrite une seule fois ci-dessous.
getDeliveryFunnel
Anchor link toRenvoie l’entonnoir d’un message.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getDeliveryFunnel
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Oui | Jeton d’API serveur. Doit être fourni au format suivant : Authorization: Api <Server Key>. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
message_code | Oui | Chaîne | Code du message obtenu des réponses de l’API /createMessage. |
platforms | Non | Tableau d’entiers | Codes de plateforme pour filtrer l’entonnoir. Omettre pour renvoyer toutes les plateformes sur lesquelles le message a été envoyé. |
Exemple de requête
Anchor link to{ "message_code": "A444-AAABBBCC-00112233", // Code du message provenant de /createMessage "platforms": [1, 14] // Facultatif. iOS, Email}Champs de GetDeliveryFunnelResponse
Anchor link to| Nom | Type | Description |
|---|---|---|
channels | Tableau | Une entrée par canal sur lequel le message a été envoyé. |
window_from, window_to | Chaîne ou null | La période couverte par l’entonnoir, selon les données disponibles. null lorsque funnel_state n’est pas FUNNEL_STATE_READY. |
funnel_state | Chaîne | FUNNEL_STATE_READY : l’entonnoir ci-dessous est renseigné. FUNNEL_STATE_NO_EVENTS : rien ne s’est encore produit pour ce message. FUNNEL_STATE_EXPIRED : le message a été envoyé il y a trop longtemps. Ses données d’entonnoir ne sont plus disponibles. channels est vide dans les deux cas hors READY. Un message_code inconnu, étranger ou supprimé n’est aucun de ces états, voir la réponse 404 ci-dessous. |
channels[]
| Nom | Type | Description |
|---|---|---|
channel | Chaîne | CHANNEL_MOBILE_PUSH (iOS, macOS, Android, Amazon, Huawei), CHANNEL_WEB_PUSH (Safari, Chrome, Firefox), CHANNEL_EMAIL, CHANNEL_OTHER (SMS, messageries, Wallet, Windows, Baidu, Xiaomi), CHANNEL_APP_INBOX. |
funnel | Tableau | Étapes de l’entonnoir pour ce canal, voir funnel[] ci-dessous. |
deliveries_form | Chaîne | Quelle ventilation porte l’étape STAGE_DELIVERIES : DELIVERIES_FORM_PER_DEVICE (quatre lignes disjointes, réparties selon que l’appareil afficherait une alerte et qu’il ait confirmé) ou DELIVERIES_FORM_BASIC (deux lignes, sans répartition par état d’alerte). |
basic_form_reason | Chaîne | Significatif uniquement lorsque deliveries_form vaut DELIVERIES_FORM_BASIC : BASIC_FORM_REASON_RETENTION (le message est trop ancien pour une ventilation par appareil), BASIC_FORM_REASON_UNAVAILABLE (une ventilation par appareil n’est pas disponible pour ce compte ou ce message, par exemple un message système), BASIC_FORM_REASON_NO_DELIVERIES (rien accepté pour l’instant), BASIC_FORM_REASON_NOT_APPLICABLE (le canal n’a aucun état d’alerte, par exemple email ou App Inbox). Sinon BASIC_FORM_REASON_UNSPECIFIED : ignorez ce champ sauf si deliveries_form vaut DELIVERIES_FORM_BASIC. |
confirmed_deliveries | Objet | count et une ventilation par platforms des livraisons confirmées. Non plafonné au compte de STAGE_DELIVERIES, il peut donc en différer. |
funnel[] (une étape)
| Nom | Type | Description |
|---|---|---|
stage | Chaîne | STAGE_AUDIENCE (tous ceux ciblés par le message), STAGE_SENT (accepté par le service push ou le fournisseur email), STAGE_ERRORS (rejeté avant d’être accepté), STAGE_DELIVERIES (accepté, réparti par confirmation), STAGE_OPENED (appareils uniques ayant ouvert, ou pour App Inbox les entrées que l’utilisateur a ouvertes en appuyant dessus), STAGE_INTERACTIONS (email uniquement : clic, désabonnement, plainte), STAGE_REACHED/STAGE_READ (App Inbox uniquement, remplacent STAGE_DELIVERIES). |
count | Chaîne | Total de l’étape, sous forme de chaîne numérique. |
pieces | Tableau | Ventilation propre à l’étape. Vide sur STAGE_ERRORS, qui utilise errors à la place. Chaque élément a un kind (KIND_PASSED est passé à l’étape suivante, KIND_REASON non, KIND_SUBSET chevauche les deux autres et n’est jamais additionné), une category (voir la liste des valeurs ci-dessous pour chaque étape), un count et une ventilation par platforms. |
errors | Tableau | STAGE_ERRORS uniquement : category (voir la liste des valeurs ci-dessous), count, platforms, et codes : les codes d’erreur bruts du fournisseur regroupés dans cette catégorie (platform, code, name, count). |
platforms | Tableau | Le total de l’étape, réparti par plateforme. |
Valeurs de category
STAGE_AUDIENCE :
ELIGIBLE_AUDIENCE(passé) : non exclu par l’un des motifs ci-dessous.FREQUENCY_CAPPING: ignoré par la limitation de fréquence.CONTROL_GROUP: retenu comme groupe témoin.UNSUBSCRIBED: le destinataire s’était désabonné.BOUNCED: l’adresse du destinataire avait déjà rebondi.COMPLAINT: le destinataire avait déjà marqué un message comme spam.FILTERED_BY_CATEGORY: le destinataire s’était désinscrit de cette catégorie de message.
STAGE_ERRORS :
NO_TOKEN: l’appareil n’avait ni jeton push ni adresse pour l’envoi.NO_DEVICE: aucun appareil correspondant n’a été trouvé.PLATFORM_DISABLED: la plateforme est désactivée pour cette application.INVALID_TOKEN: le fournisseur a rejeté le jeton ou l’adresse de l’appareil comme invalide.QUOTA_EXCEEDED: le fournisseur a limité le débit d’envoi.INVALID_CONTENT: le message n’a pas pu être envoyé tel que composé. Le plus souvent, le modèle lui-même n’a pas pu être construit, par exemple un bloc Connected Content ou Liquid défectueux, plutôt qu’un rejet par le fournisseur.INVALID_CONFIGURATION: la configuration propre du fournisseur du compte est défectueuse, par exemple des identifiants incorrects, un projet Firebase supprimé, ou un topic APNs non autorisé.PROVIDER_ERROR: le fournisseur a renvoyé une erreur en dehors des catégories ci-dessus.INTERNAL_ERROR: Pushwoosh n’a pas réussi à traiter l’envoi.UNCLASSIFIED_ERROR: un abandon qui ne correspond à aucune des catégories ci-dessus. Devrait être rare.
STAGE_DELIVERIES, DELIVERIES_FORM_PER_DEVICE :
DISPLAYABLE_CONFIRMED(passé) : l’appareil a affiché une alerte et confirmé la réception.DISPLAYABLE_NO_CONFIRMATION: l’appareil afficherait une alerte mais n’a pas encore confirmé la réception.NOT_DISPLAYABLE_CONFIRMED(passé) : un push silencieux a confirmé la réception.NOT_DISPLAYABLE_NO_CONFIRMATION: un push silencieux n’a pas encore confirmé la réception.
STAGE_DELIVERIES, DELIVERIES_FORM_BASIC :
CONFIRMED_BY_DEVICE(passé) : l’appareil a confirmé la réception.NO_CONFIRMATION: pas encore confirmé.
L’email ajoute en plus, en tant que sous-ensemble chevauchant CONFIRMED_BY_DEVICE :
BOUNCED_HARD(sous-ensemble) : l’adresse est définitivement non livrable.BOUNCED_SOFT(sous-ensemble) : l’adresse est temporairement non livrable, par exemple une boîte pleine.
BOUNCED_HARD peut également se diviser en ces lignes de sous-ensemble :
BOUNCED_HARD_GENERAL: définitivement non livrable, aucun motif plus précis disponible.BOUNCED_HARD_MAILBOX_FULL: la boîte de réception du destinataire est pleine.BOUNCED_HARD_MAILBOX_INACTIVE: la boîte de réception du destinataire n’existe plus.BOUNCED_HARD_SUPPRESSED: le fournisseur a mis l’adresse sur liste noire.BOUNCED_HARD_UNDETERMINED: définitivement non livrable, motif non déterminé.
BOUNCED_SOFT peut également se diviser en ces lignes de sous-ensemble :
BOUNCED_SOFT_GENERAL: temporairement non livrable, aucun motif plus précis disponible.BOUNCED_SOFT_MAILBOX_FULL: la boîte de réception du destinataire était pleine au moment de l’envoi.BOUNCED_SOFT_CONTENT_REJECTED: le serveur de messagerie du destinataire a rejeté le contenu du message.BOUNCED_SOFT_SPAM: le serveur de messagerie du destinataire a signalé le message comme spam.BOUNCED_SOFT_MESSAGE_TOO_LARGE: le message était trop volumineux pour la boîte de réception du destinataire.BOUNCED_SOFT_ATTACHMENT_REJECTED: le serveur de messagerie du destinataire a rejeté une pièce jointe.BOUNCED_SOFT_CUSTOM_TIMEOUT_EXCEEDED: le serveur de messagerie du destinataire a mis trop de temps à répondre.BOUNCED_SOFT_UNDETERMINED: temporairement non livrable, motif non déterminé.BOUNCED_UNDETERMINED: le serveur du destinataire a accepté l’e-mail mais n’a jamais confirmé la livraison ; le résultat est inconnu et l’adresse n’est pas supprimée. Compte comme un rebond doux.
BOUNCED_UNCLASSIFIED est un rebond, dur ou doux, qui ne correspond à aucun sous-type ci-dessus. Devrait être rare, et n’est pas une valeur sur laquelle construire une logique.
STAGE_OPENED, email uniquement (les autres canaux rapportent le count de l’étape sans éléments) :
OPENED_BY_RECIPIENT(passé) : ouvert par une personne.MACHINE_OPENS_ONLY: ouvert uniquement par un scanner automatisé.OPEN_TYPE_UNKNOWN: n’a pas pu être classé comme personne ou scanner.MACHINE_OPENS_AMPP(sous-ensemble) : remplace les trois lignes ci-dessus lorsque la répartition personne/scanner n’est pas disponible pour ce message. Compte à la place le propre nombre d’ouvertures automatiques d’Apple Mail Privacy Protection, et chevauche le total de l’étape.
STAGE_INTERACTIONS, email uniquement :
CLICKED_ONLY(passé) : a cliqué sur un lien, est resté abonné.CLICKED_AND_UNSUBSCRIBED: a cliqué sur un lien et s’est désabonné.CLICKED_AND_COMPLAINED: a cliqué sur un lien et a marqué le message comme spam.UNSUBSCRIBED_WITHOUT_CLICK: s’est désabonné sans cliquer.COMPLAINED_WITHOUT_CLICK: a marqué le message comme spam sans cliquer.
STAGE_REACHED, App Inbox uniquement :
REACHED(passé) : l’entrée a été récupérée par l’application au moins une fois.NOT_FETCHED_YET: pas encore récupérée.
STAGE_READ, App Inbox uniquement :
READ(passé) : marquée comme lue.DISMISSED_UNREAD: supprimée par l’utilisateur sans avoir été lue.UNREAD: toujours non lue dans la boîte de réception.EXPIRED_UNREAD: identique àUNREAD, mais l’entrée a depuis expiré et disparu de la boîte de réception.DISMISSED(sous-ensemble) : chaque entrée supprimée, lue ou non. ChevaucheREADetDISMISSED_UNREAD.
Codes de réponse
{ "channels": [{ "channel": "CHANNEL_MOBILE_PUSH", "funnel": [ { "stage": "STAGE_AUDIENCE", "count": "10000", "pieces": [ { "kind": "KIND_PASSED", "category": "ELIGIBLE_AUDIENCE", "count": "10000", "platforms": [{ "platform": 1, "count": "10000" }] } ], "errors": [], "platforms": [{ "platform": 1, "count": "10000" }] }, { "stage": "STAGE_SENT", "count": "9820", "pieces": [], "errors": [], "platforms": [{ "platform": 1, "count": "9820" }] }, { "stage": "STAGE_ERRORS", "count": "180", "pieces": [], "errors": [ { "category": "INVALID_TOKEN", "count": "180", "platforms": [{ "platform": 1, "count": "180" }], "codes": [ { "platform": 1, "code": 1002, "name": "BadDeviceToken", "count": "180" } ] } ], "platforms": [{ "platform": 1, "count": "180" }] }, { "stage": "STAGE_DELIVERIES", "count": "9820", "pieces": [ { "kind": "KIND_PASSED", "category": "DISPLAYABLE_CONFIRMED", "count": "8000", "platforms": [{ "platform": 1, "count": "8000" }] }, { "kind": "KIND_REASON", "category": "DISPLAYABLE_NO_CONFIRMATION", "count": "820", "platforms": [{ "platform": 1, "count": "820" }] }, { "kind": "KIND_PASSED", "category": "NOT_DISPLAYABLE_CONFIRMED", "count": "900", "platforms": [{ "platform": 1, "count": "900" }] }, { "kind": "KIND_REASON", "category": "NOT_DISPLAYABLE_NO_CONFIRMATION", "count": "100", "platforms": [{ "platform": 1, "count": "100" }] } ], "errors": [], "platforms": [{ "platform": 1, "count": "9820" }] }, { "stage": "STAGE_OPENED", "count": "3120", "pieces": [], "errors": [], "platforms": [{ "platform": 1, "count": "3120" }] } ], "deliveries_form": "DELIVERIES_FORM_PER_DEVICE", "basic_form_reason": "BASIC_FORM_REASON_UNSPECIFIED", "confirmed_deliveries": { "count": "8900", "platforms": [{ "platform": 1, "count": "8900" }] } }], "window_from": "2026-09-01T00:00:00Z", "window_to": "2026-09-01T00:05:00Z", "funnel_state": "FUNNEL_STATE_READY"}Un tableau channels vide avec funnel_state: "FUNNEL_STATE_NO_EVENTS" signifie que rien ne s’est encore produit pour ce message. Ce n’est pas une erreur. Un message_code envoyé il y a trop longtemps pour que les données d’entonnoir soient disponibles renvoie également 200, avec un tableau channels vide et funnel_state: "FUNNEL_STATE_EXPIRED".
Un message_code inconnu, appartenant à un autre compte, ou déjà supprimé :
{ "error": "message not found"}{ "error": "invalid auth token"}getCampaignDeliveryFunnel
Anchor link toFait la somme de getDeliveryFunnel sur les messages d’une campagne. Les comptages uniques sont calculés par message : un abonné atteint par plusieurs messages de la campagne est compté une fois pour chaque message.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getCampaignDeliveryFunnel
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Oui | Jeton d’API serveur. Doit être fourni au format suivant : Authorization: Api <Server Key>. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
campaign_code | Oui | Chaîne | Code de campagne. |
platforms | Non | Tableau d’entiers | Codes de plateforme pour filtrer l’entonnoir. Omettre pour renvoyer toutes les plateformes sur lesquelles la campagne a été envoyée. |
Exemple de requête
Anchor link to{ "campaign_code": "AAAAA-XXXXX", // Code de campagne "platforms": [1, 14] // Facultatif. iOS, Email}Réponse
Anchor link toMême forme que GetDeliveryFunnelResponse ci-dessus.
Codes de réponse
Une audience vide pour le campaign_code et les platforms donnés renvoie également 200 avec un tableau channels vide et funnel_state: "FUNNEL_STATE_NO_EVENTS". Une campagne envoyée il y a trop longtemps pour que les données d’entonnoir soient disponibles renvoie également 200, avec un tableau channels vide et funnel_state: "FUNNEL_STATE_EXPIRED". Aucun des deux n’est une erreur.
Un campaign_code inconnu, appartenant à un autre compte, ou dont tous les messages ont été supprimés. Une campagne dont seule une partie des messages a été supprimée n’est pas affectée : les messages supprimés comptent toujours pour son entonnoir.
{ "error": "campaign not found"}{ "error": "invalid auth token"}getMessageLog
Anchor link toAffiche des informations détaillées sur les messages envoyés.
POST https://api.pushwoosh.com/api/v2/statistics/getMessageLog
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Requis | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
message_id | Non | Integer | Sélectionne les événements de message par ID de message obtenu de l’historique des messages. Exemple : 12345678900. |
message_code | Non | String | Sélectionne les événements de message par Code de message obtenu des réponses de l’API /createMessage. Exemple : "A444-AAABBBCC-00112233". |
campaign_code | Non | String | Sélectionne les événements de message par Code de campagne spécifié dans la charge utile de votre message. Exemple : "AAAAA-XXXXX". |
hwid | Non | String ou Array | Sélectionne les événements de message par HWID (Hardware ID) ou un tableau de HWID. |
date_from | Requis si message_id, message_code, ou campaign_code n’est pas fourni | Datetime | Date de début pour le filtrage des messages. Format : "YYYY-MM-DD HH:MM:SS". Exemple : "2000-01-25 00:00:00". |
date_to | Requis si message_id, message_code, ou campaign_code n’est pas fourni | Datetime | Date de fin pour le filtrage des messages. Format : "YYYY-MM-DD HH:MM:SS". Exemple : "2000-01-26 00:00:00". |
limit | Non | Integer | Nombre maximum d’événements de message retournés dans une seule réponse. Valeur maximale : 100000. |
pagination_token | Non | String | Jeton de pagination obtenu d’une réponse /getMessageLog précédente. Utilisez-le pour récupérer des résultats supplémentaires. |
user_id | Non | String | Sélectionne les événements de message par un User ID personnalisé. Voir /registerUser pour plus de détails. |
application_code | Oui | String | Sélectionne les événements de message par Code d’application Pushwoosh |
actions | Non | Array | Filtre les résultats par actions de message spécifiques. Valeurs possibles : "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". Les événements "create" sont exclus de la réponse par défaut. Incluez "create" dans ce tableau pour les voir. Les événements "delivered" nécessitent en plus que les statistiques de livraison soient activées sur le compte. |
platforms | Non | Array | Tableau des plateformes cibles pour filtrer les résultats. Valeurs possibles : "unknown", "ios", "blackberry", "android", "windows phone", "osx", "windows", "amazon", "safari", "chrome", "firefox", "ie", "email", "fb messenger", "baidu android", "huawei android", "sms", "xiaomi", "web", "whatsapp", "line", "kakao", "telegram", "apple wallet", "google wallet", "viber". |
message_type | Non | String | Filtre les résultats par flux de messages. "all" (par défaut si omis) retourne tout, "broadcast" retourne uniquement les messages de masse (message_id != 0), "transactional" retourne uniquement les messages avec message_id = 0, y compris ceux envoyés depuis Customer Journey. |
Exemple de requête
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/getMessageLog' \--header 'Authorization: Key API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "pagination_token": "PAGINATION_TOKEN_FROM_PREVIOUS_RESPONSE", // optionnel, jeton pour la pagination "limit": 1000, // optionnel, le nombre max d'entrées pour une seule réponse "application_code": "XXXXX-XXXXX", // Code d'application Pushwoosh "message_code": "A444-AAABBBCC-00112233", // optionnel, code de message obtenu de la requête /createMessaage "message_id": 1234567890, // optionnel, ID de message obtenu du Panneau de Contrôle Pushwoosh "campaign_code": "AAAAA-XXXXX", // optionnel, code d'une campagne pour obtenir le journal "hwid": "aaazzzqqqqxxx", // optionnel, ID matériel d'un appareil spécifique ciblé par un message "user_id": "user_123", // optionnel, ID d'un utilisateur ciblé par le message "date_from": "2000-01-25 00:00:00", // optionnel, début de la période des statistiques "date_to": "2000-02-10 23:59:59", // optionnel, fin de la période des statistiques "actions": ["opened", "inbox_opened"], // optionnel, utilisé pour la filtration des résultats. Valeurs possibles : "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". La réponse inclura tous les messages avec la ou les actions spécifiées. "platforms": ["ios", "chrome"], // optionnel, utilisé pour la filtration des résultats, en minuscules uniquement. Valeurs possibles : "unknown", "ios", "blackberry", "android", "windows phone", "osx", "windows", "amazon", "safari", "chrome", "firefox", "ie", "email", "fb messenger", "baidu android", "huawei android", "sms", "xiaomi", "web", "whatsapp", "line", "kakao", "telegram", "apple wallet", "google wallet", "viber" "message_type": "broadcast" // optionnel, "all" (par défaut), "broadcast" (message_id != 0), ou "transactional" (message_id = 0, inclut les envois de Customer Journey)}'Codes de réponse et exemples
{ "pagination_token": "PAGINATION_TOKEN_FOR_NEXT_REQUEST", "data": [{ "timestamp": "2000-01-25T11:18:47Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "sent", "status": "success", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:18:49Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "delivered", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:19:23Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "opened", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:19:30Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "reject", "status": "failed", "error_reason": "invalid device token", "payload": "SOME_PAYLOAD_STRING" }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}Chaque entrée dans data contient également error_reason (chaîne de caractères, remplie avec la raison de l’échec lorsque status est "failed") et un payload optionnel (chaîne de caractères).
Une page de réponse peut revenir plus courte que la limit demandée. Cela ne signifie pas en soi que l’exportation est terminée.
Statistiques des e-mails
Anchor link tolinksInteractions
Anchor link toAffiche les statistiques sur les clics de liens dans les e-mails
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
date_range | Non | Object | Définit la période de rapport. Contient date_from et date_to. |
filters | Oui | Object | Filtres d’e-mail. |
application | Oui | String | Code d’application Pushwoosh (alternativement, spécifiez campaign, messages_ids, ou message_codes). |
messages_codes | Oui | Array | Codes de message (alternativement, spécifiez application, campaign, ou messages_ids). |
campaign | Oui | String | Code de campagne (alternativement, spécifiez application, messages_ids, ou message_codes). |
messages_ids | Oui | Array | ID de message (alternativement, spécifiez application, campaign, ou message_codes). |
link_template | Requis si application ou campaign est spécifié. | String | Filtre les interactions de liens d’e-mail par mot-clé. Seuls les liens qui incluent le texte spécifié dans leur URL seront retournés dans la réponse de l’API. Par exemple, si votre e-mail contient des liens comme https://example.com/news et https://example.com/shop, définir “link_template”: “shop” retournera uniquement les interactions pour https://example.com/shop. |
email_content_code | Non | String | Identifiant unique pour le contenu de l’e-mail. |
params | Non | Object | Définit des options de réponse supplémentaires. Inclut with_full_links, qui ajoute une liste de liens complets avec des statistiques. |
Exemple de requête
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions' \--header 'Authorization: Api API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "filters": { "date_range": { "date_from": "string", // Format requis : 2000-01-01 "date_to": "string" // Format requis : 2000-01-01 }, "campaign": "string", // Code de campagne (vous pouvez spécifier application, messages_ids, ou message_codes à la place) "application": "string", // Code d'application (vous pouvez spécifier campaign, messages_ids, ou message_codes à la place) "messages_ids": [], // ID de message (vous pouvez spécifier application, campaign, ou message_codes à la place) "messages_codes": [], // Codes de message (vous pouvez spécifier application, campaign, ou message_ids à la place) "link_template": "string", // Modèle de lien (requis si application ou campaign est spécifié) "email_content_code": "string" // Identifiant unique pour le contenu de l'e-mail. }, "params": { "with_full_links": true // Spécifiez s'il faut afficher des statistiques détaillées. Une liste de liens complets avec des statistiques sera passée dans le tableau full_links. }}'Codes de réponse et exemples
Anchor link to{ "items": [{ "template": "string", "link": "string", "title": "string", "clicks": 0, "full_links": [{ "full_link": "string", "clicks": 0 }] }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}linksInteractionsDevices
Anchor link toAffiche les utilisateurs qui ont cliqué sur des liens dans les e-mails
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices
En-têtes
Anchor link to| Nom | Requis | Description |
|---|---|---|
Authorization | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
Paramètres du corps de la requête
Anchor link to| Nom | Requis | Type | Description |
|---|---|---|---|
date_range | Non | Object | Définit la période de rapport. Contient date_from et date_to. |
filters | Oui | Object | Filtres d’e-mail. |
application | Oui | String | Code d’application Pushwoosh (alternativement, spécifiez campaign, messages_ids, ou message_codes). |
messages_codes | Oui | Array | Codes de message (alternativement, spécifiez application, campaign, ou messages_ids). |
campaign | Oui | String | Code de campagne (alternativement, spécifiez application, messages_ids, ou message_codes). |
messages_ids | Oui | Array | ID de message (alternativement, spécifiez application, campaign, ou message_codes). |
link_template | Requis si application ou campaign est spécifié. | String | Filtre les interactions de liens d’e-mail par mot-clé. Seuls les liens qui incluent le texte spécifié dans leur URL seront retournés dans la réponse de l’API. Par exemple, si votre e-mail contient des liens comme https://example.com/news et https://example.com/shop, définir “link_template”: “shop” retournera uniquement les interactions pour https://example.com/shop. |
email_content_code | Non | String | Identifiant unique pour le contenu de l’e-mail. |
page | Non | Integer | Numéro de page pour la pagination. |
per_page | Non | Integer | Nombre de résultats par page (≤ 1000). |
Exemple de requête
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices' \--header 'Authorization: Api API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "filters": { "date_range": { "date_from": "string", // Format requis : 2000-01-01 "date_to": "string" // Format requis : 2000-01-01 }, "campaign": "string", // Code de campagne (vous pouvez spécifier application, messages_ids, ou message_codes à la place) "application": "string", // Code d'application (vous pouvez spécifier campaign, messages_ids, ou message_codes à la place) "messages_ids": [], // ID de message (vous pouvez spécifier application, campaign, ou message_codes à la place) "messages_codes": [], // Codes de message (vous pouvez spécifier application, campaign, ou message_ids à la place) "link_template": "string", // Modèle de lien (requis si application ou campaign est spécifié) "email_content_code": "string" // Identifiant unique pour le contenu de l'e-mail. }, "per_page": 100, "page": 0}'Codes de réponse et exemples
Anchor link to{ "total": 0, "items": [{ "timestamp": "string", "link": "string", "hwid": "string" }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}bouncedEmails
Anchor link toPOST https://api.pushwoosh.com/api/v2/statistics/emails/bouncedEmails
Fournit des données sur les plaintes par e-mail, les soft bounces et les hard bounces, y compris la date, l’adresse e-mail et la raison de chaque rebond.
Autorisation
Anchor link toL’autorisation est gérée via le jeton d’accès API dans l’en-tête de la requête.
Paramètres du corps de la requête
Anchor link to| Nom du paramètre | Type | Description | Requis |
|---|---|---|---|
application | string | Code d’application Pushwoosh | Oui |
message_code | string | Code de message. | Requis si date range ou campaign n’est pas fourni |
campaign | string | Code de campagne. | Requis si message_code ou date range n’est pas fourni |
date_from | string | La date de début pour les données au format YYYY-MM-DDTHH:MM:SS.000Z (norme ISO 8601). | Requis si message_code ou campaign n’est pas fourni |
date_to | string | La date de fin pour les données au format YYYY-MM-DDTHH:MM:SS.000Z (norme ISO 8601). | Requis si message_code ou campaign n’est pas fourni |
per_page | int | Le nombre de lignes par page, maximum 5000. | Oui |
page | int | Le numéro de page, à partir de zéro. | Oui |
type | string | Le type de rebond : Complaint, Softbounce, Hardbounce. | Non |
Exemple de requête
Anchor link to{ "application": "XXXXX-XXXXX", // requis. Code d'application Pushwoosh "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // requis si la campagne ou la plage de dates n'est pas fournie. // Identifiant unique du message "campaign": "XXXXX-XXXXX", // requis si le code de message ou la plage de dates n'est pas fourni. // Code de campagne "date_from": "2024-07-20T00:00:00.000Z", // requis si le code de message ou la campagne n'est pas fourni. // Date de début au format ISO 8601 "YYYY-MM-DDTHH:MM:SS.SSSZ" "date_to": "2024-07-20T00:00:00.000Z", // requis si le code de message ou la campagne n'est pas fourni. // Date de fin au format ISO 8601 "YYYY-MM-DDTHH:MM:SS.SSSZ" "per_page": 1000, // requis. Nombre de résultats par page, maximum 5000 "page": 5, // optionnel. Numéro de page, à partir de zéro "type": "Softbounce" // optionnel. Le type de rebond : Complaint, Softbounce, Hardbounce}Champs de la réponse
Anchor link to| Nom du champ | Type | Description |
|---|---|---|
total | int | Le nombre total de lignes. |
bounced_emails | array | Un tableau de détails sur les e-mails retournés. |
├── email | string | L’adresse e-mail qui a été retournée. |
├── date | string | La date du rebond (format : YYYY-MM-DDTHH:MM:SS.000Z). |
├── reason | string | La raison du rebond. |
└── type | string | Le type de rebond : Complaint, Softbounce, Hardbounce. |
Exemple de réponse
Anchor link to{ "total": 25, // Nombre total de lignes. "bounced_emails": [{ "email": "example@example.com", // Adresse e-mail qui a été retournée "date": "2024-07-20T00:00:00.000Z", // Date du rebond au format ISO 8601 "reason": "Invalid recipient address", // Raison du rebond "type": "Hardbounce" // Type de rebond : Complaint, Softbounce, Hardbounce }]}