You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过Facebook Marketing API获取提交申请与预约数据?

无法通过Facebook Ads API获取提交申请和预约完成指标的问题

我在Ads Manager后台可以正常查看「提交的申请」和「已完成的预约」这两个转化指标,但通过Facebook Graph API调用广告账户洞察数据时,除了这两个指标外,其余所有指标(比如曝光、花费、线索量等)都能正常获取。尝试了各种排查方法都没解决问题。

当前代码能获取到leads数据,但始终拿不到「提交的申请」和「已完成的预约」的数值,代码如下:

var urlAdAccountInsights = "https://graph.facebook.com/v22.0/act_" + adAccountId + 
"/insights?fields=campaign_name%2cimpressions%2cspend%2ccpc%2cctr%2ccpm%2cfrequency%2cclicks%2cinline_link_clicks%2cactions%2caction_values%2cconversion_values" + 
"&date_preset=this_month&access_token=" + token;


var responseCampaignInsights = UrlFetchApp.fetch(urlAdAccountInsights);
var json = JSON.parse(responseCampaignInsights);
var data = json.data;


if (data.length > 0) {
var et = JSON.stringify(data);
var sub = et.substring(1, et.length - 1);
var campaignData = JSON.parse(sub);

var campaignName = campaignData.campaign_name;
var impressions = campaignData.impressions;
var spend = campaignData.spend;
var cpc = campaignData.cpc;
var cpm = campaignData.cpm;
var ctr = campaignData.ctr;
var frequency = campaignData.frequency;
var clicks = campaignData.clicks;
var linkclicks = campaignData.inline_link_clicks;


var leads = 0;
  var applications = 0;
  var appointments = 0;

if (campaignData.actions) {
    campaignData.actions.forEach(action => {
        if (action.action_type === "lead") {
            leads = action.value;
        } else if (action.action_type === "SubmitApplication") {
            applications = action.value;
        } else if (action.action_type === "schedule_total") {
            appointments = action.value;
        }
    });
}


Logger.log(campaignData);

问题排查与解决方案

1. 核心问题:错误的action_type枚举值

Meta的转化动作类型有严格的大小写和枚举规则,你使用的SubmitApplicationschedule_total大概率不是官方定义的正确值。

验证方法:先调用API获取当前账户下所有可用的action类型,确认目标指标对应的准确标识:

GET act_{AD_ACCOUNT_ID}/insights?fields=actions.action_type&level=campaign&date_preset=this_month&access_token={TOKEN}

返回结果中会列出所有可统计的action_type,比如提交申请通常对应submit_application(全小写),预约完成可能对应schedule_appointment或你自定义的像素事件名称。

2. 补充API请求参数

需要在请求中添加action_breakdowns=action_type,确保数据按动作类型拆分返回,避免聚合导致的指标缺失:

var urlAdAccountInsights = "https://graph.facebook.com/v22.0/act_" + adAccountId + 
"/insights?fields=campaign_name,impressions,spend,cpc,ctr,cpm,frequency,clicks,inline_link_clicks,actions,action_values,conversion_values" + 
"&action_breakdowns=action_type&date_preset=this_month&access_token=" + token;

3. 修正代码逻辑

  • 移除原代码中把数组转字符串再解析的错误操作(会丢失多活动数据),直接遍历返回的data数组
  • 替换action_type判断为实际查到的正确值

修改后的代码示例:

var urlAdAccountInsights = "https://graph.facebook.com/v22.0/act_" + adAccountId + 
"/insights?fields=campaign_name,impressions,spend,cpc,ctr,cpm,frequency,clicks,inline_link_clicks,actions,action_values,conversion_values" + 
"&action_breakdowns=action_type&date_preset=this_month&access_token=" + token;

var responseCampaignInsights = UrlFetchApp.fetch(urlAdAccountInsights);
var json = JSON.parse(responseCampaignInsights);
var data = json.data;

if (data.length > 0) {
  // 遍历所有活动数据,避免丢失多条目
  data.forEach(campaignData => {
    var campaignName = campaignData.campaign_name;
    var impressions = campaignData.impressions;
    var spend = campaignData.spend;
    var cpc = campaignData.cpc;
    var cpm = campaignData.cpm;
    var ctr = campaignData.ctr;
    var frequency = campaignData.frequency;
    var clicks = campaignData.clicks;
    var linkclicks = campaignData.inline_link_clicks;

    var leads = 0;
    var applications = 0;
    var appointments = 0;

    if (campaignData.actions) {
      campaignData.actions.forEach(action => {
        // 替换为你实际查到的action_type值
        switch(action.action_type) {
          case "lead":
            leads = parseInt(action.value);
            break;
          case "submit_application":
            applications = parseInt(action.value);
            break;
          case "schedule_appointment":
            appointments = parseInt(action.value);
            break;
        }
      });
    }

    Logger.log(`活动:${campaignName},线索:${leads},提交申请:${applications},预约完成:${appointments}`);
  });
}

额外注意事项

  • 确保access_token拥有ads_read权限,且广告账户已授权给对应应用
  • 如果是自定义像素事件,需要确认像素已正确关联广告系列,且事件已被Meta标记为可统计的转化动作

内容的提问来源于stack exchange,提问作者Marcus Gagye

火山引擎 最新活动