Integrations
CRM connects to other products in The One Stack to create a seamless workflow from prospect to paying client. All integrations use the Bus event mesh or direct API calls with X-Integration-Key authentication.
CRM + PSA
The PSA integration is bidirectional — CRM pushes sales context to PSA, and PSA events flow back to CRM.
CRM → PSA
| Action | What Happens |
|---|---|
| Company-to-client promotion | When you promote a CRM company to a PSA client, the company, contacts, and contract details sync automatically |
| Deal-to-project creation | A closed-won deal can trigger project creation in PSA |
| Pipeline context | PSA can display CRM pipeline data in a client sidebar widget |
| Activity feed | PSA can pull CRM activity history for a company |
| Health score | Company health scores from CRM are visible in PSA |
| Quick quotes | PSA users can create a CRM quote directly from the "Add Service" flow |
| E-Sign addendums | Contract changes in PSA can trigger an e-sign addendum in CRM |
PSA → CRM
| Event | What Happens in CRM |
|---|---|
| Contract signed | Opportunity auto-closes as Won |
| Client status change | Company status updates (e.g., churned) |
| Support satisfaction | CSAT scores feed into company health scoring |
| Ticket activity | Visible in the company activity timeline |
CRM_INTEGRATION_KEY and PSA_API_URL configured in both products. Contact your admin to verify the integration keys are set.CRM + Books
When a deal closes, billing setup flows to Books:
| Action | What Happens |
|---|---|
| Deal closes as Won | Client billing setup can be initiated in Books |
| Contract value | Deal value and recurring revenue sync to Books for invoicing |
| Revenue dashboard | Combined revenue data from CRM deals and Books invoices |
| Service mappings | CRM deal line items map to Books GL accounts |
This ensures the financial side of a sale is handled without re-entering data.
CRM + Hub
Hub provides the identity layer for CRM:
| Capability | How It Works |
|---|---|
| User identity | CRM users authenticate through Hub SSO |
| Deal ownership | Deal owners map to Hub user accounts |
| Permissions | Product-level and granular permissions come from Hub |
| Org roles | Hub roles (Owner, Admin, Member, Viewer) determine CRM access level |
| Waffle menu | Users navigate to CRM from the Hub product switcher |
| Jarvis AI | Cross-product AI assistant can query CRM data |
CRM + Voice
The Voice integration adds phone capabilities to CRM:
| Feature | Description |
|---|---|
| Call logging | Inbound and outbound calls via Voice are automatically logged to the contact's activity timeline |
| Call duration | Duration is captured from the Voice system |
| Call recording | If recording is enabled in Voice, the recording link appears in the CRM activity entry |
| Inbound routing | Incoming calls can be matched to CRM contacts by phone number |
CRM + Portal
Client portals bridge CRM and your clients:
| Feature | Description |
|---|---|
| White-labeled access | Clients log in to a branded portal to see their CRM data |
| Feature toggles | Control which CRM features are visible per portal (pipeline, marketing, e-sign, etc.) |
| Quote sharing | Quotes and proposals can be shared via the portal |
| E-Sign | Clients can sign documents through the portal |
| Custom domains | Each portal can have its own domain (e.g., clients.yourmsp.com) |
CRM + M365 Email
Microsoft 365 email sync runs bidirectionally:
| Direction | What Syncs |
|---|---|
| M365 → CRM | Emails from your inbox and sent items are matched to CRM contacts by email address and logged to activity timelines |
| CRM → M365 | Emails sent from CRM sequences and campaigns are delivered via your connected mailbox |
The sync runs every 5 minutes using Microsoft Graph delta queries (incremental — only new/changed messages). Auto-matching uses email address for contacts and email domain for companies. Free email domains (Gmail, Yahoo, Hotmail, etc.) are excluded from company matching.
Integration Architecture
All integrations between products use one of two patterns:
- Bus events — Asynchronous, event-driven communication for state changes (e.g., "deal closed," "contract signed"). The Bus SDK publishes events that subscribing products consume.
- Direct API calls — Synchronous requests using
X-Integration-Keyheader authentication for real-time data (e.g., PSA fetching pipeline context for a sidebar widget).
Both patterns maintain tenant isolation — integration keys are scoped per organization.
Next Steps
- Getting Started — Initial setup including email sync
- Deal Tracking — How deals trigger integration events
- Company Management — Company-to-client promotion workflow
- Troubleshooting — Common integration issues