Nachrichtenstatistiken
Diese Methoden geben Statistiken für die von Ihnen gesendeten Nachrichten zurück. Verwenden Sie sie, um gesendete Nachrichten aufzulisten, stündliche Metriken für eine Nachricht abzurufen, zu sehen, wo eine Nachricht im Zustellungstrichter ihre Zielgruppe verloren hat, Nachrichtenprotokolle pro Gerät zu lesen und Linkklicks in E-Mails zu zählen.
messages:list
Anchor link toZeigt die Liste der gesendeten Nachrichten an.
POST https://api.pushwoosh.com/api/v2/messages:list
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | Server-API-Token. Muss im folgenden Format bereitgestellt werden: Authorization: Api <Server Key>. |
Parameter des Anfrage-Hauptteils
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
platforms | Nein | Array | Nachrichtenplattformen. Mögliche Werte: "IOS", "ANDROID", "OSX", "WINDOWS", "AMAZON", "SAFARI", "CHROME", "FIREFOX", "IE", "EMAIL", "HUAWEI_ANDROID", "SMS". |
date_range | Nein | Object | Berichtszeitraum, gefiltert nach dem Erstellungsdatum der Nachricht. date_from und date_to müssen dem Format YYYY-MM-DD folgen (z. B. "2000-01-01"); beide Tage sind vollständig enthalten, sodass date_from und date_to auf dasselbe Datum gesetzt den gesamten Tag zurückgeben. Die Daten werden in UTC interpretiert, nicht in der Zeitzone Ihres Kontos. |
campaign | Nein | String | Kampagnencode |
filters | Ja | Object | Nachrichtenfilter. |
source | Nein | String | Nachrichtenquelle. Zum Beispiel: AB_TEST, API, AUTO_PUSH, CP, CSV, CUSTOMER_JOURNEY, EMAIL_API, EMAIL_CP, GEO_ZONE, PUSH_ON_EVENT, RSS. |
messages_codes | Nein | Array | Nachrichtencodes, die aus /createMessage API-Antworten erhalten wurden. |
messages_ids | Nein | Array | Nachrichten-IDs aus dem Nachrichtenverlauf |
message_type | Nein | String | Filter für den Nachrichtenfluss. Mögliche Werte: "TRANSACTIONAL", "BROADCAST", "ALL". Standardwert ist "ALL", wenn der Parameter weggelassen wird. |
params | Nein | Object | Geben Sie an, ob Nachrichtendetails und Metriken angezeigt werden sollen. Setzen Sie with_details: true, um das "details"-Objekt einzuschließen, und with_metrics: true, um das "metrics"-Objekt in die Antwort einzuschließen. |
application | Ja | String | Pushwoosh-Anwendungscode. |
per_page | Nein | Integer | Anzahl der Ergebnisse pro Seite, 1 bis 499. Lassen Sie den Parameter weg, um die Standardseitengröße von 500 Ergebnissen zu erhalten; die explizite Angabe von 500 oder mehr wird mit 400 abgelehnt. |
page | Nein | Integer | Nullbasierte Seitennummer für die Paginierung. Siehe das Limit für die tiefe Paginierung unten. |
message_type bestimmt auch, wie weit eine Anfrage ohne Datum in die Vergangenheit reicht.
Beispielanfrage
Anchor link to{ "filters": { "platforms": [], // IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, HUAWEI_ANDROID, SMS "date_range": { "date_from": "string", // Erforderliches Format: 2000-01-01 "date_to": "string" // Erforderliches Format: 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", // Kampagnencode "messages_ids": [], // Nachrichten-IDs "messages_codes": [], // Nachrichtencodes "message_type": "ALL", // TRANSACTIONAL, BROADCAST, ALL (Standard) "application": "string" // Pushwoosh-Anwendungscode }, "params": { "with_details": true, // Nachrichtendetails zur Antwort hinzufügen ("details"-Objekt) "with_metrics": true // Nachrichtenmetriken zur Antwort hinzufügen ("metrics"-Objekt) }, "per_page": 20, // <= 499 "page": 0}Antwortcodes und Beispiele
{ "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": [ // Tag-Bedingungen (siehe /developer/api-reference/messages-api/#tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND", // logischer Operator für Bedingungs-Arrays; mögliche Werte: 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": [ // Tag-Bedingungen (siehe Messages-api - tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND" // logischer Operator für Bedingungs-Arrays; mögliche Werte: 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 überspannt mehr als 30 Tage:
{ "error": "exceeded the maximum date interval. Max interval: 30 days"}page × per_page überschreitet das Limit für die tiefe Paginierung:
{ "error": "requested result window is too large, narrow the date range"}{ "error": "account not found"}totalsByIntervals
Anchor link toGibt Metriken und Konversionsdaten basierend auf dem Nachrichtencode zurück, aggregiert nach Stunde.
POST https://api.pushwoosh.com/api/v2/statistics/messages/totalsByIntervals
Autorisierung
Anchor link toDie Autorisierung erfolgt über den API Access Token im Anfrage-Header.
Parameter des Anfrage-Hauptteils
Anchor link to| Parametername | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
message_code | string | Nachrichtencode, der aus /createMessage API-Antworten erhalten wurde. | Ja |
platforms | [int] | Plattformen | Nein |
Beispielanfrage
Anchor link to{ "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // erforderlich. Eindeutiger Nachrichtenidentifikator "platforms": [1, 3, 7, 10, 11, 12] // optional. Liste der Plattformcodes}Antwortfelder
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
metrics | array | Enthält ein Array von Nachrichtenmetriken |
timestamp | string | Die Zeit der Metrik. |
platform | int | Der Plattformcode (z. B. iOS, Android). |
sends | string | Die Anzahl der gesendeten Nachrichten. |
opens | string | Die Anzahl der geöffneten Nachrichten. |
deliveries | string | Die Anzahl der zugestellten Nachrichten. |
inbox_opens | string | Die Anzahl der Posteingangsöffnungen. |
unshowable_sends | string | Die Anzahl der Nachrichten, die für Geräte akzeptiert wurden, bei denen Benachrichtigungen in den Betriebssystemeinstellungen deaktiviert sind. Es wird kein Banner angezeigt, aber die Nachricht erreicht dennoch die App und erscheint im Nachrichten-Posteingang, wenn für den Versand Nachricht im Posteingang speichern aktiviert ist. Zählt als erfolgreicher Versand, nicht als Fehler. |
errors | string | Die Anzahl der Fehler. |
conversion | object | Enthält Konversionsdaten |
sends | string | Die Gesamtzahl der gesendeten Nachrichten. |
opens | string | Die Gesamtzahl der geöffneten Nachrichten. |
events | array | Ein Array von Ereignissen mit ihren Statistiken |
name | string | Der Name des Ereignisses (z. B. zum Warenkorb hinzufügen). |
hits | string | Die Anzahl der Treffer. |
conversion | float | Die Konversionsrate im Verhältnis zu den Öffnungen. |
revenue | float | Der Umsatz (nur für Ereignisse mit __amount- und __currency-Attributen). |
Beispielantwort
Anchor link to{ "metrics": [{ "timestamp": "2024-08-03 15:00:00", // Zeitstempel der Metriken im Format "YYYY-MM-DD HH:MM:SS" "platform": 3, // Plattformcode "sends": "55902", // Anzahl der gesendeten Nachrichten "opens": "382", // Anzahl der geöffneten Nachrichten "deliveries": "22931", // Anzahl der zugestellten Nachrichten "inbox_opens": "0", // Anzahl der im Posteingang geöffneten Nachrichten "unshowable_sends": "2", // An Geräte mit deaktivierten Benachrichtigungen gesendet, kein Banner angezeigt "errors": "0" // Anzahl der aufgetretenen Fehler }], "conversion": { "sends": "55902", // Gesamtzahl der gesendeten Nachrichten "opens": "772", // Gesamtzahl der geöffneten Nachrichten "events": [{ "name": "cart_add", // Name des Ereignisses "hits": "96", // Anzahl der Treffer für das Ereignis "conversion": 0.12, // Konversionsrate im Verhältnis zu den Öffnungen "revenue": 0 // Durch das Ereignis generierter Umsatz (nur für Ereignisse mit Betrags-/Währungsattributen) }] }}Zustellungstrichter
Anchor link toVerwenden Sie den Zustellungstrichter, um zu sehen, an welcher Stufe eine Nachricht oder Kampagne ihre Zielgruppe verloren hat (Fehler, keine Zustellung, keine Öffnung) und warum. Im Gegensatz zu totalsByIntervals, das stündliche Summen zurückgibt, schlüsselt der Trichter die Zielgruppe nach Stufe und Abbruchgrund auf, ein Eintrag pro Kanal, mit einer Aufschlüsselung nach Plattform. Die Stufenfolge unterscheidet sich je nach Kanal: Siehe stage unter GetDeliveryFunnelResponse-Felder unten, welche Stufen jeder Kanal trägt. Beide Methoden erfordern ein Server-API-Token.
Beide Methoden geben dieselbe Antwortform zurück, GetDeliveryFunnelResponse, unten einmal beschrieben.
getDeliveryFunnel
Anchor link toGibt den Trichter einer Nachricht zurück.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getDeliveryFunnel
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | Server-API-Token. Muss im folgenden Format angegeben werden: Authorization: Api <Server Key>. |
Anfragetext-Parameter
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
message_code | Ja | String | Nachrichtencode, erhalten aus /createMessage-API-Antworten. |
platforms | Nein | Array von Ganzzahlen | Plattformcodes, um den Trichter zu filtern. Weglassen, um jede Plattform zurückzugeben, an die die Nachricht gesendet wurde. |
Beispielanfrage
Anchor link to{ "message_code": "A444-AAABBBCC-00112233", // Nachrichtencode aus /createMessage "platforms": [1, 14] // Optional. iOS, Email}GetDeliveryFunnelResponse-Felder
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
channels | Array | Ein Eintrag pro Kanal, auf dem die Nachricht gesendet wurde. |
window_from, window_to | String oder null | Der Zeitraum, den der Trichter abdeckt, basierend auf den verfügbaren Daten. null, wenn funnel_state nicht FUNNEL_STATE_READY ist. |
funnel_state | String | FUNNEL_STATE_READY: der Trichter unten ist gefüllt. FUNNEL_STATE_NO_EVENTS: für diese Nachricht ist noch nichts passiert. FUNNEL_STATE_EXPIRED: die Nachricht wurde vor zu langer Zeit gesendet. Ihre Trichterdaten sind nicht mehr verfügbar. channels ist in beiden Nicht-READY-Fällen leer. Ein unbekannter, fremder oder gelöschter message_code ist keiner dieser Zustände, siehe die 404-Antwort unten. |
channels[]
| Name | Typ | Beschreibung |
|---|---|---|
channel | String | CHANNEL_MOBILE_PUSH (iOS, macOS, Android, Amazon, Huawei), CHANNEL_WEB_PUSH (Safari, Chrome, Firefox), CHANNEL_EMAIL, CHANNEL_OTHER (SMS, Messenger, Wallet, Windows, Baidu, Xiaomi), CHANNEL_APP_INBOX. |
funnel | Array | Trichterstufen für diesen Kanal, siehe funnel[] unten. |
deliveries_form | String | Welche Aufschlüsselung die Stufe STAGE_DELIVERIES trägt: DELIVERIES_FORM_PER_DEVICE (vier disjunkte Zeilen, aufgeteilt danach, ob das Gerät eine Warnung anzeigen würde und ob es bestätigt hat) oder DELIVERIES_FORM_BASIC (zwei Zeilen, ohne Aufteilung nach Warnzustand). |
basic_form_reason | String | Nur sinnvoll, wenn deliveries_form DELIVERIES_FORM_BASIC ist: BASIC_FORM_REASON_RETENTION (die Nachricht ist zu alt für eine Aufschlüsselung pro Gerät), BASIC_FORM_REASON_UNAVAILABLE (eine Aufschlüsselung pro Gerät ist für dieses Konto oder diese Nachricht nicht verfügbar, z. B. eine Systemnachricht), BASIC_FORM_REASON_NO_DELIVERIES (noch nichts akzeptiert), BASIC_FORM_REASON_NOT_APPLICABLE (der Kanal hat überhaupt keinen Warnzustand, z. B. E-Mail oder App Inbox). Andernfalls BASIC_FORM_REASON_UNSPECIFIED: ignorieren Sie dieses Feld, es sei denn, deliveries_form ist DELIVERIES_FORM_BASIC. |
confirmed_deliveries | Objekt | count und eine Aufschlüsselung bestätigter Zustellungen nach platforms. Nicht auf den STAGE_DELIVERIES-Wert begrenzt, kann also davon abweichen. |
funnel[] (eine Stufe)
| Name | Typ | Beschreibung |
|---|---|---|
stage | String | STAGE_AUDIENCE (alle, auf die die Nachricht abzielte), STAGE_SENT (vom Push-Dienst oder E-Mail-Anbieter akzeptiert), STAGE_ERRORS (vor der Annahme abgelehnt), STAGE_DELIVERIES (akzeptiert, nach Bestätigung aufgeteilt), STAGE_OPENED (eindeutige Geräte, die geöffnet haben, oder bei App Inbox die Einträge, die der Nutzer durch Antippen geöffnet hat), STAGE_INTERACTIONS (nur E-Mail: geklickt, abgemeldet, beschwert), STAGE_REACHED/STAGE_READ (nur App Inbox, ersetzen STAGE_DELIVERIES). |
count | String | Gesamtsumme der Stufe, als numerischer String. |
pieces | Array | Die eigene Aufschlüsselung der Stufe. Leer bei STAGE_ERRORS, das stattdessen errors verwendet. Jedes Element hat kind (KIND_PASSED ist zur nächsten Stufe übergegangen, KIND_REASON nicht, KIND_SUBSET überschneidet sich mit den anderen beiden und wird nie summiert), category (siehe die Werteliste unten für jede Stufe), count und eine Aufschlüsselung nach platforms. |
errors | Array | Nur STAGE_ERRORS: category (siehe die Werteliste unten), count, platforms und codes: die rohen Anbieter-Fehlercodes, gruppiert in diese Kategorie (platform, code, name, count). Was jeder name bedeutet und wie Sie ihn beheben, erfahren Sie unter Sendefehler. |
platforms | Array | Die Gesamtsumme der Stufe, aufgeteilt nach Plattform. |
category-Werte
STAGE_AUDIENCE:
ELIGIBLE_AUDIENCE(bestanden): nicht durch einen der folgenden Gründe ausgeschlossen.FREQUENCY_CAPPING: durch Frequenzbegrenzung übersprungen.CONTROL_GROUP: als Kontrollgruppe zurückgehalten.UNSUBSCRIBED: der Empfänger hatte sich abgemeldet.BOUNCED: die Adresse des Empfängers war zuvor unzustellbar.COMPLAINT: der Empfänger hatte eine Nachricht zuvor als Spam markiert.FILTERED_BY_CATEGORY: der Empfänger hatte sich von dieser Nachrichtenkategorie abgemeldet.
STAGE_ERRORS:
NO_TOKEN: das Gerät hatte kein Push-Token oder keine Adresse zum Senden.NO_DEVICE: es wurde kein passendes Gerät gefunden.PLATFORM_DISABLED: die Plattform ist für diese App deaktiviert.INVALID_TOKEN: der Anbieter hat das Gerätetoken oder die Adresse als ungültig abgelehnt.QUOTA_EXCEEDED: der Anbieter hat die Sendegeschwindigkeit begrenzt.INVALID_CONTENT: die Nachricht konnte nicht in der zusammengestellten Form gesendet werden. Meistens ist das Template selbst nicht erstellbar, zum Beispiel ein defekter Connected-Content- oder Liquid-Block, statt vom Anbieter abgelehnt zu werden.INVALID_CONFIGURATION: die eigene Anbieterkonfiguration des Kontos ist fehlerhaft, zum Beispiel falsche Zugangsdaten, ein gelöschtes Firebase-Projekt oder ein nicht zulässiges APNs-Topic.PROVIDER_ERROR: der Anbieter hat einen Fehler außerhalb der obigen Kategorien zurückgegeben.INTERNAL_ERROR: Pushwoosh konnte den Versand nicht verarbeiten.UNCLASSIFIED_ERROR: ein Abbruch, der zu keiner der obigen Kategorien passt. Sollte selten sein.
STAGE_DELIVERIES, DELIVERIES_FORM_PER_DEVICE:
DISPLAYABLE_CONFIRMED(bestanden): das Gerät hat eine Warnung angezeigt und den Empfang bestätigt.DISPLAYABLE_NO_CONFIRMATION: das Gerät würde eine Warnung anzeigen, hat den Empfang aber noch nicht bestätigt.NOT_DISPLAYABLE_CONFIRMED(bestanden): ein stiller Push hat den Empfang bestätigt.NOT_DISPLAYABLE_NO_CONFIRMATION: ein stiller Push hat den Empfang noch nicht bestätigt.
STAGE_DELIVERIES, DELIVERIES_FORM_BASIC:
CONFIRMED_BY_DEVICE(bestanden): das Gerät hat den Empfang bestätigt.NO_CONFIRMATION: noch nicht bestätigt.
E-Mail fügt zusätzlich hinzu, als Teilmenge, die sich mit CONFIRMED_BY_DEVICE überschneidet:
BOUNCED_HARD(Teilmenge): die Adresse ist dauerhaft unzustellbar.BOUNCED_SOFT(Teilmenge): die Adresse ist vorübergehend unzustellbar, zum Beispiel ein volles Postfach.
BOUNCED_HARD kann sich auch in folgende Teilmengen-Zeilen aufteilen:
BOUNCED_HARD_GENERAL: dauerhaft unzustellbar, kein genauerer Grund verfügbar.BOUNCED_HARD_MAILBOX_FULL: das Postfach des Empfängers ist voll.BOUNCED_HARD_MAILBOX_INACTIVE: das Postfach des Empfängers existiert nicht mehr.BOUNCED_HARD_SUPPRESSED: der Anbieter hat die Adresse auf einer Sperrliste.BOUNCED_HARD_UNDETERMINED: dauerhaft unzustellbar, Grund nicht ermittelt.
BOUNCED_SOFT kann sich auch in folgende Teilmengen-Zeilen aufteilen:
BOUNCED_SOFT_GENERAL: vorübergehend unzustellbar, kein genauerer Grund verfügbar.BOUNCED_SOFT_MAILBOX_FULL: das Postfach des Empfängers war zum Zeitpunkt des Versands voll.BOUNCED_SOFT_CONTENT_REJECTED: der Mailserver des Empfängers hat den Nachrichteninhalt abgelehnt.BOUNCED_SOFT_SPAM: der Mailserver des Empfängers hat die Nachricht als Spam markiert.BOUNCED_SOFT_MESSAGE_TOO_LARGE: die Nachricht war zu groß für das Postfach des Empfängers.BOUNCED_SOFT_ATTACHMENT_REJECTED: der Mailserver des Empfängers hat einen Anhang abgelehnt.BOUNCED_SOFT_CUSTOM_TIMEOUT_EXCEEDED: der Mailserver des Empfängers hat zu lange zum Antworten gebraucht.BOUNCED_SOFT_UNDETERMINED: vorübergehend unzustellbar, Grund nicht ermittelt.BOUNCED_UNDETERMINED: der Server des Empfängers hat die E-Mail akzeptiert, aber nie die Zustellung bestätigt; das Ergebnis ist unbekannt und die Adresse ist nicht gesperrt. Zählt als weicher Bounce.
BOUNCED_UNCLASSIFIED ist ein Bounce, hart oder weich, der zu keinem der obigen Subtypen passt. Sollte selten sein und ist kein Wert, auf dem man Logik aufbauen sollte.
STAGE_OPENED, nur E-Mail (andere Kanäle melden den count der Stufe ohne Teile):
OPENED_BY_RECIPIENT(bestanden): von einer Person geöffnet.MACHINE_OPENS_ONLY: nur von einem automatisierten Scanner geöffnet.OPEN_TYPE_UNKNOWN: konnte nicht als Person oder Scanner klassifiziert werden.MACHINE_OPENS_AMPP(Teilmenge): ersetzt die drei obigen Zeilen, wenn die Person/Scanner-Aufteilung für diese Nachricht nicht verfügbar ist. Zählt stattdessen Apple Mail Privacy Protections eigene Anzahl automatischer Öffnungen und überschneidet sich mit der Gesamtsumme der Stufe.
STAGE_INTERACTIONS, nur E-Mail:
CLICKED_ONLY(bestanden): hat auf einen Link geklickt, blieb abonniert.CLICKED_AND_UNSUBSCRIBED: hat auf einen Link geklickt und sich abgemeldet.CLICKED_AND_COMPLAINED: hat auf einen Link geklickt und die Nachricht als Spam markiert.UNSUBSCRIBED_WITHOUT_CLICK: hat sich ohne Klick abgemeldet.COMPLAINED_WITHOUT_CLICK: hat die Nachricht ohne Klick als Spam markiert.
STAGE_REACHED, nur App Inbox:
REACHED(bestanden): der Eintrag wurde mindestens einmal von der App abgerufen.NOT_FETCHED_YET: noch nicht abgerufen.
STAGE_READ, nur App Inbox:
READ(bestanden): als gelesen markiert.DISMISSED_UNREAD: vom Nutzer gelöscht, ohne gelesen zu werden.UNREAD: liegt noch ungelesen im Posteingang.EXPIRED_UNREAD: dasselbe wieUNREAD, aber der Eintrag ist seitdem aus dem Posteingang abgelaufen.DISMISSED(Teilmenge): jeder gelöschte Eintrag, gelesen oder nicht. Überschneidet sich mitREADundDISMISSED_UNREAD.
Antwortcodes
{ "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"}Ein leeres channels-Array mit funnel_state: "FUNNEL_STATE_NO_EVENTS" bedeutet, dass für diese Nachricht noch nichts passiert ist. Dies ist kein Fehler. Ein message_code, der vor zu langer Zeit gesendet wurde, sodass Trichterdaten nicht verfügbar sind, gibt ebenfalls 200 zurück, mit einem leeren channels-Array und funnel_state: "FUNNEL_STATE_EXPIRED".
Ein unbekannter message_code, einer, der zu einem anderen Konto gehört, oder einer, der seitdem gelöscht wurde:
{ "error": "message not found"}{ "error": "invalid auth token"}getCampaignDeliveryFunnel
Anchor link toSummiert getDeliveryFunnel über die Nachrichten einer Kampagne. Eindeutige Zählungen werden pro Nachricht berechnet: ein Abonnent, der von mehreren Nachrichten der Kampagne erreicht wird, wird für jede Nachricht einmal gezählt.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getCampaignDeliveryFunnel
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | Server-API-Token. Muss im folgenden Format angegeben werden: Authorization: Api <Server Key>. |
Anfragetext-Parameter
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
campaign_code | Ja | String | Kampagnencode. |
platforms | Nein | Array von Ganzzahlen | Plattformcodes, um den Trichter zu filtern. Weglassen, um jede Plattform zurückzugeben, an die die Kampagne gesendet wurde. |
Beispielanfrage
Anchor link to{ "campaign_code": "AAAAA-XXXXX", // Kampagnencode "platforms": [1, 14] // Optional. iOS, Email}Antwort
Anchor link toGleiche Form wie GetDeliveryFunnelResponse oben.
Antwortcodes
Eine leere Zielgruppe für den gegebenen campaign_code und platforms gibt ebenfalls 200 mit einem leeren channels-Array und funnel_state: "FUNNEL_STATE_NO_EVENTS" zurück. Eine Kampagne, die vor zu langer Zeit gesendet wurde, sodass Trichterdaten nicht verfügbar sind, gibt ebenfalls 200 zurück, mit einem leeren channels-Array und funnel_state: "FUNNEL_STATE_EXPIRED". Keines von beiden ist ein Fehler.
Ein unbekannter campaign_code, einer, der zu einem anderen Konto gehört, oder einer, dessen Nachrichten alle gelöscht wurden. Eine Kampagne, bei der nur einige Nachrichten gelöscht wurden, ist davon nicht betroffen: die gelöschten zählen weiterhin zu ihrem Trichter.
{ "error": "campaign not found"}{ "error": "invalid auth token"}getMessageLog
Anchor link toZeigt detaillierte Informationen über die gesendeten Nachrichten an.
POST https://api.pushwoosh.com/api/v2/statistics/getMessageLog
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Erforderlich | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
Parameter des Anfrage-Hauptteils
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
message_id | Nein | Integer | Wählt Nachrichtenereignisse nach der aus dem Nachrichtenverlauf erhaltenen Nachrichten-ID aus. Beispiel: 12345678900. |
message_code | Nein | String | Wählt Nachrichtenereignisse nach dem Nachrichtencode aus, der aus /createMessage API-Antworten erhalten wurde. Beispiel: "A444-AAABBBCC-00112233". |
campaign_code | Nein | String | Wählt Nachrichtenereignisse nach dem Kampagnencode aus, der in Ihrer Nachrichtennutzlast angegeben ist. Beispiel: "AAAAA-XXXXX". |
hwid | Nein | String oder Array | Wählt Nachrichtenereignisse nach HWID (Hardware-ID) oder einem Array von HWIDs aus. |
date_from | Erforderlich, wenn message_id, message_code oder campaign_code nicht angegeben sind | Datetime | Startdatum zum Filtern von Nachrichten. Format: "YYYY-MM-DD HH:MM:SS". Beispiel: "2000-01-25 00:00:00". |
date_to | Erforderlich, wenn message_id, message_code oder campaign_code nicht angegeben sind | Datetime | Enddatum zum Filtern von Nachrichten. Format: "YYYY-MM-DD HH:MM:SS". Beispiel: "2000-01-26 00:00:00". |
limit | Nein | Integer | Maximale Anzahl von Nachrichtenereignissen, die in einer einzigen Antwort zurückgegeben werden. Maximalwert: 100000. |
pagination_token | Nein | String | Paginierungstoken, das aus einer vorherigen /getMessageLog-Antwort erhalten wurde. Verwenden Sie es, um zusätzliche Ergebnisse abzurufen. |
user_id | Nein | String | Wählt Nachrichtenereignisse nach einer benutzerdefinierten Benutzer-ID aus. Siehe /registerUser für weitere Details. |
application_code | Ja | String | Wählt Nachrichtenereignisse nach dem Pushwoosh-Anwendungscode aus. |
actions | Nein | Array | Filtert Ergebnisse nach bestimmten Nachrichtenaktionen. Mögliche Werte: "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". "create"-Ereignisse sind standardmäßig von der Antwort ausgeschlossen. Fügen Sie "create" zu diesem Array hinzu, um sie zu sehen. "delivered"-Ereignisse erfordern zusätzlich, dass die Zustellungsstatistiken im Konto aktiviert sind. |
platforms | Nein | Array | Array von Zielplattformen zum Filtern der Ergebnisse. Mögliche Werte: "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 | Nein | String | Filtert Ergebnisse nach Nachrichtenfluss. "all" (Standard, wenn weggelassen) gibt alles zurück, "broadcast" gibt nur Massennachrichten zurück (message_id != 0), "transactional" gibt nur Nachrichten mit message_id = 0 zurück, einschließlich derer, die von Customer Journey gesendet wurden. |
Beispielanfrage
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", // optional, Token für die Paginierung "limit": 1000, // optional, die maximale Anzahl von Einträgen für eine einzelne Antwort "application_code": "XXXXX-XXXXX", // Pushwoosh-App-Code "message_code": "A444-AAABBBCC-00112233", // optional, Nachrichtencode aus der /createMessaage-Anfrage "message_id": 1234567890, // optional, Nachrichten-ID aus dem Pushwoosh Control Panel "campaign_code": "AAAAA-XXXXX", // optional, Code einer Kampagne, für die das Protokoll abgerufen werden soll "hwid": "aaazzzqqqqxxx", // optional, Hardware-ID eines bestimmten Geräts, das mit einer Nachricht angesprochen wurde "user_id": "user_123", // optional, ID eines Benutzers, der mit der Nachricht angesprochen wurde "date_from": "2000-01-25 00:00:00", // optional, Beginn des Statistikzeitraums "date_to": "2000-02-10 23:59:59", // optional, Ende des Statistikzeitraums "actions": ["opened", "inbox_opened"], // optional, zur Filterung der Ergebnisse verwendet. Mögliche Werte: "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". Die Antwort enthält alle Nachrichten mit der/den angegebenen Aktion(en). "platforms": ["ios", "chrome"], // optional, zur Filterung der Ergebnisse verwendet, nur Kleinbuchstaben. Mögliche Werte: "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" // optional, "all" (Standard), "broadcast" (message_id != 0) oder "transactional" (message_id = 0, einschließlich Customer Journey-Sendungen)}'Antwortcodes und Beispiele
{ "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"}Jeder Eintrag in data enthält auch error_reason (String, gefüllt mit dem Fehlergrund, wenn status "failed" ist) und eine optionale payload (String).
Eine Antwortseite kann kürzer als das angeforderte limit ausfallen. Das allein bedeutet nicht, dass der Export abgeschlossen ist.
E-Mail-Statistiken
Anchor link tolinksInteractions
Anchor link toZeigt Statistiken zu Link-Klicks in E-Mails an
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
Parameter des Anfrage-Hauptteils
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
date_range | Nein | Object | Definiert den Berichtszeitraum. Enthält date_from und date_to. |
filters | Ja | Object | E-Mail-Filter. |
application | Ja | String | Pushwoosh-Anwendungscode (alternativ campaign, messages_ids oder message_codes angeben). |
messages_codes | Ja | Array | Nachrichtencodes (alternativ application, campaign oder messages_ids angeben). |
campaign | Ja | String | Kampagnencode (alternativ application, messages_ids oder message_codes angeben). |
messages_ids | Ja | Array | Nachrichten-IDs (alternativ application, campaign oder message_codes angeben). |
link_template | Erforderlich, wenn application oder campaign angegeben ist. | String | Filtert E-Mail-Link-Interaktionen nach Schlüsselwort. Nur Links, die den angegebenen Text in ihrer URL enthalten, werden in der API-Antwort zurückgegeben. Wenn Ihre E-Mail beispielsweise Links wie https://example.com/news und https://example.com/shop enthält, gibt die Einstellung "link_template": "shop" nur Interaktionen für https://example.com/shop zurück. |
email_content_code | Nein | String | Eindeutiger Identifikator für den E-Mail-Inhalt. |
params | Nein | Object | Definiert zusätzliche Antwortoptionen. Enthält with_full_links, das eine Liste vollständiger Links mit Statistiken hinzufügt. |
Beispielanfrage
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", // Erforderliches Format: 2000-01-01 "date_to": "string" // Erforderliches Format: 2000-01-01 }, "campaign": "string", // Kampagnencode (Sie können stattdessen application, messages_ids oder message_codes angeben) "application": "string", // Anwendungscode (Sie können stattdessen campaign, messages_ids oder message_codes angeben) "messages_ids": [], // Nachrichten-IDs (Sie können stattdessen application, campaign oder message_codes angeben) "messages_codes": [], // Nachrichtencodes (Sie können stattdessen application, campaign oder message_ids angeben) "link_template": "string", // Link-Vorlage (erforderlich, wenn application oder campaign angegeben ist) "email_content_code": "string" // Eindeutiger Identifikator für den E-Mail-Inhalt. }, "params": { "with_full_links": true // Geben Sie an, ob detaillierte Statistiken angezeigt werden sollen. Eine Liste vollständiger Links mit Statistiken wird im full_links-Array übergeben. }}'Antwortcodes und Beispiele
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 toZeigt Benutzer an, die auf Links in E-Mails geklickt haben
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices
Header
Anchor link to| Name | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
Parameter des Anfrage-Hauptteils
Anchor link to| Name | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
date_range | Nein | Object | Definiert den Berichtszeitraum. Enthält date_from und date_to. |
filters | Ja | Object | E-Mail-Filter. |
application | Ja | String | Pushwoosh-Anwendungscode (alternativ campaign, messages_ids oder message_codes angeben). |
messages_codes | Ja | Array | Nachrichtencodes (alternativ application, campaign oder messages_ids angeben). |
campaign | Ja | String | Kampagnencode (alternativ application, messages_ids oder message_codes angeben). |
messages_ids | Ja | Array | Nachrichten-IDs (alternativ application, campaign oder message_codes angeben). |
link_template | Erforderlich, wenn application oder campaign angegeben ist. | String | Filtert E-Mail-Link-Interaktionen nach Schlüsselwort. Nur Links, die den angegebenen Text in ihrer URL enthalten, werden in der API-Antwort zurückgegeben. Wenn Ihre E-Mail beispielsweise Links wie https://example.com/news und https://example.com/shop enthält, gibt die Einstellung "link_template": "shop" nur Interaktionen für https://example.com/shop zurück. |
email_content_code | Nein | String | Eindeutiger Identifikator für den E-Mail-Inhalt. |
page | Nein | Integer | Seitennummer für die Paginierung. |
per_page | Nein | Integer | Anzahl der Ergebnisse pro Seite (≤ 1000). |
Beispielanfrage
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", // Erforderliches Format: 2000-01-01 "date_to": "string" // Erforderliches Format: 2000-01-01 }, "campaign": "string", // Kampagnencode (Sie können stattdessen application, messages_ids oder message_codes angeben) "application": "string", // Anwendungscode (Sie können stattdessen campaign, messages_ids oder message_codes angeben) "messages_ids": [], // Nachrichten-IDs (Sie können stattdessen application, campaign oder message_codes angeben) "messages_codes": [], // Nachrichtencodes (Sie können stattdessen application, campaign oder message_ids angeben) "link_template": "string", // Link-Vorlage (erforderlich, wenn application oder campaign angegeben ist) "email_content_code": "string" // Eindeutiger Identifikator für den E-Mail-Inhalt. }, "per_page": 100, "page": 0}'Antwortcodes und Beispiele
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
Liefert Daten zu E-Mail-Beschwerden, Soft Bounces und Hard Bounces, einschließlich Datum, E-Mail-Adresse und Grund für jeden Bounce.
Autorisierung
Anchor link toDie Autorisierung erfolgt über den API Access Token im Anfrage-Header.
Parameter des Anfrage-Hauptteils
Anchor link to| Parametername | Typ | Beschreibung | Erforderlich |
|---|---|---|---|
application | string | Pushwoosh-Anwendungscode | Ja |
message_code | string | Nachrichtencode. | Erforderlich, wenn date range oder campaign nicht angegeben ist |
campaign | string | Kampagnencode. | Erforderlich, wenn message_code oder date range nicht angegeben ist |
date_from | string | Das Startdatum für die Daten im Format YYYY-MM-DDTHH:MM:SS.000Z (ISO 8601-Standard). | Erforderlich, wenn message_code oder campaign nicht angegeben ist |
date_to | string | Das Enddatum für die Daten im Format YYYY-MM-DDTHH:MM:SS.000Z (ISO 8601-Standard). | Erforderlich, wenn message_code oder campaign nicht angegeben ist |
per_page | int | Die Anzahl der Zeilen pro Seite, maximal 5000. | Ja |
page | int | Die Seitennummer, beginnend bei null. | Ja |
type | string | Der Typ des Bounces: Complaint, Softbounce, Hardbounce. | Nein |
Beispielanfrage
Anchor link to{ "application": "XXXXX-XXXXX", // erforderlich. Pushwoosh-App-Code "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // erforderlich, wenn Kampagne oder Datumsbereich nicht angegeben ist. // Eindeutiger Nachrichtenidentifikator "campaign": "XXXXX-XXXXX", // erforderlich, wenn message_code oder Datumsbereich nicht angegeben ist. // Kampagnencode "date_from": "2024-07-20T00:00:00.000Z", // erforderlich, wenn message_code oder Kampagne nicht angegeben ist. // Startdatum im ISO 8601-Format "YYYY-MM-DDTHH:MM:SS.SSSZ" "date_to": "2024-07-20T00:00:00.000Z", // erforderlich, wenn message_code oder Kampagne nicht angegeben ist. // Enddatum im ISO 8601-Format "YYYY-MM-DDTHH:MM:SS.SSSZ" "per_page": 1000, // erforderlich. Anzahl der Ergebnisse pro Seite, maximal 5000 "page": 5, // optional. Seitennummer, beginnend bei null "type": "Softbounce" // optional. Der Typ des Bounces: Complaint, Softbounce, Hardbounce}Antwortfelder
Anchor link to| Feldname | Typ | Beschreibung |
|---|---|---|
total | int | Die Gesamtzahl der Zeilen. |
bounced_emails | array | Ein Array mit Details zu den gebouncten E-Mails. |
├── email | string | Die E-Mail-Adresse, die gebounct wurde. |
├── date | string | Das Datum des Bounces (Format: YYYY-MM-DDTHH:MM:SS.000Z). |
├── reason | string | Der Grund für den Bounce. |
└── type | string | Der Typ des Bounces: Complaint, Softbounce, Hardbounce. |
Beispielantwort
Anchor link to{ "total": 25, // Gesamtzahl der Zeilen. "bounced_emails": [{ "email": "example@example.com", // E-Mail-Adresse, die gebounct wurde "date": "2024-07-20T00:00:00.000Z", // Bounce-Datum im ISO 8601-Format "reason": "Invalid recipient address", // Grund für den Bounce "type": "Hardbounce" // Typ des Bounces: Complaint, Softbounce, Hardbounce }]}