Kısaca
HubSpot API'si, geliştiricilerin CRM, pazarlama, satış ve hizmet merkezleriyle programlı olarak entegre olmasını sağlar. OAuth 2.0 ve özel uygulama kimlik doğrulaması kullanır, kişiler, şirketler, anlaşmalar, destek talepleri ve daha fazlası için RESTful uç noktaları sunar ve abonelik katmanına göre hız sınırları uygular. Bu rehber, kimlik doğrulama kurulumundan, temel uç noktalar ve web kancalarına kadar üretime hazır entegrasyon adımlarını içerir.
Giriş
HubSpot 194.000'den fazla müşteri hesabı ve milyarlarca CRM kaydı yönetir. CRM entegrasyonları, pazarlama otomasyonu veya satış araçları geliştirenler için HubSpot API entegrasyonu artık lüks değil, 7 milyondan fazla kullanıcıya ulaşmak için zorunlu.
Gerçek şu: İşletmeler, sistemler arasında manuel veri girişiyle haftada 15-20 saat kaybediyor. Sağlam bir HubSpot API entegrasyonu ile kişiler arası senkronizasyon, anlaşma güncellemeleri, pazarlama iş akışları ve platformlar arası raporlama tamamen otomatik hale gelir.
💡 Apidog, API entegrasyon testini basitleştirir. HubSpot uç noktalarınızı test edin, OAuth akışlarını doğrulayın, web kancası yüklerini inceleyin ve kimlik doğrulama sorunlarını tek bir çalışma alanında giderin. API spesifikasyonlarını içe aktarın, yanıtları taklit edin ve test senaryolarını ekibinizle paylaşın.
HubSpot API'si Nedir?
HubSpot, CRM verilerine ve pazarlama otomasyonuna erişim için RESTful bir API sunar. API ile pratikte şunları yönetebilirsiniz:
- Kişiler, şirketler, anlaşmalar, destek talepleri ve özel nesneler
- Pazarlama e-postaları ve açılış sayfaları
- Satış hatları ve dizileri
- Hizmet destek talepleri ve konuşmalar
- Analitik ve raporlama
- İş akışları ve otomasyon
- Dosyalar ve varlıklar
Temel Özellikler
| Özellik | Açıklama |
|---|---|
| RESTful Tasarım | JSON yanıtlarıyla standart HTTP yöntemleri |
| OAuth 2.0 + Özel Uygulamalar | Esnek kimlik doğrulama seçenekleri |
| Web Kancaları | Nesne değişiklikleri için gerçek zamanlı bildirimler |
| Hız Sınırlandırması | Katman bazlı sınırlar (saniyede 100-400 istek) |
| CRM Nesneleri | Standart ve özel nesne desteği |
| İlişkiler | Nesneleri birbirine bağlama (kişi-şirket, anlaşma-kişi) |
| Özellikler | Herhangi bir nesne türü için özel alanlar |
| Arama API'si | Karmaşık filtreleme ve sıralama |
API Mimariye Genel Bakış
Bütün uç noktalar şuradan başlar:
https://api.hubapi.com/
API Sürümlerinin Karşılaştırması
| Sürüm | Durum | Kimlik Doğrulama | Kullanım Durumu |
|---|---|---|---|
| CRM API v3 | Mevcut | OAuth 2.0, Özel Uygulama | Tüm yeni entegrasyonlar |
| Otomasyon API v4 | Mevcut | OAuth 2.0, Özel Uygulama | İş akışı kaydı |
| Pazarlama E-postası API'si | Mevcut | OAuth 2.0, Özel Uygulama | E-posta kampanyaları |
| Kişiler API v1 | Kullanımdan Kaldırıldı | API Anahtarı (eski) | v3'e geçin |
| Şirketler API v1 | Kullanımdan Kaldırıldı | API Anahtarı (eski) | v3'e geçin |
Önemli: API anahtarı kimlik doğrulaması devre dışı bırakıldı. OAuth 2.0 veya özel uygulamaya geçiş yapın.
Başlarken: Kimlik Doğrulama Kurulumu
Adım 1: HubSpot Geliştirici Hesabı Açın
- HubSpot Geliştirici Portalı’na girin.
- Mevcut hesabınızla oturum açın veya yeni bir hesap oluşturun.
- Geliştirici panelinde Uygulamalar bölümüne gidin.
- Uygulama Oluştur’u seçin.
Adım 2: Kimlik Doğrulama Yöntemini Belirleyin
| Yöntem | En İyisi | Güvenlik Seviyesi |
|---|---|---|
| OAuth 2.0 | Çok kiracılı uygulamalar, herkese açık entegrasyonlar | Yüksek (kullanıcı kapsamlı belirteçler) |
| Özel Uygulama | Dahili entegrasyonlar, tek portal | Yüksek (portal kapsamlı belirteç) |
Adım 3: Özel Uygulama Kurulumu (Dahili Entegrasyonlar İçin)
- Ayarlar > Entegrasyonlar > Özel Uygulamalar’a gidin.
- Özel Uygulama Oluştur’a tıklayın.
-
Gerekli kapsamları ekleyin:
contacts crm.objects.companies crm.objects.deals crm.objects.tickets automation webhooks -
Erişim belirteci oluşturun, .env dosyanızda güvenli saklayın:
# .env dosyası HUBSPOT_ACCESS_TOKEN="pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" HUBSPOT_PORTAL_ID="12345678"
Adım 4: OAuth 2.0 Kurulumu (Çok Kiracılı Uygulamalar İçin)
- Uygulamalar > Uygulama Oluştur'a gidin.
-
Kimlik doğrulama ayarlarını yapılandırın:
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; // Yetkilendirme URL'si 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()}`; };
Adım 5: Erişim Belirteci İçin Kodu Değiştirme
OAuth geri çağrısını işleyin:
const exchangeCodeForToken = async (code) => {
const response = await fetch('https://api.hubapi.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
};
};
// Geri çağrıyı işle
app.get('/oauth/callback', async (req, res) => {
const { code, state } = req.query;
try {
const tokens = await exchangeCodeForToken(code);
// Belirteçleri veritabanında sakla
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 hatası:', error);
res.status(500).send('Kimlik doğrulama başarısız oldu');
}
});
Adım 6: Erişim Belirtecini Yenileme
const refreshAccessToken = async (refreshToken) => {
const response = await fetch('https://api.hubapi.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,
expiresIn: data.expires_in
};
};
// Geçerli belirteci sağlamak için ara yazılım
const ensureValidToken = async (portalId) => {
const installation = await db.installations.findByPortalId(portalId);
// 30 dakika içinde süresi doluyorsa yenile
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;
};
Adım 7: Kimliği Doğrulanmış API Çağrıları Yapma
Tek bir fonksiyonla tüm API çağrılarını yönetebilirsiniz:
const HUBSPOT_BASE_URL = 'https://api.hubapi.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 Hatası: ${error.message}`);
}
return response.json();
};
// Kullanım
const contacts = await hubspotRequest('/crm/v3/objects/contacts');
CRM Nesneleriyle Çalışma
Bir Kişi Oluşturma
Bir kişi kaydı oluşturmak için:
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;
};
// Kullanım
const contact = await createContact({
email: 'john.doe@example.com',
firstName: 'John',
lastName: 'Doe',
phone: '+1-555-0123',
company: 'Acme Corp',
lifecycleStage: 'customer'
});
console.log(`Kişi oluşturuldu: ${contact.id}`);
Kişi Özellikleri
| Özellik | Tür | Açıklama |
|---|---|---|
email |
Dizge | Birincil e-posta (benzersiz tanımlayıcı) |
firstname |
Dizge | Ad |
lastname |
Dizge | Soyad |
phone |
Dizge | Telefon numarası |
company |
Dizge | Şirket adı |
website |
Dizge | Web sitesi URL'si |
lifecyclestage |
Sabit | potansiyel müşteri, pazarlama nitelikli potansiyel müşteri, satış nitelikli potansiyel müşteri, fırsat, müşteri, savunucu, abone |
createdate |
Tarih Saat | Otomatik oluşturulmuş |
lastmodifieddate |
Tarih Saat | Otomatik oluşturulmuş |
Bir Kişi Alma
Kimliğe göre kişi getirin:
const getContact = async (contactId) => {
const response = await hubspotRequest(`/crm/v3/objects/contacts/${contactId}`);
return response;
};
// Kullanım
const contact = await getContact('12345');
console.log(`${contact.properties.firstname} ${contact.properties.lastname}`);
console.log(`E-posta: ${contact.properties.email}`);
Kişileri Arama
Filtrelerle arama yapmak için:
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;
};
// Kullanım - Belirli bir şirketteki kişileri bul
const results = await searchContacts({
filterGroups: [
{
filters: [
{
propertyName: 'company',
operator: 'EQ',
value: 'Acme Corp'
}
]
}
]
});
results.results.forEach(contact => {
console.log(`${contact.properties.email}`);
});
Arama Filtresi Operatörleri
| Operatör | Açıklama | Örnek |
|---|---|---|
EQ |
Eşittir | company EQ 'Acme' |
NEQ |
Eşit değildir | lifecyclestage NEQ 'subscriber' |
CONTAINS_TOKEN |
İçerir | email CONTAINS_TOKEN 'gmail' |
NOT_CONTAINS_TOKEN |
İçermez | email NOT_CONTAINS_TOKEN 'test' |
GT |
Büyüktür | createdate GT '2026-01-01' |
LT |
Küçüktür | createdate LT '2026-12-31' |
GTE |
Büyük veya eşittir | deal_amount GTE 10000 |
LTE |
Küçük veya eşittir | deal_amount LTE 50000 |
HAS_PROPERTY |
Değeri var | phone HAS_PROPERTY |
NOT_HAS_PROPERTY |
Değeri eksik | phone NOT_HAS_PROPERTY |
Bir Şirket Oluşturma
Şirket kaydı oluşturmak için:
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;
};
// Kullanım
const company = await createCompany({
name: 'Acme Corporation',
domain: 'acme.com',
industry: 'Teknoloji',
employees: 500,
revenue: 50000000,
city: 'San Francisco',
state: 'CA',
country: 'ABD'
});
Nesneleri İlişkilendirme
Kişi ve şirketleri bağlamak için:
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 // Kişi ile Şirket
}
]
})
}
);
return response;
};
// Kullanım
await associateContactWithCompany('12345', '67890');
İlişkilendirme Türleri
| İlişkilendirme | Tür Kimliği | Yön |
|---|---|---|
| Kişi → Şirket | 1 | Kişi Şirketle ilişkilidir |
| Şirket → Kişi | 1 | Şirketin ilişkili Kişisi var |
| Anlaşma → Kişi | 3 | Anlaşma Kişiyle ilişkilidir |
| Anlaşma → Şirket | 5 | Anlaşma Şirketle ilişkilidir |
| Destek Talebi → Kişi | 16 | Destek Talebi Kişiyle ilişkilidir |
| Destek Talebi → Şirket | 15 | Destek Talebi Şirketle ilişkilidir |
Bir Anlaşma Oluşturma
Satış fırsatı oluşturmak ve ilişkilendirmek için:
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;
};
// Kullanım
const deal = await createDeal({
name: 'Acme Corp - Kurumsal Lisans',
amount: 50000,
stage: 'qualification',
closeDate: '2026-06-30',
type: 'newbusiness',
description: 'Kurumsal yıllık abonelik'
});
// Şirket ve kişiyle ilişkilendir
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 }] }) }
);
Anlaşma Aşamaları (Varsayılan Satış Hattı)
| Aşama | Dahili Değer |
|---|---|
| Randevular Planlandı | appointmentscheduled |
| Satın Almaya Nitelikli | qualifiedtobuy |
| Sunum Planlandı | presentationscheduled |
| Karar Verici İkna Edildi | decisionmakerboughtin |
| Sözleşme Gönderildi | contractsent |
| Kazanıldı | closedwon |
| Kaybedildi | closedlost |
Web Kancaları
Web Kancalarını Yapılandırma
Gerçek zamanlı bildirimler için web kancası oluşturun:
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 // isteğe bağlı: özellik değişimine göre filtrele
})
});
return response;
};
// Kullanım
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(`Web kancası oluşturuldu: ${webhook.id}`);
Web Kancası Olay Türleri
| Olay Türü | Tetikleyici |
|---|---|
contact.creation |
Yeni kişi oluşturuldu |
contact.propertyChange |
Kişi özelliği güncellendi |
contact.deletion |
Kişi silindi |
company.creation |
Yeni şirket oluşturuldu |
company.propertyChange |
Şirket özelliği güncellendi |
deal.creation |
Yeni anlaşma oluşturuldu |
deal.stageChange |
Anlaşma aşaması değiştirildi |
deal.propertyChange |
Anlaşma özelliği güncellendi |
ticket.creation |
Yeni destek talebi oluşturuldu |
ticket.propertyChange |
Destek talebi özelliği güncellendi |
Web Kancalarını İşleme
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);
// Web kancası imzasını doğrula
const isValid = verifyWebhookSignature(payload, signature, process.env.HUBSPOT_CLIENT_SECRET);
if (!isValid) {
console.error('Geçersiz web kancası imzası');
return res.status(401).send('Yetkisiz');
}
const events = req.body;
for (const event of events) {
console.log(`Olay: ${event.eventType}`);
console.log(`Nesne: ${event.objectType} - ${event.objectId}`);
console.log(`Özellik: ${event.propertyName}`);
console.log(`Değer: ${event.propertyValue}`);
// Uygun işleyiciye yönlendir
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('Tamam');
});
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')
);
}
Hız Sınırlandırması
Hız Sınırlarını Anlama
HubSpot, abonelik katmanına göre hız sınırları uygular:
| Katman | Saniyede İstek | Günde İstek |
|---|---|---|
| Ücretsiz/Başlangıç | 100 | 100.000 |
| Profesyonel | 200 | 500.000 |
| Kurumsal | 400 | 1.000.000 |
Sınır aşılırsa HTTP 429 (Çok Fazla İstek) hatası alırsınız.
Hız Sınırı Başlıkları
| Başlık | Açıklama |
|---|---|
X-HubSpot-RateLimit-Second-Limit |
Saniyedeki maksimum istek sayısı |
X-HubSpot-RateLimit-Second-Remaining |
Bu saniyede kalan istek sayısı |
X-HubSpot-RateLimit-Second-Reset |
Saniyelik sınırın sıfırlanmasına kalan saniye |
X-HubSpot-RateLimit-Daily-Limit |
Günde maksimum istek sayısı |
X-HubSpot-RateLimit-Daily-Remaining |
Bugün kalan istek sayısı |
X-HubSpot-RateLimit-Daily-Reset |
Günlük sınırın sıfırlanmasına kalan saniye |
Hız Sınırı İşlemesini Uygulama
Her istekte hız sınırı kontrollerini uygulayın:
const makeRateLimitedRequest = async (endpoint, options = {}, maxRetries = 3) => {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
const response = await hubspotRequest(endpoint, options);
// Hız sınırı bilgisini kaydet
const remaining = response.headers.get('X-HubSpot-RateLimit-Second-Remaining');
if (remaining < 10) {
console.warn(`Düşük hız sınırı kaldı: ${remaining}`);
}
return response;
} catch (error) {
if (error.message.includes('429') && attempt < maxRetries) {
const delay = Math.pow(2, attempt) * 1000;
console.log(`Hız sınırlandırıldı. ${delay}ms içinde tekrar deneniyor...`);
await new Promise(resolve => setTimeout(resolve, delay));
} else {
throw error;
}
}
}
};
// Hız sınırlayıcı sınıfı
class HubSpotRateLimiter {
constructor(requestsPerSecond = 90) { // Sınırın altında kal
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;
}
}
Üretim Dağıtım Kontrol Listesi
Canlıya çıkmadan önce aşağıdaki aksiyonları uygulayın:
- [ ] Özel uygulama veya OAuth 2.0 kimlik doğrulaması kullanın
- [ ] Belirteçleri güvenli şekilde saklayın (şifreli veritabanı)
- [ ] Otomatik belirteç yenilemeyi uygulayın
- [ ] Hız sınırı ve istek kuyruğu ekleyin
- [ ] Web kancası uç noktasını HTTPS ile sunun
- [ ] Kapsamlı hata işleme ekleyin
- [ ] Tüm API çağrıları için loglama yapın
- [ ] Hız sınırı kullanımını izleyin
- [ ] Yaygın sorunlar için çalışma kitabı oluşturun
Gerçek Dünya Kullanım Senaryoları
CRM Senkronizasyonu
Bir SaaS şirketi müşteri verilerini senkronize ediyor:
- Zorluk: Manuel veri girişi
- Çözüm: Web kancaları ve API ile gerçek zamanlı otomasyon
- Sonuç: Sıfır manuel giriş, %100 veri doğruluğu
Potansiyel Müşteri Yönlendirme
Bir pazarlama ajansı potansiyel müşteri dağıtımını otomatikleştiriyor:
- Zorluk: Yavaş yanıt süresi
- Çözüm: Web kancası tetiklemeli satış temsilcisine yönlendirme
- Sonuç: 5 dakikalık yanıt, %40 dönüşüm artışı
Sonuç
HubSpot API'si ile hızlı ve güvenli CRM entegrasyonları kurmak için:
- Çok kiracılı uygulamalar için OAuth 2.0, dahili entegrasyonlar için özel uygulamalar seçin.
- Hız sınırlarını ve istek başlıklarını dikkate alın.
- Web kancalarını gerçek zamanlı otomasyon için kurun.
- CRM nesneleri ve ilişkilerini kodla yönetin.
- Apidog ile uç noktalarınızı ve akışlarınızı kolayca test edin, ekibinizle işbirliği yapın.
Sıkça Sorulan Sorular Bölümü
HubSpot API'si ile nasıl kimlik doğrularım?
Çok kiracılı uygulamalar için OAuth 2.0'ı veya tek portal entegrasyonları için özel uygulamaları kullanın. API anahtarı kimlik doğrulaması kullanımdan kaldırıldı.
HubSpot hız limitleri nelerdir?
Hız limitleri saniyede 100 istekten (Ücretsiz) 400 isteğe (Kurumsal) kadar değişir; günlük limitler 100 bin ile 1 milyon istek arasında değişir.
HubSpot'ta nasıl kişi oluştururum?
E-posta, ad, soyad ve özel alanlar dahil olmak üzere /crm/v3/objects/contacts adresine POST isteği gönderin.
Özel özellikler oluşturabilir miyim?
Evet. Herhangi bir nesne tipi için Özellikler API'si ile özel alanlar oluşturabilirsiniz.
HubSpot'ta web kancaları nasıl çalışır?
Uygulama ayarlarında web kancalarını yapılandırın. HubSpot, belirlediğiniz olaylar tetiklendiğinde uç noktanıza POST isteği gönderir.
Top comments (0)