如何通过Facebook Marketing API获取Ads Action Stats数据及转化指标
解决Facebook Ads Insights获取转化数据(AdsActionStats)的问题
你已经搞定了基础的广告指标,但在转化数据上卡壳很正常——Facebook的转化数据不像点击、曝光是单一字段,得靠action_stats(对应AdsActionStats对象)才能拿到详细的转化动作信息。
问题核心
你当前请求的conversions只是一个汇总值,如果要获取具体的转化类型(比如表单提交、购买、注册)及对应数量,必须显式请求action_stats字段,它会返回包含所有转化动作的结构化数组。
修改后的请求代码
直接在fields参数里加上action_stats就行:
$campaign = $fb->get( $campaign['id'].'/insights?fields=impressions,spend,clicks,ctr,conversions,action_stats', $access_token );
解析转化数据示例
action_stats返回的是一个数组,每个元素包含转化类型、数量、归因窗口等信息,你可以这样解析:
// 将接口返回结果转为数组格式 $insightsData = $campaign->getGraphEdge()->asArray(); foreach ($insightsData as $entry) { // 输出基础指标 echo "曝光量: {$entry['impressions']}\n"; echo "总花费: {$entry['spend']}\n"; echo "点击量: {$entry['clicks']}\n"; // 处理转化详情 if (isset($entry['action_stats'])) { echo "\n转化明细:\n"; foreach ($entry['action_stats'] as $action) { echo "转化类型: {$action['action_type']} | 完成数量: {$action['value']}\n"; // 若需要归因窗口信息,可额外输出 $action['attribution_window'] } } }
实用小技巧
- 如果你只关心特定转化类型(比如购买),可以用
filtering参数精准过滤:$campaign = $fb->get( $campaign['id'].'/insights?fields=impressions,spend,clicks,ctr,conversions,action_stats&filtering=[{\'field\':\'action_type\',\'operator\':\'IN\',\'value\':[\'purchase\']}]', $access_token ); - 若需要转化价值数据,可同时请求
action_values字段,它会返回每个转化类型对应的价值总和。 - 记得确认你的access token拥有
ads_read权限,且目标广告系列确实产生了转化数据,否则action_stats会返回空数组。
内容的提问来源于stack exchange,提问作者Hasnain Ali




