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. 1

    Open Salesforce Setup

    Go to Setup → App Manager (search “App Manager” in Quick Find).

  2. 2

    Create a New Connected App

    Click New Connected App. Fill in the app name (e.g., “LinkTime”) and a contact email.

  3. 3

    Enable OAuth Settings

    Check Enable OAuth Settings. Set the callback URL to: https://linktime.io/api/integrations/salesforce/callback

  4. 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. 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. 1

    Go to Integrations

    Navigate to Dashboard → Integrations and find the CRM section.

  2. 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. 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. 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. 1.Go to Dashboard → Integrations
  2. 2.Find Salesforce under the CRM section
  3. 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:

FeatureSalesforceHubSpotAttio
Contact syncSOQL query + create/updateContacts (batch upsert)People (assert upsert)
Meeting loggingEvent on Activity TimelineMeeting object + associationNotes on person timeline
Token lifecycle~2hr expiry (auto-refresh)30-min expiry (auto-refresh)Long-lived (no refresh)
Cancel/reschedule[Cancelled] prefix on EventMeeting outcome updatedNew note with status prefix
Best forEnterprise, large teamsMid-size, growth-stageStartups, 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