Skip to main content

CRM Integration

Atrium integrates with CRM systems to sync visitor data bidirectionally: looking up contacts during pre-registration and logging completed visits back to the CRM.

CRM integration is a premium feature — it requires the crm_integration entitlement in your license tier.

What CRM integration does

At pre-registration (contact lookup): When a host enters a visitor's email address during pre-registration, Atrium can look up the contact in your CRM. If found, the visitor's name, company, and other profile data are pre-filled from the CRM record. This reduces data entry and ensures visitor records match your CRM data.

After check-out (visit logging): When a visit completes, Atrium can log the visit in the CRM — creating an activity/note on the contact's record with visit details (date, host, site, purpose). This gives your sales and account management teams visibility into customer visits.

Adapter pattern

CRM integration uses an adapter pattern: a common interface with concrete implementations per CRM system. All adapters implement the same operations (contact lookup, contact create/update, visit logging), but the underlying API calls are vendor-specific.

This means:

  • Adding a new CRM requires only a new adapter implementation — no changes to the visitor lifecycle.
  • CRM unavailability never blocks check-in. CRM operations are asynchronous (event-driven) — if the CRM is down, events are retried.
  • Each adapter handles the CRM's specific authentication, rate limits, and data model.

Supported CRM systems

CRMAdapterStatus
SalesforcesalesforcePlanned
HubSpothubspotPlanned
Dynamics 365dynamics365Planned
Generic WebhookwebhookPlanned

Configuration

CRM integration is configured per tenant:

  1. Navigate to Settings → Integrations → CRM.
  2. Select your CRM provider.
  3. Complete the OAuth2 authorization flow (for Salesforce, HubSpot, Dynamics 365) or enter webhook configuration.
  4. Test the connection.
  5. Enable contact lookup and/or visit logging.

OAuth2 tokens are stored encrypted in the database and refreshed automatically. They are never exposed via any API.

Data flow

Pre-registration                              Check-out
│ │
▼ ▼
CRM contact lookup ◄──── Adapter ────► CRM visit logging
(sync, at registration) (async, event-driven)
  • Contact lookup is synchronous — it happens when the host creates the visit. If the CRM is unreachable, the lookup is skipped and the host enters visitor details manually.
  • Visit logging is asynchronous — it's triggered by the visitor.checked_out event and processed in the background. If the CRM is temporarily unavailable, the event is retried with exponential backoff.