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:
- Post-call sync — after every call or chat, push contact data, call summaries, transcripts, tags, and pipeline stages to your CRM.
- Mid-conversation tools — let your agent look up contacts, check availability, book appointments, and update records during the conversation.
Available providers
| Provider | Status |
|---|---|
| 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
- 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
| Capability | What it does |
|---|---|
| Contacts | Create or update contacts after each call/chat. |
| Notes | Append a note to the contact with the call summary (and optionally the full transcript). |
| Tags | Apply tags based on call outcome (e.g., qualified, dnc, escalated). |
| Pipeline | Move contacts between pipeline stages based on configurable rules. |
| Calendar | Look up free slots on a configured calendar. |
| Booking | Book 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 (
successful→won,unsuccessful→lost,escalated→review). - 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.
check_availability
List free slots on the calendar configured for this agent.
book_appointment
Book a confirmed appointment for the captured contact on a configured calendar.
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:
- Find or create contact — match on
phoneoremail. Iflookup_contactran mid-call, the capturedcontactIdis reused. - Update contact attributes —
name, custom attributes captured bylookup_contactor extracted by analysis. - Append a note — call summary + (optional) full transcript.
- Apply tags — configured tags + outcome tag.
- 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
- Webhooks — for any CRM not on the list above
- Voice agents — voice agents with CRM integration
- Chat agents — chat agents with CRM integration