You need to enable JavaScript to run this app. 创建Webhook对接Google Ads线索表单与Salesforce后测试数据无记录如何解决
优惠活动
大模型
产品
解决方案
定价
更多

创建Webhook对接Google Ads线索表单与Salesforce后测试数据无记录如何解决

排查及修复方案

  • 入参结构不匹配问题
    你当前的doPost方法直接声明入参为List<Map<String,String>> user_column_data,但Google Ads发送的请求体是完整的JSON对象,user_column_data只是这个顶级对象下的一个属性,Salesforce无法直接将请求体反序列化为你声明的入参,会直接报400错误,请求根本不会进入你的业务逻辑。
    修正方式:改为从RestContext中读取原始请求体自行解析,示例如下:
@RestResource(urlMapping='/Lead/*')
global with sharing class MyRestResource {
  
  @HttpPost
    global static String doPost() {
        // 读取原始请求体
        String requestBody = RestContext.request.requestBody.toString();
        Map<String, Object> reqMap = (Map<String, Object>) JSON.deserializeUntyped(requestBody);
        List<Map<String,Object>> userColumnData = (List<Map<String,Object>>) reqMap.get('user_column_data');
        
        Map<String, String> user_data = new Map<String,String>();
        for( Map<String,Object> field_data : userColumnData){
            user_data.put( (String)field_data.get('column_id'), (String)field_data.get('string_value') );
        }
        
        Lead lead = new Lead();
        lead.Status = 'New';
        // 补充必填字段LastName,Lead标准对象LastName为必填项,你之前的代码漏了赋值,会导致插入失败
        lead.LastName = user_data.get('LAST_NAME');
        lead.FirstName = user_data.get('FIRST_NAME');
        lead.Company = user_data.get('COMPANY_NAME');
        lead.Phone = user_data.get('PHONE_NUMBER');
        lead.Email = user_data.get('EMAIL');
        lead.City = user_data.get('CITY');
        lead.State = user_data.get('REGION');
        try{
            insert lead;
            return lead.Id;
        } catch (exception e){
            // 打印完整异常信息方便排查
            System.debug('插入Lead失败: ' + e.getMessage() + e.getStackTraceString());
            RestContext.response.statusCode = 500;
            return '插入失败: ' + e.getMessage();
        }
    }
}
  • 字段权限校验
    确认Site Guest用户对Lead对象的以下字段拥有编辑权限:FirstName、LastName、Company、Phone、Email、City、State、Status,缺少任意字段的编辑权限都会导致插入失败。

  • 请求路径校验
    确认你在Google Ads中配置的Webhook地址格式正确,标准格式为:https://你的Salesforce站点域名/services/apexrest/Lead,不要遗漏/services/apexrest/前缀。

  • 调试建议

  1. 先使用Postman工具模拟发送你提供的测试JSON到上述接口,确认接口返回正常、Lead成功插入后,再用Google Ads的测试功能发送请求
  2. 在Salesforce设置中开启针对Site Guest用户的调试日志,可查看请求的完整执行过程和异常信息

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 16:45:03