A CRM integration in NimbusOS is two things. First, it is a source of contact and company records that can feed campaigns. Second, it is a destination where engagement events, reply classifications, and pipeline attribution are written back. HubSpot and Salesforce are the primary integrations with deep bidirectional sync. Outreach and Salesloft are supported as well, usually for cross-team attribution. This article covers setup for each, the sync model, conflict resolution, and the patterns that work reliably at agency scale.
HubSpot
HubSpot is the most common CRM integration. The setup is OAuth-based and covers contact, company, deal, and timeline event sync.
Setup
Open Integrations, click Connect HubSpot. OAuth consent screen asks for:
- Contacts read and write
- Companies read and write
- Deals read (read-only for attribution; write on request)
- Timeline events write (to log NimbusOS activities)
On consent, NimbusOS stores the refresh token encrypted. Access tokens refresh automatically every hour.
Contact sync
Contact sync is bidirectional with configurable precedence.
NimbusOS pulls contacts from a configurable HubSpot list or saved view. The first pull is a full backfill; subsequent pulls are delta based on hs_lastmodifieddate.
NimbusOS pushes contact updates back to HubSpot on:
- New contact created in NimbusOS (if enabled)
- Lead score change
- ICP tier assignment
- Sequence enrollment
- Reply intent classification
- Meeting booked
Field mapping is configured in the integration settings. Standard fields map automatically (email, first name, last name, title). Custom HubSpot properties map to NimbusOS custom fields by name, with manual override.
Conflict resolution
When the same contact is edited in both systems between syncs, the default resolution is "last write wins" based on the most recent update timestamp. You can change this to "HubSpot wins" or "NimbusOS wins" in the integration settings.
For critical fields (email address), conflicts are flagged for human review rather than auto-resolved.
Timeline event writing
NimbusOS writes timeline events to HubSpot contact records. Event types:
- Email sent
- Email opened
- Email clicked
- Email replied (with reply intent category)
- Sequence enrolled
- Meeting booked (when reply intelligence detects a meeting request)
Events are batched and flushed every 5 minutes. Timeline writes do not consume HubSpot API rate limit in the same way as property updates; the batching is still respectful.
Deal attribution
Deals are pulled read-only by default. NimbusOS reads deal stage transitions and associates them with the contacts in the deal. This drives the revenue attribution view in analytics.
Deal write-back is available on request. Agencies that want NimbusOS to create deals based on reply classifications can opt in.
Salesforce
Salesforce integration is similar in capability but different in setup. It uses OAuth with a connected app you configure in your Salesforce org.
Setup
Create a connected app in Salesforce Setup. Configure the OAuth scopes: api, refresh_token. Use the callback URL NimbusOS provides.
In Integrations, paste the connected app client ID and secret, then authorize. The OAuth dance completes and the integration activates.
Custom domains: if your Salesforce org uses a custom domain (My Domain), NimbusOS supports it; configure the domain URL during setup.
Object mapping
Salesforce Lead and Contact objects both map to NimbusOS Contact. Account maps to Company.
The Lead vs Contact distinction is maintained with a salesforce_object_type field on each synced contact. Lead conversions in Salesforce automatically re-sync to NimbusOS as a Contact.
Custom fields on Salesforce objects map to NimbusOS custom fields. The field mapper supports all Salesforce field types.
Salesforce governor limits
Salesforce enforces strict API limits. NimbusOS respects them: the default sync cadence is 15 minutes, well under most orgs' daily API call ceilings.
For orgs with very high contact volume, the bulk API path is used for backfills and large syncs. Bulk API operations do not count against the same daily rate limit.
Outreach and Salesloft
Outreach and Salesloft are cadence platforms often used by SDR teams. NimbusOS integration is primarily one-way: NimbusOS sends attribution data to the cadence platform so team performance is measurable there.
Common use case: NimbusOS runs the initial cold outreach; positive replies are converted into Outreach cadences for SDR handoff. The conversion is automated via the automation engine.
Setup is API key based. Paste the Outreach or Salesloft API key in Integrations.
Field Mapping Defaults
Standard NimbusOS-to-CRM field mappings:
| NimbusOS field | HubSpot property | Salesforce field | | -------------- | ---------------- | ---------------- | | email | email | Email | | first_name | firstname | FirstName | | last_name | lastname | LastName | | title | jobtitle | Title | | phone | phone | Phone | | mobile | mobilephone | MobilePhone | | linkedin_url | hs_linkedin_url | LinkedIn_URL__c | | lead_score | nimbus_lead_score | Nimbus_Lead_Score__c | | icp_tier | nimbus_icp_tier | Nimbus_ICP_Tier__c |
Custom fields prefixed with nimbus_ in HubSpot and __c suffix in Salesforce. The platform creates these custom properties on first sync if they do not exist.
Sync Direction Matrix
| Field | Direction | Precedence | | ----- | --------- | ---------- | | email | Bidirectional | Immutable after create | | Core contact fields | Bidirectional | Last write wins | | lead_score | NimbusOS to CRM | NimbusOS | | icp_tier | NimbusOS to CRM | NimbusOS | | Sequence enrollment | NimbusOS to CRM | NimbusOS | | Reply intent | NimbusOS to CRM | NimbusOS | | Deal stage | CRM to NimbusOS | CRM | | Account data | Bidirectional | Last write wins |
The precedence column says which side is authoritative on conflicts.
Activity Timeline
Both HubSpot and Salesforce show NimbusOS activities in the contact's timeline. Activity types:
- Sent email from campaign X, step Y
- Opened email from campaign X, step Y
- Replied to campaign X (intent: interested)
- Paused sequence due to reply
- Added to suppression list
Activities carry links back to the NimbusOS contact and campaign pages, so sales reps can drill in from the CRM without context switching.
Bulk Operations
For large syncs (initial backfill of 100,000+ contacts), the integration uses the CRM's bulk API path. Progress is visible in the integration detail page.
A bulk backfill of 100k HubSpot contacts typically takes 30 to 60 minutes. A Salesforce bulk backfill at the same scale takes 45 to 90 minutes.
Error Handling
Three error modes and how the platform handles them.
Transient errors (5xx, rate limits). Retry with exponential backoff. Most resolve within minutes.
Permanent errors (4xx on specific records). Log the record, skip, continue. Dashboard shows failed records for review.
Integration-wide errors (auth expired, account suspended). Pause the integration, fire an alert. Human re-authentication or provider support required.
The Integration Health page shows recent errors with full context.
Privacy and PII
CRM sync involves PII. Three protections.
Field-level consent. Mark sensitive fields (for example, phone numbers under EU GDPR) to require explicit consent before sync. The consent record is stored on the contact.
Regional routing. EU-origin contacts can be routed to EU-region NimbusOS infrastructure for data residency. Contact support for regional setup.
Deletion propagation. GDPR deletion requests in NimbusOS propagate to the connected CRMs automatically.
Troubleshooting
"Contacts synced but properties are blank"
Field mapping is incomplete. Open the integration detail, review the mapping, and add the missing fields.
"Activity timeline is empty in HubSpot"
The timeline.write scope was not granted during OAuth. Disconnect and reconnect, consenting to the timeline scope.
"Salesforce sync hit governor limit"
The org is at 80 percent of daily API limit. Slow the sync cadence from 15 minutes to 30 or 60 minutes. Or request the platform use the Salesforce bulk API path for the ongoing sync.
"Deal attribution shows zero revenue"
Deal write-back is disabled and deals are not being read. Check integration settings to verify deal read access is on. Also verify deal stage names match between NimbusOS and the CRM.
Frequently Asked Questions
Can I sync to two CRMs simultaneously?
Yes. Both CRMs are active; NimbusOS syncs to each independently. Conflict resolution is per CRM per field, so the two CRMs can have slightly different views.
Does the integration sync contact opt-out status?
Yes. Unsubscribes propagate to the CRM's communication preferences. Re-opting a contact in the CRM does not un-suppress in NimbusOS; that requires explicit action.
Can I map a NimbusOS custom field to a specific CRM picklist value?
Yes. The field mapper supports value translation, so a NimbusOS icp_tier of "A" can map to a Salesforce picklist of "Tier 1 - Enterprise".
How do I handle duplicate contacts in the CRM?
HubSpot and Salesforce both have their own dedup logic. NimbusOS sync respects their canonical records. If the CRM merges two contacts, the sync reflects the merge on the next pull.
What to Read Next
Useful next pages after this one: Integration Overview for the full integration landscape, Outreach Tools for connecting ReachInbox, Smartlead, and Instantly, and Webhooks for real-time CRM event pushing.