
Integrace HubSpot API pro vlastní interní nástroje: Průvodce Node + Python (2026)
Stále hledáte klíč HubSpot API, abyste propojili svou integraci HubSpot API? Přestaňte hledat. HubSpot ukončil podporu statických klíčů API 30. listopadu 2022 a aktuální Node SDK (@hubspot/api-client, nyní ve verzi 14) by ho stejně nepřijalo. Správným pověřením pro interní nástroj pracující s jedním účtem je přístupový token soukromé aplikace (private app access token) a tento průvodce vás provede vytvořením skutečné synchronizace mezi HubSpotem a interním nástrojem jak v Node, tak v Pythonu – od vašeho prvního volání create contact až po webhook s ověřeným podpisem.
Rychlá odpověď: Integrace HubSpot API umožňuje vlastnímu internímu nástroji číst a zapisovat data CRM prostřednictvím REST API v3 od HubSpotu. Pro interní nástroj pracující s jedním účtem se autentizujte pomocí přístupového tokenu soukromé aplikace (HubSpot vyřadil klíče API v roce 2022) a poté synchronizujte změny v reálném čase pomocí webhooků místo periodického dotazování (pollingu).
Zde je to, co vytvoříte:
- Autentizaci tokenem soukromé aplikace plus vaše první volání
create contactv Node a Pythonu - Příjemce webhooků, který před důvěrou v payload ověří hlavičku
X-HubSpot-Signature-v3 - Synchronizaci odolnou vůči chybě 429, která dávkově zpracovává 100 záznamů do interního ticketovacího systému nebo ERP
Jak funguje integrace HubSpot API pro vlastní interní nástroje?
Integrace HubSpot API propojuje vlastní interní nástroj (aplikaci pro ticketing, ERP, dashboard pro fakturaci, zákaznický portál) s CRM systému HubSpot prostřednictvím jeho REST API v3. Váš nástroj čte a zapisuje objekty CRM (kontakty, obchody, společnosti nebo vlastní objekty) přes HTTPS pomocí přístupového tokenu soukromé aplikace a změny v reálném čase proudí zpět prostřednictvím webhooků.
Představte si CRM HubSpotu jako databázi, se kterou komunikujete přes HTTP. Každý záznam je objekt s typem a ID. hubspot crm api integration, kterou budujete, plní dvě úlohy: posílá data do HubSpotu (vytvoří kontakt při otevření ticketu) a čte data z něj (načte obchod, když se vykreslí váš interní dashboard).
Synchronizace běží jedním ze dvou směrů. Jednosměrná synchronizace kopíruje změny z HubSpotu do vašeho nástroje nebo z vašeho nástroje do HubSpotu. Obousměrná synchronizace dělá obojí a potřebuje ochranu proti cyklům, které probereme později. A místo toho, abyste se HubSpotu každou minutu ptali „je něco nového?“ (polling), zaregistrujete webhook, takže vám HubSpot oznámí změnu záznamu okamžitě.
Pokud byste raději vlastnili svá data zcela sami, než integrovali hostované CRM, self-hosting open-source CRM je jiná cesta, kterou stojí za to zvážit, než se zavážete. Ale pokud je HubSpot již vaším jediným zdrojem pravdy, API je způsob, jakým s ním komunikuje vše ostatní.
Pro interní nástroj pracující s jedním účtem nepotřebujete OAuth ani listing v marketplace aplikací. Token soukromé aplikace a webhook představují celou integraci.
Autentizace v roce 2026: Proč již neexistuje klíč HubSpot API
Pro autentizaci HubSpot API u interního nástroje pracujícího s jedním účtem použijte přístupový token soukromé aplikace. Je to statický bearer token, který vygenerujete jednou ve svém účtu HubSpot a je scopedován přesně na objekty, kterých se váš nástroj dotýká. Neexistuje žádný refresh flow ani expirace. OAuth existuje pro veřejné aplikace pro více účtů, nikoli pro dashboard, který váš operační tým provozuje interně.
Token soukromé aplikace versus zastaralý klíč API
Zde je nástraha, která zachytí polovinu vývojářů, kteří narazí na tento výsledek vyhledávání. HubSpot ukončil podporu klíčů API 30. listopadu 2022 a nyní jsou zcela nepodporované. Automatické doplňování stále navrhuje „hubspot api key“, protože svalová paměť nestihla tempo, ale není žádný klíč k získání. Sáhněte po soukromé aplikaci hubspot: vytvořte ji v Nastavení, udělte jí potřebné scope a zkopírujte přístupový token z karty Auth. Přehled soukromých aplikací HubSpotu pokrývá nastavení.
| Metoda | Případ použití | Expirace nebo refresh? | Nejlepší pro |
|---|---|---|---|
| Klíč API | Odstraněno | Ukončeno listopad 2022 | Nic, je zastaralé |
| Přístupový token soukromé aplikace | Interní nástroj pro jeden účet | Ne, statický, bez refresh | Váš interní nástroj, zde výchozí volba |
| OAuth 2.0 | Veřejná aplikace nebo pro více účtů | Ano, tokeny expirují přibližně za 6 hodin a potřebují refresh | Aplikace, které uvádíte pro portály jiných společností |
| Service Key (veřejná beta, únor 2026) | Pověření pouze pro data na úrovni účtu | Scopedováno na účet, dle dokumentace | Serverové úlohy pouze pro data, stále beta |
Dvě pravidla pro samotný token. Udělte nejmenší nezbytná oprávnění: pokud váš nástroj pouze čte obchody a zapisuje kontakty, vyžádejte si crm.objects.contacts.write a crm.objects.deals.read, nic víc. A token uchovávejte v proměnné prostředí nebo ve správci tajných klíčů, posílaný v hlavičce Authorization: Bearer, nikdy hardcoded a nikdy odesílaný do prohlížeče.
Verdikt je jednoduchý. Pro interní nástroj použijte přístupový token soukromé aplikace. Po OAuth sáhněte pouze v případě, že se z toho později stane veřejná aplikace pro více účtů, kterou si jiné společnosti instalují do svých portálů.
Vaše první volání HubSpot API: Vytvoření kontaktu v Node a Pythonu
Kanonickým prvním voláním je create contact a oficiální SDK z něj dělají několik řádků kódu. Nainstalujte klienta, inicializujte jej pomocí svého přístupového tokenu soukromé aplikace z prostředí, poté vytvořte kontakt a načtěte zpět obchod. Toto je stejný vzor, který znovu použijete pro společnosti, tickety a volání hubspot custom objects api, mění se pouze typ objektu.
Zde je verze pro Node s @hubspot/api-client (v14):
// 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);A totéž v Pythonu s hubspot-api-client (v12):
# 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"])Profesionální tip: testujte proti vývojářskému sandboxu HubSpotu, nikdy nejprve na produkci. Špatně formulované volání create na produkci zanechá skutečné odpadkové záznamy, které musí váš obchodní tým čistit. Token, scope a model objektů se v sandboxu chovají identicky.
Jak synchronizovat HubSpot s interním nástrojem v reálném čase?
Použijte webhooky, ne polling. Zaregistrujte odběr webhooku ve své soukromé aplikaci pro objekt a událost, která vás zajímá (například deal.propertyChange), nasměrujte jej na endpoint HTTPS, který hostujete, a HubSpot vám okamžitě po změně pošle malé JSON pole. Používejte polling pouze tehdy, když neexistuje odběr pro to, co potřebujete sledovat.
Odměnou je efektivita. Polling se každou minutu ptá „je něco nového?“ a při tom spaluje váš limit rychlosti; webhook vám jen řekne v okamžiku, kdy se obchod změní. Tento rozdíl má význam ve velkém měřítku a webhooky jsou nyní mainstreamem, nikoli exotikou: Zpráva o stavu API za rok 2025 od Postmanu, průzkum více než 5 700 vývojářů, zjistila, že na ně spoléhá přibližně polovina týmů.
Zaregistrujte odběr na kartě Webhooks vaší soukromé aplikace, nastavte cílovou URL a vyberte události. HubSpot odešle pole objektů událostí, každý nese subscriptionType, objectId a informace o tom, co se změnilo. Zde je kostra přijímače v Node s Expressem:
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"));Zde se průvodce stává reálným. Řekněme, že synchronizujete obchod do záznamu ERP malého výrobce: webhook se spustí, váš handler vytvoří nebo aktualizuje odpovídající ticket v ERP a váš operační tým vidí změnu, aniž by sahal do HubSpotu. Je to stejný přístup v reálném čase, který používáme k synchronizaci hlasového agenta s CRM, pouze triggerem je změna vlastnosti místo telefonního hovoru. Jedno varování: výše uvedená kostra věří všemu, co je na ni POSTováno. Opravte to, než přejdete na live provoz.
Ověřování podpisů webhooků (v3), abyste nikdy nedůvěřovali padělanému payloadu
Ověřte každý příchozí webhook pomocí podpisu v3. HubSpot podepisuje každý požadavek tajným klíčem vaší aplikace a odesílá dvě hlavičky, X-HubSpot-Signature-v3 a X-HubSpot-Request-Timestamp. Odmítněte vše starší než 5 minut, znovu sestavte zdrojový řetězec jako metoda + celá URL + raw body + timestamp, aplikujte HMAC-SHA256 s tajným klíčem aplikace, zakódujte base64 a porovnejte v konstantním čase.
Pokud toto přeskočíte, kdokoli, kdo uhodne URL vašeho webhooku, může padělat aktualizaci obchodu. Validace není volitelná. Dokumentace HubSpotu validating requests doc a changelog podpisů v3 přesně popisují recept. Zde je jako middleware pro Express ready-to-use:
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();
}Stejná kontrola jako funkce v Pythonu, aby byly pokryty obě stacky:
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)Nástraha, která lidi stojí celé odpoledne: HubSpot podepisuje celou cílovou URL, schéma, hostitel a cestu dohromady. Za proxy, load balancerem nebo tunelem ngrok může req.get("host") hlásit interního hostitele místo veřejného, který HubSpot podepsal. Pokud validace stále selhává u payloadu, o kterém jste si jisti, že je legitimní, zalogujte přesnou URI, kterou jste znovu sestavili, a porovnejte ji znak po znaku s vaší veřejnou URL webhooku.
Limity rychlosti, chyby 429 a Batch API: Co jsme provozovali v produkci
Soukromé aplikace získávají přibližně 10 požadavků za sekundu (100 za 10 sekund na Free/Starter, 190 za 10 sekund na Pro/Enterprise) s denním limitem mezi 250 000 a 1 000 000. Past: CRM Search je samostatně limitován na 4 požadavky za sekundu a batch endpointy přijímají maximálně 100 záznamů na požadavek. Pokyny pro využití od HubSpotu uvádějí tierové sazby.
| Tier | Za 10 s | Za sekundu | Denní limit | Poznámky |
|---|---|---|---|---|
| Free / Starter (soukromá aplikace) | 100 | ~10 | 250 000 | CRM Search samostatně limitován na 4 req/s |
| Pro / Enterprise (soukromá aplikace) | 190 | ~19 | až 1 000 000 | Batch endpointy max 100 záznamů na požadavek |
Zde se teorie střetla s červeným stagingovým dashboardem. Během backfillu této jaro jsme nahráli přibližně 8 000 existujících záznamů do HubSpotu z interního ticketovacího nástroje a obohatili každý z nich vyhledáváním v CRM Search. Na straně Node jsme běželi @hubspot/api-client v14 a pro Python enrichment worker hubspot-api-client v12. Hromadné zápisy byly v pořádku. Volání Search se zhroutila během minuty, protože náš worker střílel Search přibližně 15 req/s proti tvrdému stropu 4 req/s, který jsme samostatně nezapočítali.
Dvě změny to opravily. Zaprvé, wrapper pro retry, který čte response hlavičky X-HubSpot-RateLimit-* a při chybě 429 ustupuje:
// 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++;
}
}
}Zadruhé, přestali jsme zapisovat záznamy jeden po druhém. Batch endpoint přijímá až 100 záznamů na POST /crm/v3/objects/{objectType}/batch/create, takže jsme backfill rozdělili do 80 batch volání místo 8 000 jednotlivých POSTů:
// 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`);
}
}Omezení workeru Search na 4 req/s a dávkování zápisů proměnilo běh, který se topil v retryích, v ten, který tiše dokončil. Pokud si z této sekce zapamatujete jedno číslo, ať je to 4: limit CRM Search je ten, který v produkci bolí, a je to ten, na který každý souhrnný článek zapomíná zmínit. Starý strop „10 pro kontakty“ mimochodem již neplatí; aktuální je 100 napříč typy objektů.
Jdeme na obousměrnou synchronizaci: Zápis změn zpět do HubSpotu bez nekonečných cyklů
Obousměrná synchronizace zapisuje změny zpět do HubSpotu z vašeho interního nástroje stejně jako je čte. Nebezpečím je zpětná vazba: váš zápis zpět spustí přesně ten webhook, který vyvolal váš handler, který opět zapisuje, navždy. Zabraňte tomu pomocí klíče idempotence (přeskočte změny, které jste již aplikovali) a flagu zdroje (ignorujte příchozí události způsobené vaším vlastním nástrojem).
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" },
})
);
}Vzor je malý, ale jeho přeskočení je způsob, jak synchronizace potichu zdvojnásobí objem zápisů přes noc. Jakmile jsou data čistá v obou směrech, týmy je často posílají downstream do pipeline AI SDR nebo reportingové vrstvy. Tutorial integrace HubSpot od Nango je solidní reference pouze pro Node, pokud chcete druhý pohled na obousměrnou synchronizaci, i když myšlenku prevence cyklů si budete muset přeportovat sami.
Měli byste to budovat interně, nebo najmout integračního partnera?
Budujte interně, když je synchronizace malá, stabilní a vlastněná: jednosměrný tok, handful objektů a inženýr, který dokáže absorbovat breaking changes HubSpotu přibližně dvakrát ročně. Najměte partnera, když potřebujete obousměrnou synchronizaci, modelování vlastních objektů, nebo když nikdo v týmu nemůže vlastnit průběžnou údržbu. Rozhodujícím faktorem málokdy je počáteční build; je to tím, kdo se na to bude dívat za rok.
Zde je upřímný checklist. Postavte si to sami, pokud: směr je jednosměrný, synchronizujete standardní objekty, máte vývojáře, který může hostovat endpoint webhooku, a někdo si všimne, když payload začne selhávat. Vše výše je vaším blueprintem.
Najměte partnera, pokud: potřebujete obousměrnou synchronizaci s prevencí cyklů napříč několika objekty, modelujete vlastní objekty s typed associations, propojujete více systémů (HubSpot plus ERP plus fakturace), nebo osoba, která by to udržovala, je již na kapacitním maximu. HubSpot používá verzování API založené na datech s breaking changes pouze asi dvakrát ročně, což zní mírně, dokud jedno nedorazí během vašeho nejvytíženějšího týdne a není žádný vlastník. Tato ocasní údržba, nikoli první deploy, je to, co potichu potápí interní integrace. Pokud si to raději nevlastníte, zde přichází naše služby vlastního CRM integrace.
Klíčová zjištění
- Klíč HubSpot API již neexistuje. Pro interní nástroj s jedním účtem použijte přístupový token soukromé aplikace; OAuth je pouze pro veřejné aplikace pro více účtů.
- Vždy ověřte
X-HubSpot-Signature-v3, než důvěřujete payloadu webhooku. Znovu sestavte zdrojový řetězec s celou cílovou URL. - Respektujte limit 4 req/s pro CRM Search a velké zápisy dávkuje po 100 s backoffem při chybě 429.
- Preferujte webhooky před pollingem pro synchronizaci v reálném čase a integrace HubSpotu je jedním dílkem širšího stacku AI nástrojů pro business.
Uvízli jste na straně údržby nebo chcete druhé oko před nasazením? Rezervujte si bezplatnou konzultaci integrace. Žádný tlak žádným směrem; výše uvedený kód je váš ke spuštění bez ohledu na okolnosti.
O autorovi
Mert Batur Gurbuz je spoluzakladatelem Techsy.io, kde tým dodává AI agenty, automatizační systémy a voice/SDR pipeline pro B2B klienty. Studuje na University of Birmingham a píše o LLM tooling stacku, který tým Techsy skutečně používá v produkci. Kredence: Spoluzakladatel, Techsy.io, University of Birmingham. Propojte se na LinkedIn.
Často kladené otázky
Potřebuji v roce 2026 stále klíč HubSpot API?
Ne. HubSpot ukončil podporu statických klíčů API 30. listopadu 2022 a jsou zcela nepodporované. Automatické doplňování stále navrhuje „hubspot api key“ ze zvyku, ale není nic k získání. Pro interní nástroj s jedním účtem vytvořte soukromou aplikaci v Nastavení a použijte její přístupový token.
Jaký je rozdíl mezi tokenem soukromé aplikace a OAuth pro HubSpot?
Přístupový token soukromé aplikace je statické pověření pro jeden účet HubSpot, bez expirace a bez refresh flow, ideální pro interní nástroj. OAuth 2.0 je pro veřejné aplikace pro více účtů, které si jiné společnosti instalují do svých portálů; jeho tokeny expirují přibližně za šest hodin a vyžadují cyklus refresh.
Jaké jsou limity rychlosti API HubSpotu v roce 2026?
Soukromé aplikace získávají přibližně 10 požadavků za sekundu (100 za 10 sekund na Free/Starter, 190 na Pro/Enterprise) s denním limitem 250 000 až 1 000 000. CRM Search API je samostatně limitován na 4 požadavky za sekundu a batch endpointy přijímají maximálně 100 záznamů na požadavek.
Jak ověřím podpis webhooku HubSpotu?
Použijte recept v3: odmítněte požadavky, kde je X-HubSpot-Request-Timestamp starší než pět minut, poté sestavte zdrojový řetězec z metody plus celá cílová URL plus raw body plus timestamp. Aplikujte HMAC-SHA256 s tajným klíčem vaší aplikace, výsledky zakódujte base64 a porovnejte s X-HubSpot-Signature-v3 v konstantním čase.
Které SDK HubSpotu mám použít, Node nebo Python?
Obě jsou oficiální a udržované. Node používá @hubspot/api-client (v14) a Python používá hubspot-api-client (v12). Expozují stejný model objektů CRM v3, takže si vyberte ten, který odpovídá vašemu stacku. Tento průvodce dodává identický kód pro autentizaci a ověřování podpisů v obou jazycích.
Jak synchronizuji HubSpot s vlastním interním nástrojem v reálném čase?
Zaregistrujte odběr webhooku ve své soukromé aplikaci pro objekt a událost, která vás zajímá, poté hostujte endpoint HTTPS, na který HubSpot POSTuje, když dojde k odpovídající změně. Ověřte podpis a poté zapište změnu do svého interního nástroje. Používejte polling pouze tehdy, když žádný odběr webhooku nepokrývá to, co potřebujete.
Co je Service Key HubSpotu a měl bych ho používat?
Service Key je pověření pouze pro data na úrovni účtu, které HubSpot uvedl do veřejné bety v únoru 2026. Je cíleno na serverové úlohy, které pracují pouze s daty. Pro standardní interní nástroj dnes je přístupový token soukromé aplikace stále bezpečnější, lépe zdokumentovanou výchozí volbou; treat Service Keys jako beta, dokud nebudou plně vydány.
Mohu testovat integraci HubSpotu, aniž bych se dotkl produkce?
Ano. Vytvořte vývojářský sandbox HubSpotu a nasměrujte na něj token své soukromé aplikace. Scope, model objektů, webhooky a limity rychlosti se chovají stejně jako v produkci, takže můžete vytvářet testovací kontakty a spouštět webhooky, aniž byste zanechávali odpadkové záznamy, které by váš obchodní team musel později čistit.
Kolik záznamů může batch API HubSpotu přijmout najednou?
Batch endpointy (POST /crm/v3/objects/{objectType}/batch/create a jejich update a upsert sourozenci) přijímají maximálně 100 záznamů na požadavek. Větší payloady rozdělte do skupin po 100. Starý strop „10 záznamů pro kontakty“, který některé tutoriály stále citují, byl odstraněn; 100 je aktuální napříč typy objektů.
Měl bych to budovat interně, nebo najmout agenturu?
Budujte interně, když je synchronizace jednosměrná, používá standardní objekty a má vlastníka, který dokáže absorbovat breaking changes HubSpotu dvakrát ročně. Najměte partnera pro obousměrnou synchronizaci, modelování vlastních objektů, nebo když nikdo nemůže vlastnit údržbu. První deploy je snadný; rok údržby po něm je skutečná cena.