CRM integrations

Sync calls, chats, and contacts from Nerva to your CRM, and let agents look up and update records mid-conversation.

CRM integrations connect Nerva to the rest of your customer-facing stack. They do two things:

  1. Post-call sync — after every call or chat, push contact data, call summaries, transcripts, tags, and pipeline stages to your CRM.
  2. Mid-conversation tools — let your agent look up contacts, check availability, book appointments, and update records during the conversation.

Available providers

ProviderStatus
GoHighLevel✅ Available
Custom Webhook✅ Available — see Webhooks
HubSpot🚧 Coming soon
Salesforce🚧 Coming soon
Zoho CRM🚧 Coming soon
Google Calendar🚧 Coming soon
Calendly🚧 Coming soon
Zendesk🚧 Coming soon
Freshdesk🚧 Coming soon
Shopify🚧 Coming soon
Zapier🚧 Coming soon
Make🚧 Coming soon

If you need a CRM not listed, use the Custom Webhook integration to push events to any URL — Zapier, n8n, your own backend, etc.

How CRM integrations work

┌──────────────┐         ┌─────────┐
│ OAuth flow   │ tokens  │  Org    │
│ (one-time)   │ ──────▶ │  level  │
└──────────────┘         └─────────┘

                             │ attached per-agent

                       ┌──────────────┐
                       │ Agent        │ ← config: which capabilities,
                       │ Integration  │   which tools, sync events
                       └──────────────┘

              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
       Mid-call tools   Post-call sync   CRM activity card
       (lookup, book)   (contacts,       (per-call view of
                        notes, tags)      what synced)
  • Connect at the org level — OAuth once. Tokens stored encrypted, refreshed automatically when expired.
  • Attach per agent — each agent independently opts into the integration. The same integration can power multiple agents, each with its own config.
  • Capabilities are provider-driven — different CRMs have different feature sets. The UI hides what your CRM doesn't support.

GoHighLevel

Connect

Dashboard → Integrations → GoHighLevel → Connect.

You'll be redirected to GHL's OAuth consent screen. Approve, choose the location (sub-account) you want to connect, and you'll land back on Nerva with the integration installed.

Capabilities

CapabilityWhat it does
ContactsCreate or update contacts after each call/chat.
NotesAppend a note to the contact with the call summary (and optionally the full transcript).
TagsApply tags based on call outcome (e.g., qualified, dnc, escalated).
PipelineMove contacts between pipeline stages based on configurable rules.
CalendarLook up free slots on a configured calendar.
BookingBook appointments on the contact's behalf.
Workflows(Coming) Trigger GHL workflows from Nerva events.

Attach to an agent

Open any agent's Integrations tab and click Attach next to your GHL integration. You'll see config controls for that agent specifically:

  • Sync contacts after calls — toggle off if you only want mid-call tools, no post-call writes.
  • Include transcript in note — paste the full transcript into the GHL note. Off by default (notes can get long).
  • Pipeline mapping — pick which pipeline stage each call outcome maps to (successfulwon, unsuccessfullost, escalatedreview).
  • Tags — list of tags to apply on every call from this agent.
  • Tools — toggle individual mid-call tools on/off (lookup_contact, check_availability, book_appointment, get_pipelines).

Mid-call tools

When attached, your agent gets these tools available during conversations:

lookup_contact

Search GHL contacts by phone or email. Useful for personalized greetings ("Hi Sarah, calling about your previous inquiry?") and avoiding duplicate contact creation.

{
  "tool_name": "lookup_contact",
  "arguments": { "phone": "+1234567890" }
}

check_availability

List free slots on the calendar configured for this agent.

{
  "tool_name": "check_availability",
  "arguments": { "date_from": "2026-05-15", "date_to": "2026-05-22" }
}

book_appointment

Book a confirmed appointment for the captured contact on a configured calendar.

{
  "tool_name": "book_appointment",
  "arguments": { "slot_iso": "2026-05-15T14:00:00Z", "title": "Discovery call" }
}

get_pipelines

List opportunity pipelines for the connected location. Used during agent-prompt design to validate stage mappings.

Post-call sync

After every successful call, Nerva runs the configured post-call sync:

  1. Find or create contact — match on phone or email. If lookup_contact ran mid-call, the captured contactId is reused.
  2. Update contact attributesname, custom attributes captured by lookup_contact or extracted by analysis.
  3. Append a note — call summary + (optional) full transcript.
  4. Apply tags — configured tags + outcome tag.
  5. Update pipeline — move to the mapped stage.

Each sync step is independent — failures in one (e.g., tag application hits rate limit) don't block the others. Per-step success/failure is visible on the call detail page in the CRM Activity card.

Disconnecting

Dashboard → Integrations → GoHighLevel → Disconnect. Nerva attempts to revoke the OAuth tokens with GHL. Local agent attachments are removed; any in-flight syncs complete.

Custom Webhook

The Custom Webhook integration is a CRM-agnostic alternative — you receive the same data as a JSON POST and route it wherever. Pair with Zapier, Make, n8n, or your own backend to build any integration we don't natively support.

See Webhooks for the full guide.

Per-call activity

Open any call's detail page to see exactly what synced (and what didn't):

  • CRM Activity — events created, contact ID, links to the GHL contact, failures with error messages.
  • Webhook Activity — outbound webhook deliveries with status codes, retry counts, and errors.

This is the single best place to debug "did the data make it to my CRM?".

See also

On this page