Techsy
Kontak
Mulai Sekarang
Kembali ke Blog
web-development

Integrasi API HubSpot untuk Alat Internal Kustom: Panduan Node + Python (2026)

Ditulis oleh Mert Batur Gürbüz
Jul 22, 2026
13 baca
Daftar Isi
Integrasi API HubSpot untuk Alat Internal Kustom: Panduan Node + Python (2026)

Integrasi API HubSpot untuk Alat Internal Kustom: Panduan Node + Python (2026)

Masih berburu kunci API HubSpot untuk menyambungkan integrasi API HubSpot Anda? Berhentilah mencari. HubSpot telah menghapus kunci API statis pada 30 November 2022, dan SDK Node saat ini (@hubspot/api-client, sekarang di v14) juga tidak akan menerimanya. Kredensial yang tepat untuk alat internal satu akun adalah token akses aplikasi pribadi, dan panduan ini membangun sinkronisasi nyata dari HubSpot ke alat internal dalam Node dan Python, mulai dari panggilan create contact pertama Anda hingga webhook yang divalidasi tanda tangannya.

Jawaban cepat: Integrasi API HubSpot memungkinkan alat internal kustom membaca dan menulis data CRM melalui REST API v3 HubSpot. Untuk alat internal satu akun, autentikasikan dengan token akses aplikasi pribadi (HubSpot menghentikan API key pada tahun 2022), lalu sinkronkan perubahan secara real-time dengan webhook alih-alih polling.

Berikut adalah apa yang akan Anda bangun:

  • Autentikasi token aplikasi pribadi plus panggilan create contact pertama Anda di Node dan Python
  • Penerima webhook yang memvalidasi X-HubSpot-Signature-v3 sebelum memercayai payload
  • Sinkronisasi aman dari error 429, batch-100 ke dalam rekaman tiket atau ERP internal

Bagaimana Cara Kerja Integrasi API HubSpot untuk Alat Internal Kustom?

Sebuah integrasi API HubSpot menghubungkan alat internal kustom (aplikasi tiket, ERP, dasbor penagihan, portal pelanggan) ke CRM HubSpot melalui REST API v3-nya. Alat Anda membaca dan menulis objek CRM (kontak, kesepakatan, perusahaan, atau objek kustom) melalui HTTPS dengan token akses aplikasi pribadi, dan perubahan real-time mengalir kembali melalui webhook.

Anggaplah CRM HubSpot sebagai basis data yang Anda ajak bicara melalui HTTP. Setiap rekaman adalah objek dengan tipe dan ID. hubspot crm api integration yang sedang Anda bangun melakukan dua tugas: mendorong data ke HubSpot (membuat kontak saat tiket dibuka) dan menarik data darinya (membaca kesepakatan saat dasbor internal Anda dirender).

Sinkronisasi berjalan dalam salah satu dari dua arah. Sinkronisasi satu arah menyalin perubahan dari HubSpot ke alat Anda, atau dari alat Anda ke HubSpot. Sinkronisasi dua arah melakukan keduanya dan memerlukan perlindungan loop, yang akan kita bahas nanti. Dan alih-alih bertanya kepada HubSpot "ada yang baru?" setiap menit (polling), Anda mendaftarkan webhook sehingga HubSpot memberi tahu Anda seketika sebuah rekaman berubah.

Jika Anda lebih memilih memiliki data Anda sepenuhnya daripada mengintegrasikan CRM yang di-host sama sekali, hosting mandiri CRM open-source adalah jalur berbeda yang patut dipertimbangkan sebelum Anda berkomitmen. Namun, jika HubSpot sudah menjadi sumber kebenaran Anda, API adalah cara segala sesuatu lainnya berbicara dengannya.

Untuk alat internal satu akun, Anda tidak memerlukan OAuth atau daftar di marketplace aplikasi. Token aplikasi pribadi dan webhook adalah seluruh integrasinya.

Autentikasi di Tahun 2026: Mengapa Tidak Ada Lagi Kunci API HubSpot

Untuk autentikasi API HubSpot pada alat internal satu akun, gunakan token akses aplikasi pribadi. Ini adalah token bearer statis yang Anda hasilkan sekali di akun HubSpot Anda, dibatasi hanya pada objek yang disentuh oleh alat Anda. Tidak ada alur refresh dan tidak ada kedaluwarsa. OAuth ada untuk aplikasi publik multi-akun, bukan untuk dasbor yang dijalankan tim operasional Anda secara internal.

Token Aplikasi Pribadi vs Kunci API yang Sudah Dihentikan

Inilah jebakan yang menjebak setengah dari pengembang yang menemukan halaman ini. HubSpot menghentikan kunci API pada 30 November 2022, dan kini tidak lagi didukung sepenuhnya. Autocomplete masih menyarankan "hubspot api key" karena memori otot belum menyesuaikan, tetapi tidak ada kunci yang bisa diambil. Gunakan aplikasi pribadi hubspot sebagai gantinya: buat di Pengaturan, berikan cakupan (scopes) yang dibutuhkan, dan salin token akses dari tab Auth. Ikhtisar aplikasi pribadi HubSpot mencakup pengaturan tersebut.

MetodeKasus penggunaanKedaluwarsa atau refresh?Terbaik untuk
Kunci APIDihapusDihentikan Nov 2022Tidak ada, sudah usang
Token akses aplikasi pribadiAlat internal satu akunTidak, statis, tanpa refreshAlat internal Anda, default di sini
OAuth 2.0Aplikasi publik atau multi-akunYa, token kedaluwarsa sekitar 6 jam dan perlu refreshAplikasi yang Anda daftarkan untuk portal perusahaan lain
Service Key (beta publik, Feb 2026)Kredensial tingkat akun, hanya dataCakupan akun, sesuai dokumenPekerjaan server hanya data, masih beta

Dua aturan mengenai token itu sendiri. Berikan hak istimewa minimum: jika alat Anda hanya membaca kesepakatan dan menulis kontak, minta crm.objects.contacts.write dan crm.objects.deals.read, tidak lebih. Dan simpan token di variabel lingkungan atau manajer rahasia, dikirim di header Authorization: Bearer, jangan pernah di-hardcode dan jangan pernah dikirim ke browser.

Kesimpulannya sederhana. Untuk alat internal, gunakan token akses aplikasi pribadi. Gunakan OAuth hanya jika ini nantinya menjadi aplikasi publik multi-akun yang dipasang oleh perusahaan lain ke portal mereka sendiri.

Panggilan API HubSpot Pertama Anda: Membuat Kontak di Node dan Python

Panggilan pertama yang standar adalah create contact, dan SDK resmi membuatnya hanya dalam beberapa baris. Instal klien, inisialisasi dengan token aplikasi pribadi Anda dari lingkungan, lalu buat kontak dan baca kembali sebuah kesepakatan. Ini adalah pola yang sama yang akan Anda gunakan kembali untuk perusahaan, tiket, dan panggilan hubspot custom objects api, hanya jenis objeknya yang berubah.

Berikut versi Node dengan @hubspot/api-client (v14):

javascript
// npm i @hubspot/api-client   (v14.x)
import { Client } from "@hubspot/api-client";

// Private app token from a secret manager or env var, never hard-coded
const hubspot = new Client({ accessToken: process.env.HUBSPOT_PRIVATE_APP_TOKEN });

// Create a contact
const { id } = await hubspot.crm.contacts.basicApi.create({
  properties: {
    email: "[email protected]",
    firstname: "Ada",
    lastname: "Lovelace",
    lifecyclestage: "lead",
  },
  associations: [],
});
console.log("Created contact", id);

// Read a deal by ID
const deal = await hubspot.crm.deals.basicApi.getById(
  "1234567890",
  ["dealname", "amount", "dealstage"],
);
console.log(deal.properties.dealname, deal.properties.amount);

Dan hal yang sama di Python dengan hubspot-api-client (v12):

python
# pip install hubspot-api-client   (v12.x)
import os
from hubspot import HubSpot
from hubspot.crm.contacts import SimplePublicObjectInputForCreate

# Private app token from the environment, not source control
client = HubSpot(access_token=os.environ["HUBSPOT_PRIVATE_APP_TOKEN"])

# Create a contact
contact = client.crm.contacts.basic_api.create(
    simple_public_object_input_for_create=SimplePublicObjectInputForCreate(
        properties={
            "email": "[email protected]",
            "firstname": "Ada",
            "lastname": "Lovelace",
            "lifecyclestage": "lead",
        }
    )
)
print("Created contact", contact.id)

# Read a deal by ID
deal = client.crm.deals.basic_api.get_by_id(
    deal_id="1234567890",
    properties=["dealname", "amount", "dealstage"],
)
print(deal.properties["dealname"], deal.properties["amount"])

Tips pro: uji terhadap sandbox pengembang HubSpot, jangan pernah produksi terlebih dahulu. Panggilan create yang salah format di produksi meninggalkan rekaman sampah nyata yang harus dibersihkan oleh tim penjualan Anda. Token, cakupan, dan model objek berperilaku identik di sandbox.

Bagaimana Cara Mensinkronkan HubSpot ke Alat Internal Secara Real-Time?

Gunakan webhook, bukan polling. Daftarkan langganan webhook di aplikasi pribadi Anda untuk objek dan peristiwa yang Anda pedulikan (misalnya, deal.propertyChange), arahkan ke endpoint HTTPS yang Anda host, dan HubSpot akan mengirim POST berupa array JSON kecil seketika perubahan yang cocok terjadi. Lakukan polling hanya ketika tidak ada langganan untuk apa yang perlu Anda pantau.

Imbalannya adalah efisiensi. Polling bertanya "ada yang baru?" setiap menit dan membakar batas laju (rate limit) Anda melakukannya; webhook hanya memberi tahu Anda saat kesepakatan berubah. Perbedaan itu penting dalam skala besar, dan webhook kini sudah umum, bukan hal eksotis: Laporan State of the API 2025 dari Postman, survei terhadap lebih dari 5.700 pengembang, menemukan sekitar setengah dari tim mengandalkan mereka.

Daftarkan langganan di bawah tab Webhooks aplikasi pribadi Anda, atur URL target, dan pilih peristiwa. HubSpot mengirim array objek peristiwa, masing-masing membawa subscriptionType, objectId, dan apa yang berubah. Berikut adalah stub penerima di Node dengan Express:

javascript
import express from "express";

const app = express();
// Capture the raw body: you need the exact bytes to validate the signature next
app.use(express.json({
  verify: (req, _res, buf) => { req.rawBody = buf.toString("utf8"); },
}));

// HubSpot POSTs an array of events to this URL
app.post("/webhooks/hubspot", (req, res) => {
  const events = req.body; // [{ subscriptionType: "deal.propertyChange", objectId: 1234, ... }]
  for (const event of events) {
    console.log("HubSpot event:", event.subscriptionType, event.objectId);
    // Do NOT trust this payload yet. The next section validates it before we act.
  }
  res.sendStatus(200);
});

app.listen(3000, () => console.log("Listening on :3000"));

Di sinilah proses pembangunan menjadi nyata. Katakanlah Anda mensinkronkan kesepakatan ke rekaman ERP produsen kecil: webhook memicu, handler Anda membuat atau memperbarui tiket ERP yang cocok, dan tim operasional Anda melihat perubahan tanpa menyentuh HubSpot. Ini adalah pendekatan real-time yang sama yang kami gunakan untuk mensinkronkan agen suara ke CRM, hanya pemicunya adalah perubahan properti alih-alih panggilan telepon. Satu peringatan: stub di atas memercayai apa pun yang di-POST ke sana. Perbaiki itu sebelum Anda go-live.

Memvalidasi Tanda Tangan Webhook (v3) Agar Anda Tidak Pernah Memercayai Payload Palsu

Validasi setiap webhook masuk dengan tanda tangan v3. HubSpot menandatangani setiap permintaan dengan rahasia aplikasi Anda dan mengirim dua header, X-HubSpot-Signature-v3 dan X-HubSpot-Request-Timestamp. Tolak apa pun yang lebih lama dari 5 menit, bangun ulang string sumber sebagai method + URL lengkap + body mentah + timestamp, lakukan HMAC-SHA256 dengan rahasia aplikasi, encode base64, dan bandingkan dalam waktu konstan.

Jika Anda melewatkan ini, siapa pun yang menebak URL webhook Anda dapat memalsukan pembaruan kesepakatan. Validasi bukanlah pilihan. Dokumen memvalidasi permintaan HubSpot dan changelog tanda tangan v3 menjelaskan resep pastinya. Berikut ini sebagai middleware Express siap pakai:

javascript
import crypto from "crypto";

const CLIENT_SECRET = process.env.HUBSPOT_APP_SECRET; // from your private app settings
const MAX_AGE_MS = 5 * 60 * 1000; // reject anything older than 5 minutes

export function validateHubSpotSignature(req, res, next) {
  const signature = req.header("X-HubSpot-Signature-v3");
  const timestamp = req.header("X-HubSpot-Request-Timestamp");

  // 1. Reject stale requests (replay protection)
  if (!signature || !timestamp || Date.now() - Number(timestamp) > MAX_AGE_MS) {
    return res.sendStatus(401);
  }

  // 2. Rebuild the exact source string: method + full URL + raw body + timestamp
  const uri = `https://${req.get("host")}${req.originalUrl}`;
  const source = `${req.method}${uri}${req.rawBody}${timestamp}`;

  // 3. HMAC-SHA256 with the app secret, base64-encoded
  const hash = crypto
    .createHmac("sha256", CLIENT_SECRET)
    .update(source, "utf8")
    .digest("base64");

  // 4. Constant-time compare against the header
  const expected = Buffer.from(hash);
  const received = Buffer.from(signature);
  if (expected.length !== received.length ||
      !crypto.timingSafeEqual(expected, received)) {
    return res.sendStatus(401);
  }
  next();
}

Pemeriksaan yang sama sebagai fungsi Python, sehingga kedua tumpukan teknologi tercakup:

python
import base64
import hashlib
import hmac
import os
import time

CLIENT_SECRET = os.environ["HUBSPOT_APP_SECRET"].encode("utf-8")
MAX_AGE_MS = 5 * 60 * 1000  # 5 minutes

def is_valid_signature(method, uri, body, signature, timestamp):
    # 1. Reject stale requests
    if not signature or not timestamp:
        return False
    if int(time.time() * 1000) - int(timestamp) > MAX_AGE_MS:
        return False

    # 2. method + full URL + raw body + timestamp
    source = f"{method}{uri}{body}{timestamp}".encode("utf-8")

    # 3. HMAC-SHA256, base64
    digest = hmac.new(CLIENT_SECRET, source, hashlib.sha256).digest()
    expected = base64.b64encode(digest).decode("utf-8")

    # 4. Constant-time compare
    return hmac.compare_digest(expected, signature)

Jebakan yang menghabiskan waktu orang seharian: HubSpot menandatangani URL target penuh, skema dan host dan path bersama-sama. Di belakang proxy, load balancer, atau tunnel ngrok, req.get("host") dapat melaporkan host internal alih-alih host publik yang ditandatangani HubSpot. Jika validasi terus gagal pada payload yang Anda yakin sah, catat URI persis yang Anda bangun ulang dan bandingkan dengan URL webhook publik Anda, karakter demi karakter.

Batas Laju, 429, dan Batch API: Apa yang Kami Jalankan di Produksi

Aplikasi pribadi mendapatkan sekitar 10 permintaan per detik (100 per 10 detik pada Free/Starter, 190 per 10 detik pada Pro/Enterprise) dengan batas harian antara 250.000 dan 1.000.000. Jebakannya: CRM Search dibatasi terpisah pada 4 permintaan per detik, dan endpoint batch menerima maksimum 100 rekaman per permintaan. Pedoman penggunaan HubSpot mencantumkan tier-nya.

TierPer 10dtkPer detikBatas harianCatatan
Free / Starter (aplikasi pribadi)100~10250.000CRM Search dibatasi terpisah pada 4 req/dtk
Pro / Enterprise (aplikasi pribadi)190~19hingga 1.000.000Endpoint batch maks 100 rekaman per permintaan

Di sinilah teori bertemu dengan dasbor staging berwarna merah. Selama backfill musim semi ini, kami mendorong sekitar 8.000 rekaman yang ada ke HubSpot dari alat tiket internal dan memperkaya masing-masing dengan pencarian CRM Search. Kami menjalankan @hubspot/api-client v14 di sisi Node dan hubspot-api-client v12 untuk worker enrichment Python. Penulisan massal berjalan lancar. Panggilan Search jatuh dalam satu menit, karena worker kami menembakkan Search pada sekitar 15 req/dtk melawan batas keras 4 req/dtk yang tidak kami anggarkan secara terpisah.

Dua perubahan memperbaikinya. Pertama, wrapper retry yang membaca header respons X-HubSpot-RateLimit-* dan melakukan backoff pada 429:

javascript
// Wrap any HubSpot call; retries on 429 with exponential backoff
async function withRetry(fn, maxRetries = 5) {
  let attempt = 0;
  while (true) {
    try {
      return await fn();
    } catch (err) {
      const status = err.code ?? err.response?.status;
      if (status !== 429 || attempt >= maxRetries) throw err;

      // Honor HubSpot's reset window if the header is present
      const headers = err.response?.headers ?? {};
      const resetMs = Number(headers["x-hubspot-ratelimit-interval-milliseconds"]) || 0;
      const backoff = Math.max(resetMs, 2 ** attempt * 500); // 0.5s, 1s, 2s, 4s...

      console.warn(`429 hit, retry ${attempt + 1} in ${backoff}ms`);
      await new Promise((r) => setTimeout(r, backoff));
      attempt++;
    }
  }
}

Kedua, kami berhenti menulis rekaman satu per satu. Endpoint batch mengambil hingga 100 rekaman per POST /crm/v3/objects/{objectType}/batch/create, jadi kami memecah backfill menjadi 80 panggilan batch alih-alih 8.000 POST tunggal:

javascript
// HubSpot batch endpoints accept at most 100 records per request
function chunk(arr, size = 100) {
  const out = [];
  for (let i = 0; i < arr.length; i += size) out.push(arr.slice(i, i + size));
  return out;
}

// POST /crm/v3/objects/contacts/batch/create, chunked to 100 at a time
async function batchCreateContacts(records) {
  for (const group of chunk(records, 100)) {
    const inputs = group.map((r) => ({
      properties: { email: r.email, firstname: r.firstName, lastname: r.lastName },
      associations: [],
    }));
    await withRetry(() => hubspot.crm.contacts.batchApi.create({ inputs }));
    console.log(`Wrote ${group.length} contacts`);
  }
}

Membatasi worker Search ke 4 req/dtk dan melakukan batching pada penulisan mengubah proses yang tenggelam dalam retry menjadi proses yang selesai dengan tenang. Jika Anda mengingat satu angka dari bagian ini, jadikan itu 4: batas CRM Search adalah limit yang sering bermasalah di produksi, dan itulah yang dilupakan setiap postingan rangkuman. Omong-omong, batas batch lama "10 untuk kontak" sudah hilang; saat ini 100 di semua jenis objek.

Menuju Dua Arah: Menulis Perubahan Kembali ke HubSpot Tanpa Loop Tak Terbatas

Sinkronisasi dua arah menulis perubahan kembali ke HubSpot dari alat internal Anda serta membacanya. Bahayanya adalah loop umpan balik: write-back Anda memicu webhook yang sama yang memicu handler Anda, yang menulis lagi, selamanya. Cegah dengan kunci idempotensi (lewati perubahan yang sudah Anda terapkan) dan flag sumber (abaikan peristiwa inbound yang disebabkan oleh alat Anda sendiri).

javascript
const processed = new Set(); // use Redis or a unique DB constraint in production

async function writeBackToHubSpot(record) {
  // Dedup key: object id + a hash of the change we're about to apply
  const key = `${record.id}:${record.updatedHash}`;
  if (processed.has(key)) return; // already synced this exact change
  processed.add(key);

  await withRetry(() =>
    hubspot.crm.contacts.basicApi.update(record.id, {
      // Tag the source so the resulting webhook is ignored by our own receiver
      // (check for source: "internal-tool" before acting on an inbound event)
      properties: { internal_status: record.status, last_sync_source: "internal-tool" },
    })
  );
}

Polanya kecil, tetapi melewatkannya adalah cara sinkronisasi secara diam-diam menggandakan volume penulisan Anda dalam semalam. Setelah data bersih di kedua arah, tim sering memberikannya ke hiliran ke pipelina AI SDR atau lapisan pelaporan. Tutorial integrasi HubSpot dari Nango adalah referensi solid khusus Node jika Anda ingin pandangan kedua tentang sinkronisasi dua arah, meskipun Anda perlu memporting ide pencegahan loop sendiri.

Haruskah Anda Membangun Ini Secara Internal atau Menyewa Mitra Integrasi?

Bangun secara internal ketika sinkronisasi kecil, stabil, dan dimiliki: aliran satu arah, segelintir objek, dan seorang engineer yang dapat menyerap perubahan breaking HubSpot yang terjadi sekitar dua kali setahun. Sewa mitra ketika Anda memerlukan sinkronisasi dua arah, pemodelan objek kustom, atau ketika tidak ada seorang pun di tim yang dapat memiliki pemeliharaan berkelanjutan. Faktor penentu jaranglah pembangunan awal; melainkan siapa yang mengawasinya setahun dari sekarang.

Berikut adalah daftar periksa yang jujur. Bangun sendiri jika: arahnya satu arah, Anda mensinkronkan objek standar, Anda memiliki developer yang dapat menghosting endpoint webhook, dan seseorang akan memperhatikan ketika payload mulai gagal. Semua di atas adalah cetak biru Anda.

Sewa mitra jika: Anda memerlukan sinkronisasi dua arah dengan pencegahan loop di beberapa objek, Anda memodelkan objek kustom dengan asosiasi bertipe, Anda menyambungkan beberapa sistem (HubSpot ditambah ERP ditambah penagihan), atau orang yang akan memeliharanya sudah kelebihan kapasitas. HubSpot menggunakan versioning API berbasis tanggal dengan perubahan breaking hanya sekitar dua kali setahun, yang terdengar ringan sampai salah satunya mendarat selama minggu tersibuk Anda dan tidak ada pemiliknya. Ekor pemeliharaan itu, bukan deploy pertama, adalah yang secara diam-diam menenggelamkan integrasi internal. Jika Anda lebih memilih tidak memilikinya, di situlah layanan integrasi CRM kustom kami hadir.

Poin Penting

  • Tidak ada lagi kunci API HubSpot. Gunakan token akses aplikasi pribadi untuk alat internal satu akun; OAuth hanya untuk aplikasi publik multi-akun.
  • Selalu validasi X-HubSpot-Signature-v3 sebelum Anda memercayai payload webhook. Bangun ulang string sumber dengan URL target penuh.
  • Hormati batas 4 req/dtk CRM Search dan lakukan batch penulisan besar dalam kelompok 100 dengan backoff 429.
  • Lebih suka webhook daripada polling untuk sinkronisasi real-time, dan integrasi HubSpot adalah satu bagian dari tumpukan alat AI untuk bisnis yang lebih luas.

Terjebak di sisi pemeliharaan, atau ingin sepasang mata kedua sebelum Anda merilis? Pesan konsultasi integrasi gratis. Tidak ada tekanan apa pun; kode di atas adalah milik Anda untuk dijalankan bagaimanapun juga.

Tentang Penulis

Mert Batur Gurbuz adalah Co-Founder Techsy.io, di mana timnya mengirimkan agen AI, sistem otomasi, dan pipeline suara/SDR untuk klien B2B. Ia belajar di University of Birmingham dan menulis tentang tumpukan alat LLM yang benar-benar digunakan tim Techsy di produksi. Kredensial: Co-Founder, Techsy.io, University of Birmingham. Terhubung di LinkedIn.

Pertanyaan yang Sering Diajukan

Apakah saya masih membutuhkan kunci API HubSpot di tahun 2026?

Tidak. HubSpot menghentikan kunci API statis pada 30 November 2022, dan kini tidak lagi didukung sepenuhnya. Autocomplete masih menyarankan "hubspot api key" karena kebiasaan, tetapi tidak ada yang bisa diambil. Untuk alat internal satu akun, buat aplikasi pribadi di Pengaturan dan gunakan token aksesnya sebagai gantinya.

Apa perbedaan antara token aplikasi pribadi dan OAuth untuk HubSpot?

Token akses aplikasi pribadi adalah kredensial statis untuk satu akun HubSpot, tanpa kedaluwarsa dan tanpa alur refresh, ideal untuk alat internal. OAuth 2.0 adalah untuk aplikasi publik multi-akun yang dipasang oleh perusahaan lain ke portal mereka sendiri; tokennya kedaluwarsa dalam sekitar enam jam dan memerlukan siklus refresh.

Apa batas laju API HubSpot di tahun 2026?

Aplikasi pribadi mendapatkan sekitar 10 permintaan per detik (100 per 10 detik pada Free/Starter, 190 pada Pro/Enterprise) dengan batas harian 250.000 hingga 1.000.000. API CRM Search dibatasi terpisah pada 4 permintaan per detik, dan endpoint batch menerima maksimum 100 rekaman per permintaan.

Bagaimana cara memvalidasi tanda tangan webhook HubSpot?

Gunakan resep v3: tolak permintaan di mana X-HubSpot-Request-Timestamp lebih lama dari lima menit, lalu bangun string sumber dari method ditambah URL target penuh ditambah body mentah ditambah timestamp. Lakukan HMAC-SHA256 dengan rahasia aplikasi Anda, encode base64 hasilnya, dan bandingkan dengan X-HubSpot-Signature-v3 dalam waktu konstan.

SDK HubSpot mana yang harus saya gunakan, Node atau Python?

Keduanya resmi dan dipelihara. Node menggunakan @hubspot/api-client (v14) dan Python menggunakan hubspot-api-client (v12). Mereka mengekspos model objek CRM v3 yang sama, jadi pilihlah yang sesuai dengan tumpukan teknologi Anda. Panduan ini menyediakan kode autentikasi dan validasi tanda tangan yang identik di kedua bahasa.

Bagaimana cara mensinkronkan HubSpot dengan alat internal kustom secara real-time?

Daftarkan langganan webhook di aplikasi pribadi Anda untuk objek dan peristiwa yang Anda pedulikan, lalu host endpoint HTTPS yang akan di-POST oleh HubSpot ketika perubahan yang cocok terjadi. Validasi tanda tangan, lalu tulis perubahan ke dalam alat internal Anda. Lakukan polling hanya ketika tidak ada langganan webhook yang mencakup apa yang Anda butuhkan.

Apa itu Service Key HubSpot dan haruskah saya menggunakannya?

Service Key adalah kredensial tingkat akun, hanya data, yang dimasukkan HubSpot ke beta publik pada Februari 2026. Ini ditujukan untuk pekerjaan sisi server yang hanya menyentuh data. Untuk alat internal standar saat ini, token akses aplikasi pribadi masih merupakan default yang lebih aman dan lebih terdokumentasi; perlakukan Service Keys sebagai beta hingga mereka lulus.

Bisakah saya menguji integrasi HubSpot tanpa menyentuh produksi?

Ya. Buat sandbox pengembang HubSpot dan arahkan token aplikasi pribadi Anda ke sana. Cakupan, model objek, webhook, dan batas laju berperilaku sama seperti produksi, sehingga Anda dapat membuat kontak uji dan memicu webhook tanpa meninggalkan rekaman sampah untuk dibersihkan tim penjualan Anda nanti.

Berapa banyak rekaman yang dapat diambil oleh API batch HubSpot sekaligus?

Endpoint batch (POST /crm/v3/objects/{objectType}/batch/create dan saudara-saudaranya untuk update dan upsert) menerima maksimum 100 rekaman per permintaan. Pecah payload yang lebih besar menjadi kelompok-kelompok 100. Batas lama "10 rekaman untuk kontak" yang masih dikutip beberapa tutorial telah dihapus; 100 adalah angka saat ini di semua jenis objek.

Haruskah saya membangun ini secara internal atau menyewa agensi?

Bangun secara internal ketika sinkronisasi satu arah, menggunakan objek standar, dan memiliki pemilik yang dapat menyerap perubahan breaking HubSpot dua kali setahun. Sewa mitra untuk sinkronisasi dua arah, pemodelan objek kustom, atau ketika tidak ada yang bisa memiliki pemeliharaan. Deploy pertama itu mudah; satu tahun perawatan setelahnya adalah biaya sesungguhnya.

Tag

integrasi api hubspottoken aplikasi pribadi hubspotwebhook hubspotnodepython

Bagikan artikel ini

Artikel Terkait

Lebih lanjut di web-development

web-development
Jun 20, 2026

12 Alternatif Salesforce untuk Usaha Kecil (2026) — Termasuk 8 yang Tidak Dicantumkan Orang Lain

Rangkuman netral tentang 12 alternatif Salesforce untuk usaha kecil, dengan harga terverifikasi tahun 2026, alur keputusan berdasarkan skenario pembeli, dan bagian jujur tentang siapa yang sebaiknya tetap menggunakan Salesforce.

11 min read baca
Baca
web-development
Jun 13, 2026

7 CRM Open Source Terbaik untuk Startup (Self-Hosted, Diuji 2026)

Kami meng-host sendiri 7 CRM open source di VPS nyata dan memberi peringkat berdasarkan bintang GitHub, lisensi, API, serta sejauh mana Anda dapat mengembangkannya melalui kode. Twenty, EspoCRM, SuiteCRM, Odoo, Krayin, dan lainnya, dibandingkan untuk startup pada tahun 2026.

14 min read baca
Baca
web-development
Jun 13, 2026

7 Sistem ERP Manufaktur Terbaik untuk Usaha Kecil (2026, Tanpa Hype Reseller)

Sudah terlalu besar untuk spreadsheet dan QuickBooks? Kami membandingkan 7 sistem ERP manufaktur untuk bengkel kecil dengan harga USD asli tahun 2026, tabel keputusan profil-ke-sistem, dan tanda-tanda jujur kapan Anda benar-benar perlu membangun sistem kustom. Tanpa agenda reseller.

14 min read baca
Baca
Lihat Semua Postingan
Mulai Proyek Anda

Siap membangun sesuatu lu biasa?

Mari wujudkan visi Anda menjadi kenyataan. Tim kami siap membantu Anda menciptakan software yang benar-benar berdampak.

Jadwalkan panggilan scoping 30 menitLihat Karya Kami

Terbaru dari library

Skill Claude

Lihat semua
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Otomatisasi AI

Lihat semua
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Terbaru dari library

Skill Claude

Lihat semua
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Otomatisasi AI

Lihat semua
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Layanan

  • Solusi Enterprise
  • Aplikasi Mobile
  • Aplikasi Web

Solusi

  • Sistem CRM
  • Integrasi AI
  • Solusi ERP
  • Agen Suara
  • Otomasi Proses
  • Keamanan Siber

Perpustakaan

  • Blog
  • Portofolio

Komunitas

  • Otomatisasi AI
  • Skill Claude

Alat

  • Kalkulator Biaya Aplikasi Mobile
  • Kalkulator Biaya API OpenAI / LLM
  • Kalkulator Biaya MVP
  • Kalkulator Biaya Voice AI Agent

Perusahaan

  • Tentang
  • Mitra
  • Kontak

Hukum

  • Kebijakan Privasi
  • Syarat Layanan
  • Kebijakan Kuki

Layanan

  • Solusi Enterprise
  • Aplikasi Mobile
  • Aplikasi Web

Solusi

  • Sistem CRM
  • Integrasi AI
  • Solusi ERP
  • Agen Suara
  • Otomasi Proses
  • Keamanan Siber

Perpustakaan

  • Blog
  • Portofolio

Komunitas

  • Otomatisasi AI
  • Skill Claude

Alat

  • Kalkulator Biaya Aplikasi Mobile
  • Kalkulator Biaya API OpenAI / LLM
  • Kalkulator Biaya MVP
  • Kalkulator Biaya Voice AI Agent

Perusahaan

  • Tentang
  • Mitra
  • Kontak
HukumKebijakan PrivasiSyarat LayananKebijakan Kuki
TECHSY
© 2026 Techsy. Seluruh hak cipta dilindungi.