วิธีใช้ HubSpot API ปี 2026

Ashley Innocent

Ashley Innocent

25 March 2026

วิธีใช้ HubSpot API ปี 2026

Apidog สำหรับองค์กร

ติดตั้งภายในองค์กร

SSO & RBAC

รองรับ SOC 2

สำรวจ Apidog Enterprise

สรุปสาระสำคัญ

API ของ HubSpot ช่วยให้นักพัฒนาสามารถผสานรวมกับ CRM, การตลาด, การขาย และศูนย์บริการ (service hubs) ได้โดยอัตโนมัติ โดยใช้การยืนยันตัวตนด้วย OAuth 2.0 และ Private App รวมถึง RESTful endpoints สำหรับผู้ติดต่อ, บริษัท, ดีล, ตั๋วสนับสนุน และอื่นๆ พร้อมการจำกัดจำนวนคำขอ (rate limits) ตามระดับการสมัครสมาชิก คู่มือนี้ครอบคลุมการตั้งค่าการยืนยันตัวตน, endpoints หลัก, webhooks และกลยุทธ์การผสานรวมสำหรับการใช้งานจริง

บทนำ

HubSpot จัดการบัญชีลูกค้ากว่า 194,000 บัญชี และบันทึก CRM หลายพันล้านรายการ สำหรับนักพัฒนาที่สร้างการผสานรวม CRM, ระบบการตลาดอัตโนมัติ หรือเครื่องมือการขาย การผสานรวมกับ HubSpot API ไม่ใช่ทางเลือก แต่เป็นสิ่งจำเป็นสำหรับการเข้าถึงผู้ใช้งานกว่า 7 ล้านคน

นี่คือความเป็นจริง: ธุรกิจต่างๆ เสียเวลา 15-20 ชั่วโมงต่อสัปดาห์ไปกับการป้อนข้อมูลด้วยตนเองระหว่างระบบ การผสานรวม HubSpot API ที่แข็งแกร่งจะช่วยให้การซิงโครไนซ์ผู้ติดต่อ, การอัปเดตดีล, เวิร์กโฟลว์การตลาด และการรายงานข้ามแพลตฟอร์มเป็นไปโดยอัตโนมัติ

💡
Apidog ช่วยให้การทดสอบการผสานรวม API ง่ายขึ้น ทดสอบ HubSpot endpoints ของคุณ, ตรวจสอบความถูกต้องของ OAuth flows, ตรวจสอบ webhook payloads และแก้ไขข้อผิดพลาดในการยืนยันตัวตนได้ในพื้นที่ทำงานเดียว นำเข้าข้อกำหนด API, ตอบกลับจำลอง และแบ่งปันสถานการณ์การทดสอบกับทีมของคุณ
ปุ่ม

HubSpot API คืออะไร?

HubSpot มี RESTful API สำหรับการเข้าถึงข้อมูล CRM และฟังก์ชันการทำงานด้านการตลาดอัตโนมัติ API จัดการสิ่งต่อไปนี้:

คุณสมบัติหลัก

คุณสมบัติ คำอธิบาย
การออกแบบ RESTful เมธอด HTTP มาตรฐานพร้อมการตอบกลับ JSON
OAuth 2.0 + Private Apps ตัวเลือกการยืนยันตัวตนที่ยืดหยุ่น
Webhooks การแจ้งเตือนแบบเรียลไทม์สำหรับการเปลี่ยนแปลงออบเจกต์
การจำกัดจำนวนคำขอ การจำกัดตามระดับ (100-400 คำขอ/วินาที)
ออบเจกต์ CRM รองรับออบเจกต์มาตรฐานและที่กำหนดเอง
การเชื่อมโยง เชื่อมโยงออบเจกต์เข้าด้วยกัน (ผู้ติดต่อ-บริษัท, ดีล-ผู้ติดต่อ)
คุณสมบัติ ฟิลด์ที่กำหนดเองสำหรับออบเจกต์ทุกประเภท
Search API การกรองและการจัดเรียงที่ซับซ้อน

ภาพรวมสถาปัตยกรรม API

HubSpot ใช้ REST API ที่มีเวอร์ชัน:

https://api.hubapi.com/

การเปรียบเทียบเวอร์ชัน API

เวอร์ชัน สถานะ การยืนยันตัวตน กรณีการใช้งาน
CRM API v3 ปัจจุบัน OAuth 2.0, Private App การผสานรวมใหม่ทั้งหมด
Automation API v4 ปัจจุบัน OAuth 2.0, Private App การลงทะเบียนเวิร์กโฟลว์
Marketing Email API ปัจจุบัน OAuth 2.0, Private App แคมเปญอีเมล
Contacts API v1 เลิกใช้งานแล้ว API Key (เดิม) ย้ายไปใช้ v3
Companies API v1 เลิกใช้งานแล้ว API Key (เดิม) ย้ายไปใช้ v3

สำคัญ: HubSpot ได้ยกเลิกการใช้งาน API key authentication และหันมาใช้ OAuth 2.0 และ Private Apps แทน โปรดย้ายการผสานรวมทั้งหมดทันที

เริ่มต้นใช้งาน: การตั้งค่าการยืนยันตัวตน

ขั้นตอนที่ 1: สร้างบัญชีนักพัฒนา HubSpot ของคุณ

ก่อนเข้าถึง API:

  1. เยี่ยมชม HubSpot Developer Portal
  2. ลงชื่อเข้าใช้ด้วยบัญชี HubSpot ของคุณ (หรือสร้างบัญชีใหม่)
  3. ไปที่ Apps ในแดชบอร์ดนักพัฒนา
  4. คลิก Create app

ขั้นตอนที่ 2: เลือกวิธีการยืนยันตัวตน

HubSpot รองรับวิธีการยืนยันตัวตนสองวิธี:

วิธี เหมาะสมที่สุดสำหรับ ระดับความปลอดภัย
OAuth 2.0 แอปแบบหลายผู้เช่า, การผสานรวมสาธารณะ สูง (โทเค็นที่จำกัดผู้ใช้)
Private App การผสานรวมภายใน, พอร์ทัลเดียว สูง (โทเค็นที่จำกัดพอร์ทัล)

ขั้นตอนที่ 3: ตั้งค่า Private App (แนะนำสำหรับการผสานรวมภายใน)

สร้าง Private App สำหรับการเข้าถึงพอร์ทัลเดียว:

  1. ไปที่ Settings > Integrations > Private Apps
  2. คลิก Create a private app
  3. กำหนดค่าสิทธิ์ (scopes):
contacts
crm.objects.companies
crm.objects.deals
crm.objects.tickets
automation
webhooks
  1. สร้างโทเค็นการเข้าถึง
  2. คัดลอกและจัดเก็บอย่างปลอดภัย
# .env file
HUBSPOT_ACCESS_TOKEN="pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
HUBSPOT_PORTAL_ID="12345678"

ขั้นตอนที่ 4: ตั้งค่า OAuth 2.0 (สำหรับแอปแบบหลายผู้เช่า)

กำหนดค่า OAuth สำหรับการเข้าถึงหลายพอร์ทัล:

  1. ไปที่ Apps > Create app
  2. กำหนดค่าการตั้งค่าการยืนยันตัวตน:
const HUBSPOT_CLIENT_ID = process.env.HUBSPOT_CLIENT_ID;
const HUBSPOT_CLIENT_SECRET = process.env.HUBSPOT_CLIENT_SECRET;
const HUBSPOT_REDIRECT_URI = process.env.HUBSPOT_REDIRECT_URI;

// Build authorization URL
const getAuthUrl = (state) => {
  const params = new URLSearchParams({
    client_id: HUBSPOT_CLIENT_ID,
    redirect_uri: HUBSPOT_REDIRECT_URI,
    scope: 'crm.objects.contacts.read crm.objects.contacts.write',
    state: state,
    optional_scope: 'crm.objects.deals.read'
  });

  return `https://app.hubspot.com/oauth/authorize?${params.toString()}`;
};

ขั้นตอนที่ 5: แลกเปลี่ยนโค้ดเพื่อรับ Access Token

จัดการ OAuth callback:

const exchangeCodeForToken = async (code) => {
  const response = await fetch('https://api.hubspot.com/oauth/v1/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: new URLSearchParams({
      grant_type: 'authorization_code',
      client_id: HUBSPOT_CLIENT_ID,
      client_secret: HUBSPOT_CLIENT_SECRET,
      redirect_uri: HUBSPOT_REDIRECT_URI,
      code: code
    })
  });

  const data = await response.json();

  return {
    accessToken: data.access_token,
    refreshToken: data.refresh_token,
    expiresIn: data.expires_in,
    portalId: data.hub_portal_id
  };
};

// Handle callback
app.get('/oauth/callback', async (req, res) => {
  const { code, state } = req.query;

  try {
    const tokens = await exchangeCodeForToken(code);

    // Store tokens in database
    await db.installations.create({
      portalId: tokens.portalId,
      accessToken: tokens.accessToken,
      refreshToken: tokens.refreshToken,
      tokenExpiry: Date.now() + (tokens.expiresIn * 1000)
    });

    res.redirect('/success');
  } catch (error) {
    console.error('OAuth error:', error);
    res.status(500).send('Authentication failed');
  }
});

ขั้นตอนที่ 6: รีเฟรช Access Token

Access token จะหมดอายุหลังจาก 6 ชั่วโมง:

const refreshAccessToken = async (refreshToken) => {
  const response = await fetch('https://api.hubspot.com/oauth/v1/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: new URLSearchParams({
      grant_type: 'refresh_token',
      client_id: HUBSPOT_CLIENT_ID,
      client_secret: HUBSPOT_CLIENT_SECRET,
      refresh_token: refreshToken
    })
  });

  const data = await response.json();

  return {
    accessToken: data.access_token,
    refreshToken: data.refresh_token, // Always save new refresh token
    expiresIn: data.expires_in
  };
};

// Middleware to ensure valid token
const ensureValidToken = async (portalId) => {
  const installation = await db.installations.findByPortalId(portalId);

  // Refresh if expires within 30 minutes
  if (installation.tokenExpiry < Date.now() + 1800000) {
    const newTokens = await refreshAccessToken(installation.refreshToken);

    await db.installations.update(installation.id, {
      accessToken: newTokens.accessToken,
      refreshToken: newTokens.refreshToken,
      tokenExpiry: Date.now() + (newTokens.expiresIn * 1000)
    });

    return newTokens.accessToken;
  }

  return installation.accessToken;
};

ขั้นตอนที่ 7: เรียกใช้ API ที่มีการยืนยันตัวตน

สร้างไคลเอนต์ API ที่นำกลับมาใช้ใหม่ได้:

const HUBSPOT_BASE_URL = 'https://api.hubspot.com';

const hubspotRequest = async (endpoint, options = {}, portalId = null) => {
  const accessToken = portalId ? await ensureValidToken(portalId) : process.env.HUBSPOT_ACCESS_TOKEN;

  const response = await fetch(`${HUBSPOT_BASE_URL}${endpoint}`, {
    ...options,
    headers: {
      'Authorization': `Bearer ${accessToken}`,
      'Content-Type': 'application/json',
      ...options.headers
    }
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(`HubSpot API Error: ${error.message}`);
  }

  return response.json();
};

// Usage
const contacts = await hubspotRequest('/crm/v3/objects/contacts');

การทำงานกับออบเจกต์ CRM

การสร้างผู้ติดต่อ

สร้างหรืออัปเดตผู้ติดต่อ:

const createContact = async (contactData) => {
  const contact = {
    properties: {
      email: contactData.email,
      firstname: contactData.firstName,
      lastname: contactData.lastName,
      phone: contactData.phone,
      company: contactData.company,
      website: contactData.website,
      lifecyclestage: contactData.lifecycleStage || 'lead'
    }
  };

  const response = await hubspotRequest('/crm/v3/objects/contacts', {
    method: 'POST',
    body: JSON.stringify(contact)
  });

  return response;
};

// Usage
const contact = await createContact({
  email: 'john.doe@example.com',
  firstName: 'John',
  lastName: 'Doe',
  phone: '+1-555-0123',
  company: 'Acme Corp',
  lifecycleStage: 'customer'
});

console.log(`Contact created: ${contact.id}`);

คุณสมบัติผู้ติดต่อ

คุณสมบัติ ประเภท คำอธิบาย
email ข้อความ อีเมลหลัก (ตัวระบุที่ไม่ซ้ำกัน)
firstname ข้อความ ชื่อจริง
lastname ข้อความ นามสกุล
phone ข้อความ หมายเลขโทรศัพท์
company ข้อความ ชื่อบริษัท
website ข้อความ URL เว็บไซต์
lifecyclestage ตัวเลือก lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, subscriber
createdate วันที่และเวลา สร้างขึ้นโดยอัตโนมัติ
lastmodifieddate วันที่และเวลา สร้างขึ้นโดยอัตโนมัติ

การดึงข้อมูลผู้ติดต่อ

ดึงข้อมูลผู้ติดต่อด้วย ID:

const getContact = async (contactId) => {
  const response = await hubspotRequest(`/crm/v3/objects/contacts/${contactId}`);
  return response;
};

// Usage
const contact = await getContact('12345');
console.log(`${contact.properties.firstname} ${contact.properties.lastname}`);
console.log(`Email: ${contact.properties.email}`);

การค้นหาผู้ติดต่อ

ค้นหาด้วยตัวกรอง:

const searchContacts = async (searchCriteria) => {
  const response = await hubspotRequest('/crm/v3/objects/contacts/search', {
    method: 'POST',
    body: JSON.stringify({
      filterGroups: searchCriteria,
      properties: ['firstname', 'lastname', 'email', 'company'],
      limit: 100
    })
  });

  return response;
};

// Usage - Find contacts at specific company
const results = await searchContacts({
  filterGroups: [
    {
      filters: [
        {
          propertyName: 'company',
          operator: 'EQ',
          value: 'Acme Corp'
        }
      ]
    }
  ]
});

results.results.forEach(contact => {
  console.log(`${contact.properties.email}`);
});

ตัวดำเนินการตัวกรองการค้นหา

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
EQ เท่ากับ company EQ 'Acme'
NEQ ไม่เท่ากับ lifecyclestage NEQ 'subscriber'
CONTAINS_TOKEN มี email CONTAINS_TOKEN 'gmail'
NOT_CONTAINS_TOKEN ไม่มี email NOT_CONTAINS_TOKEN 'test'
GT มากกว่า createdate GT '2026-01-01'
LT น้อยกว่า createdate LT '2026-12-31'
GTE มากกว่าหรือเท่ากับ deal_amount GTE 10000
LTE น้อยกว่าหรือเท่ากับ deal_amount LTE 50000
HAS_PROPERTY มีค่า phone HAS_PROPERTY
NOT_HAS_PROPERTY ไม่มีค่า phone NOT_HAS_PROPERTY

การสร้างบริษัท

สร้างบันทึกบริษัท:

const createCompany = async (companyData) => {
  const company = {
    properties: {
      name: companyData.name,
      domain: companyData.domain,
      industry: companyData.industry,
      numberofemployees: companyData.employees,
      annualrevenue: companyData.revenue,
      city: companyData.city,
      state: companyData.state,
      country: companyData.country
    }
  };

  const response = await hubspotRequest('/crm/v3/objects/companies', {
    method: 'POST',
    body: JSON.stringify(company)
  });

  return response;
};

// Usage
const company = await createCompany({
  name: 'Acme Corporation',
  domain: 'acme.com',
  industry: 'Technology',
  employees: 500,
  revenue: 50000000,
  city: 'San Francisco',
  state: 'CA',
  country: 'USA'
});

การเชื่อมโยงออบเจกต์

เชื่อมโยงผู้ติดต่อกับบริษัท:

const associateContactWithCompany = async (contactId, companyId) => {
  const response = await hubspotRequest(
    `/crm/v3/objects/contacts/${contactId}/associations/companies/${companyId}`,
    {
      method: 'PUT',
      body: JSON.stringify({
        types: [
          {
            associationCategory: 'HUBSPOT_DEFINED',
            associationTypeId: 1 // Contact to Company
          }
        ]
      })
    }
  );

  return response;
};

// Usage
await associateContactWithCompany('12345', '67890');

ประเภทการเชื่อมโยง

การเชื่อมโยง ID ประเภท ทิศทาง
ผู้ติดต่อ → บริษัท 1 ผู้ติดต่อเชื่อมโยงกับบริษัท
บริษัท → ผู้ติดต่อ 1 บริษัทมีผู้ติดต่อที่เชื่อมโยงอยู่
ดีล → ผู้ติดต่อ 3 ดีลเชื่อมโยงกับผู้ติดต่อ
ดีล → บริษัท 5 ดีลเชื่อมโยงกับบริษัท
ตั๋วสนับสนุน → ผู้ติดต่อ 16 ตั๋วสนับสนุนเชื่อมโยงกับผู้ติดต่อ
ตั๋วสนับสนุน → บริษัท 15 ตั๋วสนับสนุนเชื่อมโยงกับบริษัท

การสร้างดีล

สร้างโอกาสการขาย:

const createDeal = async (dealData) => {
  const deal = {
    properties: {
      dealname: dealData.name,
      amount: dealData.amount.toString(),
      dealstage: dealData.stage || 'appointmentscheduled',
      pipeline: dealData.pipelineId || 'default',
      closedate: dealData.closeDate,
      dealtype: dealData.type || 'newbusiness',
      description: dealData.description
    }
  };

  const response = await hubspotRequest('/crm/v3/objects/deals', {
    method: 'POST',
    body: JSON.stringify(deal)
  });

  return response;
};

// Usage
const deal = await createDeal({
  name: 'Acme Corp - Enterprise License',
  amount: 50000,
  stage: 'qualification',
  closeDate: '2026-06-30',
  type: 'newbusiness',
  description: 'Enterprise annual subscription'
});

// Associate with company and contact
await hubspotRequest(
  `/crm/v3/objects/deals/${deal.id}/associations/companies/${companyId}`,
  { method: 'PUT', body: JSON.stringify({ types: [{ associationCategory: 'HUBSPOT_DEFINED', associationTypeId: 5 }] }) }
);

await hubspotRequest(
  `/crm/v3/objects/deals/${deal.id}/associations/contacts/${contactId}`,
  { method: 'PUT', body: JSON.stringify({ types: [{ associationCategory: 'HUBSPOT_DEFINED', associationTypeId: 3 }] }) }
);

ขั้นตอนของดีล (Default Pipeline)

ขั้นตอน ค่าภายใน
นัดหมายแล้ว appointmentscheduled
มีคุณสมบัติพร้อมซื้อ qualifiedtobuy
นัดนำเสนอแล้ว presentationscheduled
ผู้มีอำนาจตัดสินใจให้ความเห็นชอบแล้ว decisionmakerboughtin
ส่งสัญญาแล้ว contractsent
ปิดดีลสำเร็จ closedwon
ปิดดีลไม่สำเร็จ closedlost

Webhooks

การกำหนดค่า Webhooks

ตั้งค่า webhooks สำหรับการแจ้งเตือนแบบเรียลไทม์:

const createWebhook = async (webhookData) => {
  const response = await hubspotRequest('/webhooks/v3/my-app/webhooks', {
    method: 'POST',
    body: JSON.stringify({
      webhookUrl: webhookData.url,
      eventTypes: webhookData.events,
      objectType: webhookData.objectType,
      propertyName: webhookData.propertyName // Optional: filter by property change
    })
  });

  return response;
};

// Usage
const webhook = await createWebhook({
  url: 'https://myapp.com/webhooks/hubspot',
  events: [
    'contact.creation',
    'contact.propertyChange',
    'company.creation',
    'deal.creation',
    'deal.stageChange'
  ],
  objectType: 'contact'
});

console.log(`Webhook created: ${webhook.id}`);

ประเภทเหตุการณ์ Webhook

ประเภทเหตุการณ์ ตัวกระตุ้น
contact.creation มีการสร้างผู้ติดต่อใหม่
contact.propertyChange มีการอัปเดตคุณสมบัติผู้ติดต่อ
contact.deletion มีการลบผู้ติดต่อ
company.creation มีการสร้างบริษัทใหม่
company.propertyChange มีการอัปเดตคุณสมบัติบริษัท
deal.creation มีการสร้างดีลใหม่
deal.stageChange มีการเปลี่ยนแปลงขั้นตอนของดีล
deal.propertyChange มีการอัปเดตคุณสมบัติของดีล
ticket.creation มีการสร้างตั๋วสนับสนุนใหม่
ticket.propertyChange มีการอัปเดตคุณสมบัติของตั๋วสนับสนุน

การจัดการ Webhooks

const express = require('express');
const crypto = require('crypto');
const app = express();

app.post('/webhooks/hubspot', express.json(), async (req, res) => {
  const signature = req.headers['x-hubspot-signature'];
  const payload = JSON.stringify(req.body);

  // Verify webhook signature
  const isValid = verifyWebhookSignature(payload, signature, process.env.HUBSPOT_CLIENT_SECRET);

  if (!isValid) {
    console.error('Invalid webhook signature');
    return res.status(401).send('Unauthorized');
  }

  const events = req.body;

  for (const event of events) {
    console.log(`Event: ${event.eventType}`);
    console.log(`Object: ${event.objectType} - ${event.objectId}`);
    console.log(`Property: ${event.propertyName}`);
    console.log(`Value: ${event.propertyValue}`);

    // Route to appropriate handler
    switch (event.eventType) {
      case 'contact.creation':
        await handleContactCreation(event);
        break;
      case 'contact.propertyChange':
        await handleContactUpdate(event);
        break;
      case 'deal.stageChange':
        await handleDealStageChange(event);
        break;
    }
  }

  res.status(200).send('OK');
});

function verifyWebhookSignature(payload, signature, clientSecret) {
  const expectedSignature = crypto
    .createHmac('sha256', clientSecret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

การจำกัดจำนวนคำขอ

ทำความเข้าใจเกี่ยวกับการจำกัดจำนวนคำขอ

HubSpot บังคับใช้การจำกัดจำนวนคำขอตามระดับการสมัครสมาชิก:

ระดับ คำขอ/วินาที คำขอ/วัน
ฟรี/Starter 100 100,000
Professional 200 500,000
Enterprise 400 1,000,000

การเกินขีดจำกัดจะส่งผลให้ได้รับข้อความตอบกลับ HTTP 429 (Too Many Requests)

เฮดเดอร์การจำกัดจำนวนคำขอ

เฮดเดอร์ คำอธิบาย
X-HubSpot-RateLimit-Second-Limit จำนวนคำขอสูงสุดต่อวินาที
X-HubSpot-RateLimit-Second-Remaining จำนวนคำขอที่เหลือในวินาทีนี้
X-HubSpot-RateLimit-Second-Reset จำนวนวินาทีที่เหลือจนกว่าการจำกัดต่อวินาทีจะรีเซ็ต
X-HubSpot-RateLimit-Daily-Limit จำนวนคำขอสูงสุดต่อวัน
X-HubSpot-RateLimit-Daily-Remaining จำนวนคำขอที่เหลือในวันนี้
X-HubSpot-RateLimit-Daily-Reset จำนวนวินาทีที่เหลือจนกว่าการจำกัดต่อวันจะรีเซ็ต

การนำการจัดการการจำกัดจำนวนคำขอไปใช้

const makeRateLimitedRequest = async (endpoint, options = {}, maxRetries = 3) => {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const response = await hubspotRequest(endpoint, options);

      // Log rate limit info
      const remaining = response.headers.get('X-HubSpot-RateLimit-Second-Remaining');
      if (remaining < 10) {
        console.warn(`Low rate limit remaining: ${remaining}`);
      }

      return response;
    } catch (error) {
      if (error.message.includes('429') && attempt < maxRetries) {
        const delay = Math.pow(2, attempt) * 1000;
        console.log(`Rate limited. Retrying in ${delay}ms...`);
        await new Promise(resolve => setTimeout(resolve, delay));
      } else {
        throw error;
      }
    }
  }
};

// Rate limiter class
class HubSpotRateLimiter {
  constructor(requestsPerSecond = 90) { // Stay under limit
    this.queue = [];
    this.interval = 1000 / requestsPerSecond;
    this.processing = false;
  }

  async add(requestFn) {
    return new Promise((resolve, reject) => {
      this.queue.push({ requestFn, resolve, reject });
      this.process();
    });
  }

  async process() {
    if (this.processing || this.queue.length === 0) return;
    this.processing = true;

    while (this.queue.length > 0) {
      const { requestFn, resolve, reject } = this.queue.shift();
      try {
        const result = await requestFn();
        resolve(result);
      } catch (error) {
        reject(error);
      }
      if (this.queue.length > 0) {
        await new Promise(r => setTimeout(r, this.interval));
      }
    }
    this.processing = false;
  }
}

รายการตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนที่จะเปิดใช้งานจริง:


กรณีการใช้งานจริง

การซิงโครไนซ์ CRM

บริษัท SaaS ทำการซิงค์ข้อมูลลูกค้า:

การจัดเส้นทาง Lead

เอเจนซี่การตลาดทำให้การจัดจำหน่าย Lead เป็นไปโดยอัตโนมัติ:

สรุป

HubSpot API มีความสามารถด้าน CRM และการตลาดอัตโนมัติที่ครอบคลุม ประเด็นสำคัญ:

ปุ่ม

ส่วนคำถามที่พบบ่อย

ฉันจะยืนยันตัวตนกับ HubSpot API ได้อย่างไร?

ใช้ OAuth 2.0 สำหรับแอปแบบหลายผู้เช่า หรือ Private Apps สำหรับการผสานรวมพอร์ทัลเดียว การยืนยันตัวตนด้วย API key ถูกยกเลิกแล้ว

การจำกัดจำนวนคำขอของ HubSpot คืออะไร?

การจำกัดจำนวนคำขอมีตั้งแต่ 100 คำขอ/วินาที (ฟรี) ถึง 400 คำขอ/วินาที (Enterprise) โดยมีขีดจำกัดรายวันตั้งแต่ 100,000 ถึง 1 ล้านคำขอ

ฉันจะสร้างผู้ติดต่อใน HubSpot ได้อย่างไร?

ส่งคำขอ POST ไปยัง /crm/v3/objects/contacts พร้อมด้วยคุณสมบัติ เช่น อีเมล, ชื่อจริง, นามสกุล และฟิลด์ที่กำหนดเองใดๆ

ฉันสามารถสร้างคุณสมบัติที่กำหนดเองได้หรือไม่?

ได้ คุณสามารถใช้ Properties API เพื่อสร้างฟิลด์ที่กำหนดเองสำหรับออบเจกต์ทุกประเภท

Webhooks ทำงานอย่างไรใน HubSpot?

กำหนดค่า webhooks ในการตั้งค่าแอปของคุณ HubSpot จะส่งคำขอ POST ไปยัง endpoint ของคุณเมื่อเกิดเหตุการณ์ที่ระบุ

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API