求HubSpot API v3批量上传营销/非营销联系人的C#/Curl示例
HubSpot API v3 批量上传联系人并标记营销状态示例
Curl 示例
使用批量创建端点 /crm/v3/objects/contacts/batch/create(或batch/upsert用于更新已有联系人),通过marketing_status字段指定营销状态:
curl --request POST \ --url https://api.hubapi.com/crm/v3/objects/contacts/batch/create \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "inputs": [ { "properties": { "email": "marketing-contact-1@example.com", "firstname": "John", "lastname": "Doe", "marketing_status": "MARKETING_CONTACT" } }, { "properties": { "email": "non-marketing-contact-1@example.com", "firstname": "Jane", "lastname": "Smith", "marketing_status": "NON_MARKETING_CONTACT" } } ] }'
核心说明:
- 替换
YOUR_ACCESS_TOKEN为你的HubSpot OAuth2令牌,也可改用Hapikey: YOUR_HUBSPOT_API_KEY作为Authorization头,v3仍兼容API密钥但推荐OAuth marketing_status仅支持两个枚举值:MARKETING_CONTACT(营销联系人)、NON_MARKETING_CONTACT(非营销联系人)- 若要根据已有字段(如email)更新联系人,改用
/crm/v3/objects/contacts/batch/upsert端点,请求体需添加idProperty指定匹配字段:"inputs": [ { "idProperty": "email", "properties": { "email": "existing-contact@example.com", "marketing_status": "MARKETING_CONTACT" } } ]
C# 示例
使用HttpClient实现批量上传,包含营销状态标记逻辑:
using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; class HubSpotContactBatchUpload { static async Task Main(string[] args) { var accessToken = "YOUR_ACCESS_TOKEN"; var apiUrl = "https://api.hubapi.com/crm/v3/objects/contacts/batch/create"; var contacts = new List<ContactInput> { new ContactInput { Properties = new Dictionary<string, string> { {"email", "marketing-contact-2@example.com"}, {"firstname", "Bob"}, {"lastname", "Brown"}, {"marketing_status", "MARKETING_CONTACT"} } }, new ContactInput { Properties = new Dictionary<string, string> { {"email", "non-marketing-contact-2@example.com"}, {"firstname", "Alice"}, {"lastname", "Williams"}, {"marketing_status", "NON_MARKETING_CONTACT"} } } }; var batchRequest = new { inputs = contacts }; var jsonPayload = JsonConvert.SerializeObject(batchRequest); using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(apiUrl, content); if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); Console.WriteLine("批量上传成功:"); Console.WriteLine(responseContent); } else { var errorContent = await response.Content.ReadAsStringAsync(); Console.WriteLine($"上传失败,状态码:{response.StatusCode}"); Console.WriteLine("错误信息:"); Console.WriteLine(errorContent); } } private class ContactInput { public Dictionary<string, string> Properties { get; set; } // 若使用upsert逻辑,添加以下字段: // public string IdProperty { get; set; } = "email"; } }
核心说明:
- 需安装
Newtonsoft.JsonNuGet包(执行Install-Package Newtonsoft.Json命令) - 切换到更新(upsert)模式时,将API地址改为
https://api.hubapi.com/crm/v3/objects/contacts/batch/upsert,并在ContactInput类中设置IdProperty指定匹配字段 - 确保你的HubSpot应用拥有
crm.objects.contacts.write权限及营销联系人管理权限
内容的提问来源于stack exchange,提问作者cdboy
相关产品推荐
相关产品推荐

