消息统计
这些方法返回您已发送消息的统计数据。使用它们可以列出已发送的消息、获取消息的每小时指标、查看消息在投递漏斗的哪个阶段流失了受众、读取每台设备的消息日志,以及统计电子邮件中的链接点击次数。
messages:list
Anchor link to显示已发送消息的列表。
POST https://api.pushwoosh.com/api/v2/messages:list
| 名称 | 是否必需 | 描述 |
|---|---|---|
Authorization | 是 | 服务器 API 令牌。必须以下列格式提供:Authorization: Api <Server Key>。 |
请求正文参数
Anchor link to| 名称 | 是否必需 | 类型 | 描述 |
|---|---|---|---|
platforms | 否 | Array | 消息平台。可能的值:"IOS"、"ANDROID"、"OSX"、"WINDOWS"、"AMAZON"、"SAFARI"、"CHROME"、"FIREFOX"、"IE"、"EMAIL"、"HUAWEI_ANDROID"、"SMS"。 |
date_range | 否 | Object | 报告期,按消息创建日期筛选。date_from 和 date_to 必须遵循 YYYY-MM-DD 格式(例如 “2000-01-01”);两天都完全包含在内,因此将 date_from 和 date_to 设置为同一日期会返回该整天的数据。日期以 UTC 解释,而不是您账户的时区。 |
campaign | 否 | String | 营销活动代码 |
filters | 是 | Object | 消息筛选器。 |
source | 否 | String | 消息来源。例如:AB_TEST、API、AUTO_PUSH、CP、CSV、CUSTOMER_JOURNEY、EMAIL_API、EMAIL_CP、GEO_ZONE、PUSH_ON_EVENT、RSS。 |
messages_codes | 否 | Array | 从 /createMessage API 响应中获取的消息代码。 |
messages_ids | 否 | Array | 从消息历史记录中获取的消息 ID |
message_type | 否 | String | 消息流筛选器。可选值:"TRANSACTIONAL"、"BROADCAST"、"ALL"。省略时默认为 "ALL"。 |
params | 否 | Object | 指定是否显示消息详情和指标。设置 with_details: true 以在响应中包含 “details” 对象,设置 with_metrics: true 以包含 “metrics” 对象。 |
application | 是 | String | Pushwoosh 应用程序代码。 |
per_page | 否 | Integer | 每页结果数,1 到 499。省略该参数以获取默认的 500 个结果的页面大小;明确传递 500 或更多将被拒绝并返回 400。 |
page | 否 | Integer | 用于分页的从零开始的页码。请参阅下面的深度分页限制。 |
message_type 还决定了不带日期的请求最多可追溯多久。
请求示例
Anchor link to{ "filters": { "platforms": [], // IOS、ANDROID、OSX、WINDOWS、AMAZON、SAFARI、CHROME、FIREFOX、IE、EMAIL、HUAWEI_ANDROID、SMS "date_range": { "date_from": "string", // 必需格式:2000-01-01 "date_to": "string" // 必需格式: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", // 营销活动代码 "messages_ids": [], // 消息 ID "messages_codes": [], // 消息代码 "message_type": "ALL", // TRANSACTIONAL、BROADCAST、ALL(默认) "application": "string" // Pushwoosh 应用程序代码 }, "params": { "with_details": true, // 将消息详情添加到响应中(“details”对象) "with_metrics": true // 将消息指标添加到响应中(“metrics”对象) }, "per_page": 20, // <= 499 "page": 0}响应代码和示例
{ "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": [ // 标签条件 (参见 /developer/api-reference/messages-api/#tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND", // 条件数组的逻辑运算符;可能的值: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": [ // 标签条件 (参见 Messages-api - tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND" // 条件数组的逻辑运算符;可能的值: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 跨度超过 30 天:
{ "error": "exceeded the maximum date interval. Max interval: 30 days"}page × per_page 超过深度分页限制:
{ "error": "requested result window is too large, narrow the date range"}{ "error": "account not found"}totalsByIntervals
Anchor link to根据消息代码返回指标和转化数据,按小时汇总。
POST https://api.pushwoosh.com/api/v2/statistics/messages/totalsByIntervals
授权通过请求标头中的 API 访问令牌处理。
请求正文参数
Anchor link to| 参数名称 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
message_code | string | 从 /createMessage API 响应中获取的消息代码。 | 是 |
platforms | [int] | 平台 | 否 |
请求示例
Anchor link to{ "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // 必需。唯一消息标识符 "platforms": [1, 3, 7, 10, 11, 12] // 可选。平台代码列表}响应字段
Anchor link to| 名称 | 类型 | 描述 |
|---|---|---|
metrics | array | 包含消息指标的数组 |
timestamp | string | 指标的时间。 |
platform | int | 平台代码(例如 iOS、Android)。 |
sends | string | 已发送消息数。 |
opens | string | 已打开消息数。 |
deliveries | string | 已送达消息数。 |
inbox_opens | string | 收件箱打开次数。 |
unshowable_sends | string | 操作系统设置中通知已关闭的设备接受的消息数。不显示横幅,但消息仍会到达应用,如果发送时启用了保存消息到收件箱,则会出现在消息收件箱中。计为成功发送,而非错误。 |
errors | string | 错误数。 |
conversion | object | 包含转化数据 |
sends | string | 已发送消息总数。 |
opens | string | 已打开消息总数。 |
events | array | 包含事件及其统计信息的数组 |
name | string | 事件名称(例如,添加到购物车)。 |
hits | string | 点击次数。 |
conversion | float | 相对于打开的转化率。 |
revenue | float | 收入(仅适用于带有 __amount 和 __currency 属性的事件)。 |
响应示例
Anchor link to{ "metrics": [{ "timestamp": "2024-08-03 15:00:00", // 指标的时间戳,格式为 "YYYY-MM-DD HH:MM:SS" "platform": 3, // 平台代码 "sends": "55902", // 已发送消息数 "opens": "382", // 已打开消息数 "deliveries": "22931", // 已送达消息数 "inbox_opens": "0", // 收件箱中已打开消息数 "unshowable_sends": "2", // 发送到通知已关闭的设备,不显示横幅 "errors": "0" // 遇到的错误数 }], "conversion": { "sends": "55902", // 已发送消息总数 "opens": "772", // 已打开消息总数 "events": [{ "name": "cart_add", // 事件名称 "hits": "96", // 事件的点击次数 "conversion": 0.12, // 相对于打开的转化率 "revenue": 0 // 事件产生的收入(仅适用于带有金额/货币属性的事件) }] }}投递漏斗
Anchor link to使用投递漏斗查看一条消息或一个营销活动的受众在哪个阶段流失(错误、未送达、未打开)以及原因。与按小时返回总计的 totalsByIntervals 不同,漏斗按阶段和流失原因对受众进行细分,每个渠道一条记录,并按平台细分。阶段序列因渠道而异:请参阅下方 GetDeliveryFunnelResponse 字段 中的 stage,了解每个渠道包含哪些阶段。这两个方法都需要服务器 API 令牌。
这两个方法返回相同的响应结构 GetDeliveryFunnelResponse,下面统一说明。
getDeliveryFunnel
Anchor link to返回一条消息的漏斗。
POST https://api.pushwoosh.com/api/v2/statistics/messages/getDeliveryFunnel
| 名称 | 是否必填 | 说明 |
|---|---|---|
Authorization | 是 | 服务器 API 令牌。必须按以下格式提供:Authorization: Api <Server Key>。 |
请求正文参数
Anchor link to| 名称 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
message_code | 是 | 字符串 | 从 /createMessage API 响应中获得的消息代码。 |
platforms | 否 | 整数数组 | 用于筛选漏斗的平台代码。省略则返回消息发送到的所有平台。 |
请求示例
Anchor link to{ "message_code": "A444-AAABBBCC-00112233", // 来自 /createMessage 的消息代码 "platforms": [1, 14] // 可选。iOS、Email}GetDeliveryFunnelResponse 字段
Anchor link to| 名称 | 类型 | 说明 |
|---|---|---|
channels | 数组 | 消息发送到的每个渠道对应一条记录。 |
window_from、window_to | 字符串或 null | 漏斗覆盖的时间段,基于可用数据确定。当 funnel_state 不是 FUNNEL_STATE_READY 时为 null。 |
funnel_state | 字符串 | FUNNEL_STATE_READY:下方漏斗已填充。FUNNEL_STATE_NO_EVENTS:此消息尚未发生任何事件。FUNNEL_STATE_EXPIRED:消息发送时间过久,其漏斗数据已不再可用。在这两种非 READY 情况下,channels 均为空。未知、非本账户或已删除的 message_code 不属于这些状态,见下方 404 响应。 |
channels[]
| 名称 | 类型 | 说明 |
|---|---|---|
channel | 字符串 | CHANNEL_MOBILE_PUSH(iOS、macOS、Android、Amazon、Huawei)、CHANNEL_WEB_PUSH(Safari、Chrome、Firefox)、CHANNEL_EMAIL、CHANNEL_OTHER(SMS、即时通讯应用、Wallet、Windows、Baidu、Xiaomi)、CHANNEL_APP_INBOX。 |
funnel | 数组 | 该渠道的漏斗阶段,见下方 funnel[]。 |
deliveries_form | 字符串 | STAGE_DELIVERIES 阶段携带哪种细分:DELIVERIES_FORM_PER_DEVICE(四行互不重叠,按设备是否会显示提示以及是否已确认拆分)或 DELIVERIES_FORM_BASIC(两行,不按提示状态拆分)。 |
basic_form_reason | 字符串 | 仅当 deliveries_form 为 DELIVERIES_FORM_BASIC 时才有意义:BASIC_FORM_REASON_RETENTION(消息太旧,无法按设备细分)、BASIC_FORM_REASON_UNAVAILABLE(此账户或此消息不支持按设备细分,例如系统消息)、BASIC_FORM_REASON_NO_DELIVERIES(尚未接受任何投递)、BASIC_FORM_REASON_NOT_APPLICABLE(该渠道完全没有提示状态,例如邮件或 App Inbox)。否则为 BASIC_FORM_REASON_UNSPECIFIED:除非 deliveries_form 为 DELIVERIES_FORM_BASIC,否则忽略此字段。 |
confirmed_deliveries | 对象 | 已确认投递的 count 及按 platforms 的细分。不受 STAGE_DELIVERIES 计数上限约束,因此可能与其不同。 |
funnel[](单个阶段)
| 名称 | 类型 | 说明 |
|---|---|---|
stage | 字符串 | STAGE_AUDIENCE(消息定向的所有人)、STAGE_SENT(已被推送服务或邮件提供商接受)、STAGE_ERRORS(在被接受前被拒绝)、STAGE_DELIVERIES(已接受,按确认情况拆分)、STAGE_OPENED(打开消息的唯一设备,App Inbox 则为用户点击打开的条目)、STAGE_INTERACTIONS(仅限邮件:点击、退订、投诉)、STAGE_REACHED/STAGE_READ(仅限 App Inbox,取代 STAGE_DELIVERIES)。 |
count | 字符串 | 该阶段的总计,以数字字符串形式表示。 |
pieces | 数组 | 该阶段自身的细分。对于 STAGE_ERRORS 为空,该阶段改用 errors。每个元素包含 kind(KIND_PASSED 表示进入下一阶段,KIND_REASON 表示未进入,KIND_SUBSET 与另外两者重叠,永远不参与求和)、category(见下方每个阶段的取值列表)、count 以及按 platforms 的细分。 |
errors | 数组 | 仅限 STAGE_ERRORS:category(见下方取值列表)、count、platforms,以及 codes:归入该分类的原始提供商错误代码(platform、code、name、count)。有关每个 name 的含义及修复方法,请参阅发送错误。 |
platforms | 数组 | 该阶段的总计,按平台细分。 |
category 取值
STAGE_AUDIENCE:
ELIGIBLE_AUDIENCE(通过):未被下列任何原因排除。FREQUENCY_CAPPING:因频次限制而跳过。CONTROL_GROUP:被划入对照组。UNSUBSCRIBED:收件人已退订。BOUNCED:收件人地址此前曾退回。COMPLAINT:收件人此前曾将消息标记为垃圾邮件。FILTERED_BY_CATEGORY:收件人已选择退出此消息所属的类别。
STAGE_ERRORS:
NO_TOKEN:设备没有可发送的推送令牌或地址。NO_DEVICE:未找到匹配的设备。PLATFORM_DISABLED:该平台在此应用中已被禁用。INVALID_TOKEN:提供商将设备令牌或地址判定为无效并拒绝。QUOTA_EXCEEDED:提供商对发送进行了限速。INVALID_CONTENT:消息无法按已组合的内容发送。最常见的原因是模板本身构建失败,例如损坏的 Connected Content 或 Liquid 块,而非被提供商拒绝。INVALID_CONFIGURATION:账户自身的提供商配置有误,例如凭据错误、Firebase 项目已删除,或使用了不允许的 APNs topic。PROVIDER_ERROR:提供商返回了不属于上述类别的错误。INTERNAL_ERROR:Pushwoosh 未能处理该次发送。UNCLASSIFIED_ERROR:不符合上述任何类别的流失。预计极少出现。
STAGE_DELIVERIES,DELIVERIES_FORM_PER_DEVICE:
DISPLAYABLE_CONFIRMED(通过):设备显示了提示并确认已接收。DISPLAYABLE_NO_CONFIRMATION:设备本应显示提示,但尚未确认已接收。NOT_DISPLAYABLE_CONFIRMED(通过):静默推送已确认接收。NOT_DISPLAYABLE_NO_CONFIRMATION:静默推送尚未确认接收。
STAGE_DELIVERIES,DELIVERIES_FORM_BASIC:
CONFIRMED_BY_DEVICE(通过):设备已确认接收。NO_CONFIRMATION:尚未确认。
邮件渠道还会额外添加一个与 CONFIRMED_BY_DEVICE 重叠的子集:
BOUNCED_HARD(子集):该地址永久无法送达。BOUNCED_SOFT(子集):该地址暂时无法送达,例如邮箱已满。
BOUNCED_HARD 还可能进一步细分为以下子集行:
BOUNCED_HARD_GENERAL:永久无法送达,没有更具体的原因。BOUNCED_HARD_MAILBOX_FULL:收件人邮箱已满。BOUNCED_HARD_MAILBOX_INACTIVE:收件人邮箱已不存在。BOUNCED_HARD_SUPPRESSED:提供商已将该地址列入黑名单。BOUNCED_HARD_UNDETERMINED:永久无法送达,原因未确定。
BOUNCED_SOFT 还可能进一步细分为以下子集行:
BOUNCED_SOFT_GENERAL:暂时无法送达,没有更具体的原因。BOUNCED_SOFT_MAILBOX_FULL:发送时收件人邮箱已满。BOUNCED_SOFT_CONTENT_REJECTED:收件人邮件服务器拒绝了消息内容。BOUNCED_SOFT_SPAM:收件人邮件服务器将消息标记为垃圾邮件。BOUNCED_SOFT_MESSAGE_TOO_LARGE:消息对收件人邮箱来说过大。BOUNCED_SOFT_ATTACHMENT_REJECTED:收件人邮件服务器拒绝了附件。BOUNCED_SOFT_CUSTOM_TIMEOUT_EXCEEDED:收件人邮件服务器响应耗时过长。BOUNCED_SOFT_UNDETERMINED:暂时无法送达,原因未确定。BOUNCED_UNDETERMINED:收件人服务器接受了邮件但从未确认投递;结果未知,且该地址未被列入屏蔽名单。计为软退回。
BOUNCED_UNCLASSIFIED 是一次退回(硬退回或软退回),但不符合上述任何子类型。预计极少出现,不应据此构建业务逻辑。
STAGE_OPENED,仅限邮件(其他渠道只报告该阶段的 count,不含子项):
OPENED_BY_RECIPIENT(通过):由真人打开。MACHINE_OPENS_ONLY:仅被自动扫描程序打开。OPEN_TYPE_UNKNOWN:无法判断是真人还是扫描程序打开的。MACHINE_OPENS_AMPP(子集):当此消息无法获得人工/扫描程序拆分数据时,取代上述三行。改为统计 Apple Mail Privacy Protection 自身的机器打开数量,并与阶段总计重叠。
STAGE_INTERACTIONS,仅限邮件:
CLICKED_ONLY(通过):点击了链接,仍保持订阅。CLICKED_AND_UNSUBSCRIBED:点击了链接并退订。CLICKED_AND_COMPLAINED:点击了链接并将消息标记为垃圾邮件。UNSUBSCRIBED_WITHOUT_CLICK:未点击即退订。COMPLAINED_WITHOUT_CLICK:未点击即将消息标记为垃圾邮件。
STAGE_REACHED,仅限 App Inbox:
REACHED(通过):该条目至少被应用获取过一次。NOT_FETCHED_YET:尚未被获取。
STAGE_READ,仅限 App Inbox:
READ(通过):已标记为已读。DISMISSED_UNREAD:用户在未读的情况下将其删除。UNREAD:仍未读地留在收件箱中。EXPIRED_UNREAD:与UNREAD相同,但该条目此后已从收件箱中过期移除。DISMISSED(子集):所有被删除的条目,无论已读与否。与READ和DISMISSED_UNREAD重叠。
响应代码
{ "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"}空的 channels 数组配合 funnel_state: "FUNNEL_STATE_NO_EVENTS" 表示此消息尚未发生任何事件,这不是错误。发送时间过久、漏斗数据已不可用的 message_code 同样会返回 200,channels 为空数组,funnel_state: "FUNNEL_STATE_EXPIRED"。
未知的 message_code、属于其他账户的,或已被删除的:
{ "error": "message not found"}{ "error": "invalid auth token"}getCampaignDeliveryFunnel
Anchor link to对一个营销活动所有消息的 getDeliveryFunnel 求和。唯一计数按每条消息单独计算:同一位订阅者被该活动的多条消息触达时,会在每条消息中各计一次。
POST https://api.pushwoosh.com/api/v2/statistics/messages/getCampaignDeliveryFunnel
| 名称 | 是否必填 | 说明 |
|---|---|---|
Authorization | 是 | 服务器 API 令牌。必须按以下格式提供:Authorization: Api <Server Key>。 |
请求正文参数
Anchor link to| 名称 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
campaign_code | 是 | 字符串 | 营销活动代码。 |
platforms | 否 | 整数数组 | 用于筛选漏斗的平台代码。省略则返回该活动发送到的所有平台。 |
请求示例
Anchor link to{ "campaign_code": "AAAAA-XXXXX", // 营销活动代码 "platforms": [1, 14] // 可选。iOS、Email}与上方 GetDeliveryFunnelResponse 结构相同。
响应代码
对于给定 campaign_code 和 platforms 的空受众,同样会返回 200,channels 为空数组,funnel_state: "FUNNEL_STATE_NO_EVENTS"。发送时间过久、漏斗数据已不可用的营销活动同样会返回 200,channels 为空数组,funnel_state: "FUNNEL_STATE_EXPIRED"。二者均不是错误。
未知的 campaign_code、属于其他账户的,或其所有消息均已被删除的活动。仅部分消息被删除的活动不受影响:已删除的消息仍计入其漏斗。
{ "error": "campaign not found"}{ "error": "invalid auth token"}getMessageLog
Anchor link to显示有关已发送消息的详细信息。
POST https://api.pushwoosh.com/api/v2/statistics/getMessageLog
| 名称 | 是否必需 | 描述 |
|---|---|---|
Authorization | 必需 | 来自 Pushwoosh 控制面板的 API 访问令牌。 |
请求正文参数
Anchor link to| 名称 | 是否必需 | 类型 | 描述 |
|---|---|---|---|
message_id | 否 | Integer | 通过从消息历史记录中获取的消息 ID 选择消息事件。示例:12345678900。 |
message_code | 否 | String | 通过从 /createMessage API 响应中获取的消息代码选择消息事件。示例:"A444-AAABBBCC-00112233"。 |
campaign_code | 否 | String | 通过在消息负载中指定的营销活动代码选择消息事件。示例:"AAAAA-XXXXX"。 |
hwid | 否 | String 或 Array | 通过 HWID (硬件 ID) 或 HWID 数组选择消息事件。 |
date_from | 如果未提供 message_id、message_code 或 campaign_code,则为必需 | Datetime | 用于筛选消息的开始日期。格式:"YYYY-MM-DD HH:MM:SS"。示例:"2000-01-25 00:00:00"。 |
date_to | 如果未提供 message_id、message_code 或 campaign_code,则为必需 | Datetime | 用于筛选消息的结束日期。格式:"YYYY-MM-DD HH:MM:SS"。示例:"2000-01-26 00:00:00"。 |
limit | 否 | Integer | 单个响应中返回的最大消息事件数。最大值:100000。 |
pagination_token | 否 | String | 从上一个 /getMessageLog 响应中获取的分页令牌。用它来检索其他结果。 |
user_id | 否 | String | 通过自定义用户 ID选择消息事件。有关更多详细信息,请参阅 /registerUser。 |
application_code | 是 | String | 通过 Pushwoosh 应用程序代码选择消息事件 |
actions | 否 | Array | 按特定消息操作筛选结果。可能的值:"sent"、"delivered"、"opened"、"reject"、"create"、"inbox_delivered"、"inbox_read"、"inbox_opened"、"inbox_deleted"。默认情况下,"create" 事件会从响应中排除。在此数组中包含 "create" 以查看它们。"delivered" 事件另外要求在账户上启用送达统计。 |
platforms | 否 | Array | 用于筛选结果的目标平台数组。可能的值:"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 | 否 | String | 按消息流筛选结果。"all"(如果省略则为默认值)返回所有内容,"broadcast" 仅返回群发消息 (message_id != 0),"transactional" 仅返回 message_id = 0 的消息,包括从 Customer Journey 发送的消息。 |
请求示例
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", // 可选,用于分页的令牌 "limit": 1000, // 可选,单个响应的最大条目数 "application_code": "XXXXX-XXXXX", // Pushwoosh 应用代码 "message_code": "A444-AAABBBCC-00112233", // 可选,从 /createMessage 请求获取的消息代码 "message_id": 1234567890, // 可选,从 Pushwoosh 控制面板获取的消息 ID "campaign_code": "AAAAA-XXXXX", // 可选,要获取日志的营销活动代码 "hwid": "aaazzzqqqqxxx", // 可选,消息所针对的特定设备的硬件 ID "user_id": "user_123", // 可选,消息所针对的用户的 ID "date_from": "2000-01-25 00:00:00", // 可选,统计周期的开始 "date_to": "2000-02-10 23:59:59", // 可选,统计周期的结束 "actions": ["opened", "inbox_opened"], // 可选,用于结果过滤。可能的值:"sent"、"delivered"、"opened"、"reject"、"create"、"inbox_delivered"、"inbox_read"、"inbox_opened"、"inbox_deleted"。响应将包括所有具有指定操作的消息。 "platforms": ["ios", "chrome"], // 可选,用于结果过滤,仅限小写。可能的值:"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" // 可选,“all”(默认)、“broadcast”(message_id != 0)或“transactional”(message_id = 0,包括 Customer Journey 发送)}'响应代码和示例
{ "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"}data 中的每个条目还带有 error_reason(字符串,当 status 为 "failed" 时填充失败原因)和一个可选的 payload(字符串)。
响应页面返回的结果可能比请求的 limit 少。这本身并不意味着导出已完成。
电子邮件统计
Anchor link tolinksInteractions
Anchor link to显示电子邮件中链接点击的统计数据
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions
| 名称 | 是否必需 | 描述 |
|---|---|---|
Authorization | 是 | 来自 Pushwoosh 控制面板的 API 访问令牌。 |
请求正文参数
Anchor link to| 名称 | 是否必需 | 类型 | 描述 |
|---|---|---|---|
date_range | 否 | Object | 定义报告期。包含 date_from 和 date_to。 |
filters | 是 | Object | 电子邮件筛选器。 |
application | 是 | String | Pushwoosh 应用程序代码(或者,指定 campaign、messages_ids 或 message_codes)。 |
messages_codes | 是 | Array | 消息代码(或者,指定 application、campaign 或 messages_ids)。 |
campaign | 是 | String | 营销活动代码(或者,指定 application、messages_ids 或 message_codes)。 |
messages_ids | 是 | Array | 消息 ID(或者,指定 application、campaign 或 message_codes)。 |
link_template | 如果指定了 application 或 campaign,则为必需。 | String | 按关键字筛选电子邮件链接交互。只有 URL 中包含指定文本的链接才会在 API 响应中返回。例如,如果您的电子邮件包含 https://example.com/news 和 https://example.com/shop 等链接,设置 "link_template": "shop" 将仅返回 https://example.com/shop 的交互。 |
email_content_code | 否 | String | 电子邮件内容的唯一标识符。 |
params | 否 | Object | 定义其他响应选项。包括 with_full_links,它会添加一个包含统计信息的完整链接列表。 |
请求示例
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", // 必需格式:2000-01-01 "date_to": "string" // 必需格式:2000-01-01 }, "campaign": "string", // 营销活动代码(您可以指定 application、messages_ids 或 message_codes) "application": "string", // 应用程序代码(您可以指定 campaign、messages_ids 或 message_codes) "messages_ids": [], // 消息 ID(您可以指定 application、campaign 或 message_codes) "messages_codes": [], // 消息代码(您可以指定 application、campaign 或 message_ids) "link_template": "string", // 链接模板(如果指定了 application 或 campaign 则为必需) "email_content_code": "string" // 电子邮件内容的唯一标识符。 }, "params": { "with_full_links": true // 指定是否显示详细统计信息。一个包含统计信息的完整链接列表将在 full_links 数组中传递。 }}'响应代码和示例
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 to显示点击了电子邮件中链接的用户
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices
| 名称 | 是否必需 | 描述 |
|---|---|---|
Authorization | 是 | 来自 Pushwoosh 控制面板的 API 访问令牌。 |
请求正文参数
Anchor link to| 名称 | 是否必需 | 类型 | 描述 |
|---|---|---|---|
date_range | 否 | Object | 定义报告期。包含 date_from 和 date_to。 |
filters | 是 | Object | 电子邮件筛选器。 |
application | 是 | String | Pushwoosh 应用程序代码(或者,指定 campaign、messages_ids 或 message_codes)。 |
messages_codes | 是 | Array | 消息代码(或者,指定 application、campaign 或 messages_ids)。 |
campaign | 是 | String | 营销活动代码(或者,指定 application、messages_ids 或 message_codes)。 |
messages_ids | 是 | Array | 消息 ID(或者,指定 application、campaign 或 message_codes)。 |
link_template | 如果指定了 application 或 campaign,则为必需。 | String | 按关键字筛选电子邮件链接交互。只有 URL 中包含指定文本的链接才会在 API 响应中返回。例如,如果您的电子邮件包含 https://example.com/news 和 https://example.com/shop 等链接,设置 "link_template": "shop" 将仅返回 https://example.com/shop 的交互。 |
email_content_code | 否 | String | 电子邮件内容的唯一标识符。 |
page | 否 | Integer | 用于分页的页码。 |
per_page | 否 | Integer | 每页结果数(≤ 1000)。 |
请求示例
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", // 必需格式:2000-01-01 "date_to": "string" // 必需格式:2000-01-01 }, "campaign": "string", // 营销活动代码(您可以指定 application、messages_ids 或 message_codes) "application": "string", // 应用程序代码(您可以指定 campaign、messages_ids 或 message_codes) "messages_ids": [], // 消息 ID(您可以指定 application、campaign 或 message_codes) "messages_codes": [], // 消息代码(您可以指定 application、campaign 或 message_ids) "link_template": "string", // 链接模板(如果指定了 application 或 campaign 则为必需) "email_content_code": "string" // 电子邮件内容的唯一标识符。 }, "per_page": 100, "page": 0}'响应代码和示例
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
提供有关电子邮件投诉、软退回和硬退回的数据,包括每次退回的日期、电子邮件地址和原因。
授权通过请求标头中的 API 访问令牌处理。
请求正文参数
Anchor link to| 参数名称 | 类型 | 描述 | 是否必需 |
|---|---|---|---|
application | string | Pushwoosh 应用程序代码 | 是 |
message_code | string | 消息代码。 | 如果未提供 date range 或 campaign,则为必需 |
campaign | string | 营销活动代码。 | 如果未提供 message_code 或 date range,则为必需 |
date_from | string | 数据的开始日期,格式为 YYYY-MM-DDTHH:MM:SS.000Z(ISO 8601 标准)。 | 如果未提供 message_code 或 campaign,则为必需 |
date_to | string | 数据的结束日期,格式为 YYYY-MM-DDTHH:MM:SS.000Z(ISO 8601 标准)。 | 如果未提供 message_code 或 campaign,则为必需 |
per_page | int | 每页行数,最多 5000。 | 是 |
page | int | 页码,从零开始。 | 是 |
type | string | 退回类型:Complaint、Softbounce、Hardbounce。 | 否 |
请求示例
Anchor link to{ "application": "XXXXX-XXXXX", // 必需。Pushwoosh 应用代码 "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // 如果未提供 campaign 或日期范围,则为必需。 // 唯一消息标识符 "campaign": "XXXXX-XXXXX", // 如果未提供 message_code 或日期范围,则为必需。 // 营销活动代码 "date_from": "2024-07-20T00:00:00.000Z", // 如果未提供 message_code 或 campaign,则为必需。 // 开始日期,ISO 8601 格式 "YYYY-MM-DDTHH:MM:SS.SSSZ" "date_to": "2024-07-20T00:00:00.000Z", // 如果未提供 message_code 或 campaign,则为必需。 // 结束日期,ISO 8601 格式 "YYYY-MM-DDTHH:MM:SS.SSSZ" "per_page": 1000, // 必需。每页结果数,最多 5000 "page": 5, // 可选。页码,从零开始 "type": "Softbounce" // 可选。退回类型:Complaint、Softbounce、Hardbounce}响应字段
Anchor link to| 字段名称 | 类型 | 描述 |
|---|---|---|
total | int | 总行数。 |
bounced_emails | array | 退回电子邮件详情的数组。 |
├── email | string | 退回的电子邮件地址。 |
├── date | string | 退回日期(格式:YYYY-MM-DDTHH:MM:SS.000Z)。 |
├── reason | string | 退回原因。 |
└── type | string | 退回类型:Complaint、Softbounce、Hardbounce。 |
响应示例
Anchor link to{ "total": 25, // 总行数。 "bounced_emails": [{ "email": "example@example.com", // 退回的电子邮件地址 "date": "2024-07-20T00:00:00.000Z", // 退回日期,ISO 8601 格式 "reason": "Invalid recipient address", // 退回原因 "type": "Hardbounce" // 退回类型:Complaint、Softbounce、Hardbounce }]}