Documentation ›Integrations and API

CRM integrations (Bitrix24 / HubSpot / Webhooks)

What it does.

Four ways to keep an external CRM in sync with SIPmind. Pick any combination — they all coexist.

  1. Native Bitrix24 / HubSpot — one-field setup (webhook URL / access token), leads push automatically as the AI captures them
  2. Native amoCRM — full OAuth2 integration with its own page (Integrations → amoCRM); see the dedicated amoCRM section below
  3. Outgoing webhooks (event bus) — POST every event you care about to any URL: Zapier, n8n, your custom endpoint
  4. Incoming webhook — accept leads INTO SIPmind from Tilda forms, Zapier, n8n, landing-page submissions

Native Bitrix24 integration.

Pushes leads (and optionally other events) into your Bitrix24 portal natively — no Zapier, no manual export.

Setup (60 seconds):

  1. In Bitrix24 → Settings → Developer resources → Other → Inbound webhook → Create webhook
  2. Grant scope: crm. Copy the URL (looks like https://your-portal.bitrix24.com/rest/1/abc123def/)
  3. In Settings → Bitrix24 paste the URL → Save

No OAuth, no marketplace listing — the URL itself is the auth. Each new lead automatically creates a Bitrix Lead with PHONE / EMAIL / SOURCE_DESCRIPTION fields populated. If you want to also push appointment.created / lead.stage_changed events, enable them via the outgoing webhook (see below) — Bitrix has a separate "Inbound webhook reception" handler for that.

Native HubSpot integration.

Each new lead becomes a HubSpot Contact (Leads object is Enterprise-tier only; Contacts work on every plan).

Setup:

  1. HubSpot → Settings → Account Setup → Integrations → Private Apps → Create app
  2. Required scope: crm.objects.contacts.write. Copy the access token (pat-na1-...)
  3. In Settings → HubSpot paste the token → Save

If a contact with the same email already exists, HubSpot returns 409 — we treat that as success (the contact IS in HubSpot, just not freshly created). Phone / name updates flow through normally on future calls.

Outgoing webhooks (event bus to anything).

POST every meaningful event to a URL you control — Zapier, n8n, your custom CRM, anywhere. 11 event types available:

  • lead.created — a lead is saved, by the agent, a form, the API or a person
  • lead.stage_changed — a lead moves on its pipeline
  • contact.created / contact.updated — a new person, or a new name, phone, email, field or owner
  • call.ended — a phone or WhatsApp call the agent took has ended
  • appointment.created / appointment.cancelled — a visit is booked or cancelled, by the agent or in the calendar
  • task.created / task.completed — a task is set or done
  • contact.merged / lead.merged — two records of one person became one; the data names the one that stays and the one that is gone

Setup:

  1. In Settings set Lead Webhook URL + (optional) Webhook Secret
  2. By default only lead.created fires (backward compat). To receive the rest, subscribe through the API: PUT /api/v1/events/subscription with {"events": ["lead.created", "call.ended", "task.completed"]} — GET the same path to see everything available. What each event carries is listed on the developer page. The signing secret can be set there too, and is never returned

Payload shape:

POST {your URL}
Content-Type: application/json
X-SIPmind-Event: lead.created
X-SIPmind-Signature: sha256=<hmac>   (if secret set)

{
  "event": "lead.created",
  "tenant_id": "...",
  "occurred_at": "2026-05-14T10:30:00+00:00",
  "data": {
    "lead_id": "...",
    "name": "John Smith",
    "phone": "+12345678900",
    "email": "[email protected]",
    "source": "whatsapp"
  }
}

Retry policy: 3 attempts with exponential backoff (1s / 4s / 16s) on 5xx + network errors. 4xx is terminal (your URL is misconfigured — retrying just spams). Fire-and-forget — never blocks the customer-facing conversation.

Incoming webhook (accept leads FROM external systems).

Generate a public URL → POST JSON with phone / email / name to it → SIPmind creates a contact + lead automatically. Useful for: Tilda forms, Zapier outputs, n8n flows, landing-page custom forms.

Setup:

  1. In Settings → Incoming webhook press Generate URL
  2. Copy the URL: https://sipmind.net/api/v1/incoming/{tenant_id}/{token}
  3. Paste into Tilda's webhook destination / Zapier's POST action / n8n HTTP node

Permissive parser — accepts these shapes:

{ "name": "John", "phone": "+1...", "email": "[email protected]" }              ← top-level
{ "Name": "John", "Phone": "+1..." }                                   ← any case
{ "data": { "phone": "+1...", "email": "[email protected]" } }                   ← Tilda
{ "fields": { "firstname": "Alice", "phone": "+1..." } }               ← Zapier
{ "form": { "tel": "+1...", "comment": "interested in X" } }           ← n8n

Security: Token IS the auth — unknown tokens return 404 (no probe signal). Rotate the token immediately if it leaks; old URL stops working instantly.

Body must have at least phone OR email — otherwise 400. Name / message / notes optional. Lead source is set to incoming_webhook so you can filter it in the dashboard.