CRM API Integration — Lessons From Connecting Bitrix24, HubSpot and Zoho
After integrating with all three, here's the practical comparison — authentication quirks, rate limits, webhook reliability, and what to expect on real client projects.
I've shipped 8 integration projects across three CRMs this past year. Each has its own personality. This post is the stuff that's not in the marketing pages — what really happens with rate limits, where auth breaks, how reliable webhooks actually are.
Bitrix24 — cheap and powerful, but rough
Bitrix24 dominates the post-Soviet market — especially in Azerbaijan, Russia, Kazakhstan. The API is REST plus webhooks. Pluses: even the free plan exposes the API (with limits), inbound webhooks are dead simple (copy-paste a URL), docs are great in Russian and English.
Minuses: rate limits are murky and shift suddenly. The docs claim 50 req/sec, in practice it sometimes drops to 10. Custom fields are named UF_CRM_1234567890 — you can't hardcode those, always look them up by their label.
import httpx, time
BITRIX_URL = "https://yourcompany.bitrix24.com/rest/1/abc123xyz"
def b24(method: str, params: dict = None):
"""Rate-limit-aware Bitrix24 client"""
for attempt in range(5):
r = httpx.post(f"{BITRIX_URL}/{method}", json=params or {})
if r.status_code == 429:
time.sleep(2 ** attempt) # exponential backoff
continue
r.raise_for_status()
return r.json().get("result")
raise RuntimeError("Bitrix24 rate limit exceeded")
# Lead yarat
lead = b24("crm.lead.add", {
"fields": {
"TITLE": "Yeni lead",
"NAME": "Əli",
"LAST_NAME": "Məmmədov",
"PHONE": [{"VALUE": "+994501234567", "VALUE_TYPE": "WORK"}],
}
})HubSpot — most polished, most documented
HubSpot's API is genuinely developer-friendly. OAuth 2.0 done right, clear scopes, error messages written by humans. You test in a sandbox account, then promote to production. Rate limit: 110 req/10s, predictable and well-documented. Webhooks are extremely reliable — I've seen exactly one missed event in six months of production usage.
Downside: it's pricey. Marketing Hub Pro starts at $890/month. API access is in most tiers, but features like Custom Objects are Enterprise-only ($3,600+/month). If the client isn't already spending on HubSpot, integrating with it rarely justifies the cost.
Zoho — middle ground, mixed feelings
Zoho CRM is cheap ($20/user/month), the API is REST, OAuth 2.0 works. But the docs are a mess — same endpoint, three different doc pages for different API versions. The rate limit (250 calls/min) is generous, but there's also a concurrent-request limit (10 parallel) that's barely documented.
Webhooks mostly work but I've seen 5-10% missed events. For production Zoho integrations I always add a backup polling job — pulls updates from the last hour every 15 minutes as insurance against missed webhooks.
How I decide between them
- Client is in CEE/CIS, budget $50/month → Bitrix24
- Marketing-led, US/EU customers, has budget → HubSpot
- Sales-led, many users, mid budget → Zoho
- Client is already using one → just use it, don't switch
Rules that apply to all of them
- Use idempotency keys — so the same lead isn't created 5 times
- Acknowledge webhooks immediately, process async — or the retry storm hits
- Respect rate limits in code — never ignore a 429
- Encrypt API keys in the database — never plain text
- Keep an audit log — who changed what, when
- Test in a sandbox — debugging in production is a crime
On one HubSpot integration we assumed created_at was UTC. It returns some fields in local timezone. 200 leads were logged with wrong dates over 3 days before we caught it. Always verify timezone behaviour, never trust the docs alone.
If you need a CRM integration — wiring two systems together or building a workflow from scratch — drop me the use case and I'll come back with a scope and estimate.
Need help on a project?
If something in this post hits close to a project you're working on, let's hop on a 30-minute call — I'll come back with concrete advice.