You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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.Json NuGet包(执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:55:11