← All posts
Integration

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.

Fuad Aliyev May 24, 20269 min readAzərbaycanca oxu: Azərbaycanca

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.

python
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
Note

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.