Salesforce CRM Integration
Automatically sync contacts and log meeting events in Salesforce when bookings are created through LinkTime.
Overview
The Salesforce integration connects your LinkTime account to your Salesforce org via OAuth 2.0. When someone books time with you, LinkTime automatically creates or updates a Contact in Salesforce and adds an Event to their Activity Timeline — so your CRM stays up to date without manual data entry.
One-way sync: Data flows from LinkTime to Salesforce only. Changes made directly in Salesforce (like editing a Contact) are not synced back to LinkTime.
Prerequisites
- -A Salesforce org (any edition with API access)
- -A user account with permission to create/edit Contacts and Events
- -A Connected App configured in Salesforce Setup (see below)
- -A LinkTime Pro plan or higher
Connected App Setup
Before connecting, your Salesforce admin needs to create a Connected App. This is a one-time setup:
- 1
Open Salesforce Setup
Go to Setup → App Manager (search “App Manager” in Quick Find).
- 2
Create a New Connected App
Click New Connected App. Fill in the app name (e.g., “LinkTime”) and a contact email.
- 3
Enable OAuth Settings
Check Enable OAuth Settings. Set the callback URL to:
https://linktime.io/api/integrations/salesforce/callback - 4
Select OAuth Scopes
Add these scopes: Access the identity URL service (id) and Manage user data via APIs (api). The refresh token scope is automatic.
- 5
Save and Copy Keys
After saving, copy the Consumer Key (Client ID) and Consumer Secret (Client Secret). You'll need these for the LinkTime configuration.
Note: It can take 2-10 minutes for a new Connected App to become active in Salesforce. If you get an “invalid_client_id” error immediately after setup, wait a few minutes and try again.
Connecting Salesforce
- 1
Go to Integrations
Navigate to Dashboard → Integrations and find the CRM section.
- 2
Click “Connect” on Salesforce
You'll be redirected to Salesforce's login page where you'll sign in and authorize LinkTime to access your org.
- 3
Authorize LinkTime
Review the permissions and click “Allow”. LinkTime requests access to create and update Contacts and Events via the Salesforce REST API.
- 4
Done!
You'll be redirected back to LinkTime. Salesforce will show as “Connected” with your org name. All future bookings will automatically sync.
Required Permissions
The Salesforce user who connects LinkTime needs the following permissions in their Profile or Permission Set:
- - Create and Edit on Contact object
- - Create and Edit on Event object
- - API Enabled permission (usually enabled by default)
- - SOQL query access to Contact object (for deduplication)
Tip: Salesforce uses Profile-based permissions. The connected user's Profile determines what objects LinkTime can access — not the OAuth scope alone. If syncing fails, ask your Salesforce admin to check the user's Profile permissions.
What Gets Synced
Contacts
When someone books with you, LinkTime searches for an existing Contact by email via SOQL. If found, the Contact is updated; if not, a new one is created.
Fields synced:
- - Email (used as dedup key via SOQL query)
- - FirstName and LastName (split from invitee's full name)
- - Phone (if provided during booking)
If a Contact with that email already exists, only FirstName and Phone are updated — LastName is preserved to avoid overwriting data your sales team has entered.
Events (Calendar Items)
An Event is created in Salesforce for each booking. Events appear on the Contact's Activity Timeline and in the Salesforce calendar.
Event details logged:
- - Subject (event type name + invitee name)
- - StartDateTime and EndDateTime
- - Description (invitee's notes, or “Booked via LinkTime”)
- - WhoId (linked to the Contact's Activity Timeline)
What Happens When...
A booking is created
A Contact is created or updated in Salesforce. An Event is added to their Activity Timeline with the meeting subject, times, and description.
A booking is rescheduled
The existing Event in Salesforce is updated with the new start and end times. The description notes the previous time for reference.
A booking is cancelled
The Event's Subject is prefixed with “[Cancelled]” to preserve the record on the timeline. The Event is not deleted, so your sales team retains the history.
Reliability
Salesforce sync runs in the background and never blocks the booking process. If Salesforce is temporarily unavailable or returns an error, your booking still completes normally — the confirmation email is still sent, and the calendar event is still created.
Token auto-refresh: Salesforce access tokens expire every ~2 hours. LinkTime automatically refreshes them in the background with a 5-minute buffer — you never need to reconnect manually.
Sandbox Support
LinkTime currently connects to production Salesforce orgs via login.salesforce.com. Sandbox orgs (using test.salesforce.com) are not yet supported but planned for a future release.
Testing tip: If you want to test the integration before going live, consider creating a Developer Edition org at developer.salesforce.com — these are free production-type orgs with full API access.
Disconnecting Salesforce
To disconnect Salesforce from your LinkTime account:
- 1.Go to Dashboard → Integrations
- 2.Find Salesforce under the CRM section
- 3.Click “Disconnect”
Disconnecting removes the link between LinkTime and Salesforce. Contacts and Events already created in Salesforce are not deleted — they remain in your CRM.
To fully revoke access: You can also remove LinkTime from your Salesforce org by going to Setup → Connected Apps OAuth Usage and revoking access for LinkTime.
Salesforce vs HubSpot vs Attio
LinkTime supports all three CRM platforms. You can connect one or more simultaneously. Here's how they compare:
| Feature | Salesforce | HubSpot | Attio |
|---|---|---|---|
| Contact sync | SOQL query + create/update | Contacts (batch upsert) | People (assert upsert) |
| Meeting logging | Event on Activity Timeline | Meeting object + association | Notes on person timeline |
| Token lifecycle | ~2hr expiry (auto-refresh) | 30-min expiry (auto-refresh) | Long-lived (no refresh) |
| Cancel/reschedule | [Cancelled] prefix on Event | Meeting outcome updated | New note with status prefix |
| Best for | Enterprise, large teams | Mid-size, growth-stage | Startups, small teams |
All three integrations can run simultaneously. See the HubSpot and Attio integration guides for more details.
Data & Privacy
LinkTime takes your privacy seriously. Here's what we do and don't access:
What we access:
- - Create and update Contacts
- - Create and update Events
- - Query Contacts by email (SOQL)
- - Read org name
What we don't access:
- - Opportunities or pipeline data
- - Leads (Contacts only in v1)
- - Custom objects
- - Reports, dashboards, or analytics
- - Email, files, or attachments
Your Salesforce OAuth tokens are encrypted at rest using AES-256 encryption. If tokens are revoked, the integration will gracefully disconnect and you can reconnect at any time. See our Privacy Policy for more details.
Troubleshooting
FIELD_CUSTOM_VALIDATION_EXCEPTION
Your Salesforce org has a validation rule that's blocking the Contact or Event creation. Check your validation rules in Setup → Object Manager → Contact/Event → Validation Rules and ensure LinkTime's fields (Email, LastName, Subject, StartDateTime, EndDateTime) pass validation.
INSUFFICIENT_ACCESS or INSUFFICIENT_PERMISSIONS
The connected Salesforce user doesn't have permission to create/edit Contacts or Events. Ask your Salesforce admin to check the user's Profile and ensure Create/Edit permissions are granted on both objects.
DUPLICATES_DETECTED
Your Salesforce org has duplicate rules that are blocking Contact creation. You can either adjust the duplicate rule to “Alert” instead of “Block”, or ensure the rule allows Contacts created via the API.
Salesforce shows as “Not connected” unexpectedly
This can happen if your Salesforce admin revoked the Connected App or if the refresh token was invalidated. Try disconnecting in LinkTime and reconnecting. If the issue persists, check that the Connected App is still active in Salesforce Setup.
IP restrictions are blocking the connection
If your org uses IP restrictions (Login IP Ranges or Trusted IP Ranges), ensure that LinkTime's server IPs are allowed. Alternatively, set the Connected App's IP Relaxation to “Relax IP restrictions” in the Connected App settings.
Need Help?
Our support team is here to assist you with any Salesforce integration issues.
Contact Support