Pick the right depth of integration
Most vendor pages will tell you they 'integrate with HubSpot.' Four very different things hide under that label. From best to worst:
- 01Native integration: built and maintained by the vendor, with field mapping in their UI, dedup built in, retry logic, and call recording attached to the record. Pick this when it exists.
- 02Webhook + connector (n8n / Make / Zapier): vendor fires a webhook, you wire it via a connector to your CRM. More flexible, more setup, you own the retry logic.
- 03Zapier-only: works at low volume, burns tasks, no two-way features. Treat as a stopgap.
- 04Email summary: an email lands in your inbox after the call. Someone re-keys into the CRM. Defeats most of the automation value.
Field mapping: get the schema right before launch
Don't dump everything into the default 'Notes' field. Each AI-captured field should map to a structured CRM field — either a built-in one (Phone, Email, Source, Industry) or a custom one (Project Type, Budget Range, Urgency).
Required fields
- Caller name + phone + email (Contact-level)
- Source = 'AI receptionist' (or similar) so you can segment lead reporting later
- Call timestamp + recording URL + transcript URL (as activity attachments)
- Intent / qualification answers (one custom property per question)
Optional but recommended
- Sentiment score (some vendors compute this) — useful for prioritization
- Disposition (booked, escalated, info-only) — useful for funnel reporting
- Caller's stated urgency — used by some teams to auto-assign rep priority
Deduplication: the silent destroyer of CRM hygiene
The single most common integration failure: every call creates a new contact, regardless of whether that caller already exists. By month 3 you have 200 duplicates, your sales reps are calling the same customer twice, and someone blames the AI when the AI did exactly what you asked it to.
Lookup rules (in priority order)
- 01Match by phone number first (most reliable; the AI always has it)
- 02Fall back to email if no phone match (less reliable; the AI may not always have it)
- 03Fall back to name + zip if neither matches (rare; usually means a new lead anyway)
If a match exists, update the existing contact + log the call as an activity. Do NOT create a new contact. Most native integrations handle this; webhook setups need you to write the lookup logic explicitly.
Booking integration: book on the call, not after
The whole point of integrating a calendar is to close the appointment before the caller hangs up. If your integration texts a booking link and asks the caller to click it later, you've recreated voicemail with extra steps.
Real-time availability lookup
The AI should query the calendar's availability API during the call, find slots that match the requested service type, and offer 2–3 options. Native integrations with Google Calendar, Outlook 365, Calendly, Acuity all support this.
Service-type to duration mapping
A consult and a full service take different time blocks. The AI needs to know which service type to map each call request to so it books the right-length slot. Vendors that 'book' generically end up creating overlapping appointments.
Conflict prevention
Bi-directional sync matters here. If the AI books a 2pm slot at the same instant a customer books 2pm directly in Calendly, one of those will collide. Vendors with real-time sync handle this; lazy-sync setups don't.
Error handling: what happens when the API is down
The CRM will go down. The calendar will go down. The connector will hit a rate limit. Plan the failure mode upfront so you're not losing leads when it happens.
Retry with exponential backoff
Most vendors with native integrations retry failed pushes 3–5 times over a few minutes. Connectors like n8n and Make let you build retry logic. Zapier's retry behavior is more limited; check the docs.
Fallback queue
If retries exhaust, the AI should fall back to logging the call to an internal queue (email, Slack, an internal database) so the lead isn't silently dropped. Most native integrations do this; some webhook setups don't.
End-to-end test plan
Before cut-over, run 10–15 real-feeling test calls and verify each one lands cleanly in the CRM:
- 01Net-new caller with full info → new Contact created with all custom fields populated
- 02Net-new caller with partial info → new Contact with required fields populated, optional fields left null (not garbage)
- 03Existing caller (by phone) → existing Contact updated + call logged as activity
- 04Existing caller (by email) → existing Contact updated (not duplicate)
- 05Booking call → calendar event created with right duration, right organizer, right reminders
- 06Reschedule call → existing event modified, not deleted-and-recreated
- 07Cancellation call → event cancelled, customer notified per your settings
- 08AI-escalated call → activity logged with escalation reason
- 09Spanish-language call → fields populated correctly in the right language
- 10Call where CRM API was down (simulate) → lead landed in fallback queue
Checklist
The version you can copy.
Integration depth chosen (native / webhook / Zapier / email)
Custom fields created in CRM (intent, qualification answers, source)
Field mapping configured in vendor's UI
Dedup rules wired (phone first, email fallback)
Calendar integration tested for real-time availability
Service-type to duration mapping configured
Retry + fallback queue wired for API failures
10 end-to-end test calls passed
Runbook documented for ops team