Wozena Docs
Integrations

CRM Integration

Connect HubSpot or GoHighLevel to sync contacts, push call data, and automate your sales pipeline.

Wozena integrates directly with your CRM so you can import contacts for campaigns, push call outcomes back after every call, and keep your sales pipeline updated automatically.

Supported CRM platforms

  • HubSpot — OAuth 2.0 connection
  • GoHighLevel (GHL) — OAuth 2.0 or API key

Coming soon: Salesforce, Pipedrive, Zoho CRM, Close


What the CRM Integration Does

FeatureDescription
Contact syncPull contacts from CRM lists into Wozena for campaigns
Field mappingMap CRM fields to Wozena contact fields (name, phone, email, company, custom fields)
Call data pushAfter every call, push a call note to the CRM contact with summary, outcome, duration, and sentiment
Field updatesPush Wozena contact field changes back to CRM properties
Scheduled re-syncAutomatically re-import contacts on a schedule (15 min to 24 hours)
DNC propagationDo-Not-Call status syncs both ways between Wozena and your CRM
PCA → CRM pushPush AI-extracted call analysis data (interest level, budget, etc.) directly to CRM fields
Deal automationCreate deals/opportunities in CRM via automation rules

Connecting Your CRM

Go to Integrations in the sidebar (under Operations). You'll see the CRM Platforms section with HubSpot and GoHighLevel cards.

Click "Connect with OAuth"

Click the Connect with OAuth button on your CRM provider. You'll be redirected to the CRM's authorization screen.

GoHighLevel API Key option

If you prefer to use an API key instead of OAuth for GoHighLevel, click the API Key button and paste your GHL API key. OAuth is recommended for a smoother experience.

Authorize Wozena

On the CRM's consent screen, review the permissions and click Authorize or Allow. Wozena requests access to:

HubSpot permissions:

  • Read and write contacts
  • Read contact lists
  • Read contact field schemas
  • Read and write deals
  • Create timeline events (call notes)

GoHighLevel permissions:

  • Read and write contacts
  • Read and write opportunities
  • Read location info

Setup Wizard Launches

After authorization, you'll be redirected back to Wozena and the CRM Setup Wizard will launch automatically. This 4-step wizard configures everything.


Setup Wizard

The setup wizard walks you through 4 steps to configure your CRM integration.

Step 1: Select Contact Lists

Choose which contacts to import from your CRM.

  • All Contacts — Import every contact from your CRM
  • Specific lists — Select individual lists, tags, or segments. Use the search bar to filter if you have many lists.

You must select at least one list or "All Contacts" to proceed.

Large imports

Importing thousands of contacts happens in the background. You'll receive a notification when the import completes. During import, you can continue using Wozena normally.

Step 2: Map Fields (Pull)

Configure how CRM fields translate to Wozena contact fields when importing.

Default mappings are pre-filled:

CRM Field (HubSpot)CRM Field (GHL)Wozena Field
firstnamefirstNameName
phonephonePhone Number
emailemailEmail
companycompanyNameCompany

Adding custom mappings:

  1. Click "Add custom mapping" at the bottom
  2. Select a CRM field from the searchable dropdown (search to filter through 100+ fields)
  3. Select the target Wozena field, or click "+ Create custom field" to create a new Wozena custom field from the CRM field name

Custom fields

When you create a custom field from the wizard, it's automatically added to your Wozena custom field definitions. You can manage these later in Settings → Custom Fields.

Step 3: Push Settings

Configure what happens after every call — what data gets pushed back to your CRM.

Auto-push toggle: Enable to automatically push call data to CRM after every call. Disabled by default — you must explicitly opt in.

Data to push (when auto-push is on):

FieldDefaultDescription
Call Summary✅ OnAI-generated summary of the conversation
Outcome✅ OnHow the call ended (answered, voicemail, no answer, etc.)
Duration✅ OnCall length in seconds
Sentiment✅ OnCaller sentiment (Positive / Neutral / Negative)
Transcript❌ OffFull conversation transcript — opt-in for compliance
Recording URL❌ OffLink to call recording audio — opt-in for compliance

Compliance note

Transcript and Recording URL are disabled by default because they contain sensitive conversation data. Enable them only if your organization's compliance policies allow sharing call recordings with your CRM provider.

Sync interval: How often Wozena re-imports contacts from your CRM to catch new additions or changes.

IntervalBest for
Every 15 minActive sales teams needing near-real-time sync
Every 30 minGood balance of freshness and API usage
Every hour (default)Most teams — catches daily changes efficiently
Every 6 hoursLow-volume teams
Every 24 hoursMinimal sync, lowest API usage

Step 4: Review & Start Import

Review your configuration:

  • Lists selected (with estimated contact count)
  • Pull field mappings
  • Push settings and sync interval

Click "Start Import" to begin importing contacts in the background. You'll receive a notification when the import completes.


After Setup

Integrations Page

After connecting, your CRM card on the Integrations page shows:

  • Connected status with a green indicator
  • Settings button — expand to view sync summary and adjust push settings
  • Sync Now button — trigger an immediate re-sync of contacts
  • Edit setup link — re-launch the setup wizard to modify field mappings
  • Disconnect button — remove the CRM connection (imported contacts remain in Wozena)

Imported Contacts

Contacts imported from your CRM appear in the Contacts page with a colored badge:

  • 🟠 HubSpot badge for HubSpot-imported contacts
  • 🟢 GHL badge for GoHighLevel-imported contacts

Each imported contact retains a link to their CRM record, enabling push-back after calls.


Using CRM Contacts in Campaigns

When creating a new campaign, the Contacts step has three tabs:

TabDescription
Upload CSVUpload a CSV file with phone numbers
Select from ContactsPick from your existing Wozena contacts
Import from CRMUse contacts imported from your CRM

Import from CRM tab

If you have previously imported CRM contacts, you'll see a card:

"X HubSpot contacts ready" Previously imported from your CRM and available to use. [Use these contacts]

Click "Use these contacts" to select all CRM-imported contacts for the campaign. You can also import fresh contacts from CRM lists below.

Dynamic Variable Mapping

If your agent uses dynamic variables (like {{first_name}}, {{company}}, {{appointment_date}}), the campaign wizard automatically detects matching contact fields:

  • {{name}}, {{first_name}} → Contact name
  • {{email}} → Contact email
  • {{company}} → Contact company
  • {{budget}} → Custom field "budget"
  • {{agent_name}} → Not mapped (uses default from flow)

Variables that match contact fields show an "auto" badge. Unmatched variables use their default values defined in the flow editor.


Post-Call Data Flow

After every call ends, this pipeline runs automatically:

AI Analysis

The AI analyzes the conversation and extracts structured data: summary, sentiment, call outcome, and any custom PCA fields you've configured on the agent.

Contact Enrichment

Extracted data is written to the Wozena contact record based on your agent's PCA → Contact mapping (configured in Agent Settings → Post-Call Analysis → Contact Enrichment).

Disposition Update

The contact's disposition is automatically updated based on the call outcome and sentiment:

  • High interest → Qualified
  • Medium interest → Interested
  • Appointment booked → Qualified
  • Not interested → Not Interested
  • DNC requested → Do Not Call

CRM Push (if enabled)

If auto-push is enabled on your CRM connection:

  1. Call note created on the CRM contact with summary, outcome, duration, sentiment (and optionally transcript/recording)
  2. Contact fields updated in CRM based on your push field mappings
  3. PCA data pushed to CRM fields based on per-agent PCA → CRM mappings

This happens within seconds of the call ending.


PCA → CRM Field Mapping (Per Agent)

Different agents extract different data. A lead qualification agent might extract budget and interest_level, while an appointment booking agent extracts appointment_date and preferred_time.

To map these agent-specific fields to CRM properties:

Go to Agents → click on your agent → Settings → scroll to Post-Call Analysis

Click "Contact Enrichment Mapping"

For each PCA field, you'll see three columns:

PCA Field→ Contact Field→ CRM Field (optional)
budgetcf:budgeths_budget
interest_levelcf:interest_levelhs_lead_status
appointment_datecf:appointment— (skip)

The CRM field column only appears when you have an active CRM connection. Select the CRM property to push each value to after calls.

Click Save — future calls with this agent will push the mapped PCA data to the corresponding CRM fields.

Why per-agent?

PCA → CRM mapping is configured per agent (not globally) because each agent extracts different data. Agent A might extract "budget" while Agent B extracts "appointment_type" — each needs its own CRM field mapping.


CRM Automation Actions

The automation engine includes three CRM-specific actions you can use in rules:

ActionWhat it doesExample rule
Create CRM DealCreates a deal/opportunity in your CRM pipeline linked to the contact"When disposition changes to Qualified → Create deal in Sales pipeline at stage Negotiation"
Update Deal StageMoves an existing CRM deal to a different pipeline stage"When disposition changes to Customer → Move deal to Closed Won"
Push CRM NoteAdds a custom note to the CRM contact"When tag 'vip' is added → Push note 'VIP contact flagged by agent'"

To create a CRM automation rule:

  1. Go to AutomationsNew Rule
  2. Choose a trigger (e.g., disposition_changed, call_completed, tag_added)
  3. Add conditions if needed (e.g., "interest level is high")
  4. Select one of the CRM actions above
  5. Configure the action (pipeline, stage, note template)
  6. Save and enable the rule

DNC (Do Not Call) Sync

Do-Not-Call status syncs bidirectionally between Wozena and your CRM:

DirectionWhenWhat happens
CRM → WozenaOn every contact syncIf a contact is marked as opted-out or DNC in your CRM, they are marked do_not_call = true in Wozena. They will be excluded from campaigns.
Wozena → CRMAfter every callIf the AI detects a DNC request during a call (via PCA do_not_call_requested field), or if you manually toggle DNC, the opt-out status is pushed to the CRM contact.

The rule is strictest wins — if either system marks a contact as DNC, they remain DNC in both systems.


Disconnecting

To disconnect your CRM:

  1. Go to Integrations → find your connected CRM
  2. Click the disconnect button (unlink icon)
  3. Confirm the disconnection

What happens when you disconnect:

  • ✅ Imported contacts remain in Wozena — they're your data
  • ✅ CRM badges stay on contacts for reference
  • ✅ Field mappings are preserved (in case you reconnect)
  • ❌ Auto-push stops — call data is no longer sent to CRM
  • ❌ Scheduled re-sync stops
  • ❌ CRM automation actions will fail (rules using CRM actions should be disabled)

You can reconnect at any time — the setup wizard will re-launch to configure the new connection.


Troubleshooting

"No CRM lists found"

Your CRM may not have any lists or tags configured. Try selecting "All Contacts" in the setup wizard instead.

Token expired / Connection error

HubSpot tokens expire every 30 minutes. Wozena automatically refreshes tokens before making API calls. If you see repeated token errors:

  1. Disconnect the CRM
  2. Reconnect via OAuth
  3. Re-run the setup wizard

Contacts showing as "Unknown"

Check your field mappings — make sure firstname (HubSpot) or firstName (GHL) is mapped to the Wozena Name field. Re-run the setup wizard and verify Step 2.

Call data not pushing to CRM

Verify:

  1. Auto-push is enabled — Integrations → Settings → check the auto-push toggle
  2. Contact is CRM-linked — The contact must have been imported from CRM (has the HubSpot/GHL badge)
  3. Connection is active — Check the connection status on the Integrations page

Import takes too long

Large imports (10,000+ contacts) run in the background via our job queue. You'll receive a notification when complete. Check the notification bell for status.


Security & Compliance

AspectDetails
Credential storageOAuth tokens and API keys are encrypted with AES-256-GCM at rest
Token refreshAutomatic — HubSpot tokens refresh every 30 minutes, GHL every 24 hours
Data sharingOpt-in only — auto-push is off by default. Transcript and recording push require explicit opt-in
Audit trailEvery sync operation is logged with fields sent, direction, status, and timestamp
DNC complianceBidirectional DNC sync ensures opted-out contacts are never called

What's Next?

On this page