About Salesforce
Salesforce is a cloud-based CRM platform for managing customer relationships, sales pipelines, support cases, and more. The Serval Salesforce integration connects securely to your Salesforce org and does two things: it syncs Service Cloud Cases with Serval tickets (one-way or two-way), and it lets your workflows reach the Salesforce API on demand. The workflow surface acts as a live passthrough - each request runs only when a workflow asks for it, so accounts, contacts, cases, opportunities, custom objects, and SOQL queries are all reachable. Because every call runs as the user you assign during setup, that user’s permissions determine what Serval can read or change. Authentication: OAuth 2.0 Client Credentials Flow Data sync: When ticket sync is enabled, Serval polls your org for Case and CaseComment changes roughly every 30 seconds. Everything else is on-demand - workflow actions call the API only when a workflow runs, and Serval stores no Salesforce record data beyond the tickets it syncs.What the Salesforce integration enables
Ticket sync
Connecting Salesforce also enables native ticket sync between Serval tickets and Salesforce Service Cloud Cases. Serval polls your org for Case changes, ingests new and updated Cases as Serval tickets, and - in two-way mode - writes Serval-side changes back as Case updates and CaseComments. Sync can cover every Case in the org or be scoped to a single Case Queue.What syncs
[Comment from: Name <email>], so agents in Salesforce can see who actually wrote them. The header is stripped again when the comment syncs back, so it never appears on the Serval side.Set up ticket sync
Ticket sync is configured per team on top of an existing Salesforce connection.Connect the Salesforce integration
Open your team's ticket sync settings
Choose a Salesforce queue (optional)
Map statuses
Choose a sync strategy and enable
Required Salesforce permissions
Ticket sync runs entirely as the Connected App’s Run As user, so that user’s profile or permission sets must cover the objects the sync touches:Polling cadence and API usage
Serval polls your org for changed Cases and CaseComments roughly every 30 seconds (a SOQL query filtered onSystemModstamp). There are no webhooks in this version, so changes made in Salesforce can take up to about 30 seconds to appear in Serval; changes made in Serval are pushed to Salesforce as they happen.
Limitations
- No attachments. Files attached on either side do not sync.
- No real-time webhooks. Sync is polling-based, with roughly 30 seconds of latency for changes originating in Salesforce.
- No live agent handoff. Unlike the ServiceNow integration, there is no bridge to a human Salesforce agent chat.
- Single Case treatment. All Cases are synced the same way regardless of record type - there is no per-record-type configuration.
- Email-to-Case conversations don’t sync. Serval syncs the CaseComment thread. Orgs whose case conversations live in EmailMessage records (typical with Email-to-Case) will see only CaseComment traffic sync - the email thread itself stays in Salesforce.
Get your credentials
To connect Salesforce, you create an app in your Salesforce org (a Connected App, or the newer External Client App) configured for OAuth with the Client Credentials Flow enabled and a Run As user assigned. From it you collect the Consumer Key (your Client ID) and Consumer Secret (your Client Secret), plus your org’s instance domain. The full provider walkthrough lives in Salesforce’s Client Credentials Flow setup guide.Open the External Client App Manager
Create the app
Enable OAuth
https://serval.com is fine. Then move the OAuth scopes your workflows need into Selected OAuth Scopes.Turn on Client Credentials Flow
Assign a Run As user
Retrieve your Client ID and Client Secret
Note your instance domain
mycompany.my.salesforce.com), entered without the https:// prefix.Connect in Serval
In Serval, go to Apps → Available → Salesforce → Connect and fill in the following fields. All three are required, and Serval will not let you save until each one is filled in.Instance Domain
https:// prefix (for example, mycompany.my.salesforce.com)..salesforce.com. If it doesn’t match that shape, the form rejects it when you try to save with the message “Must be a valid Salesforce domain (e.g., mycompany.my.salesforce.com)”. A well-formed but incorrect domain (the right shape but the wrong org) is accepted, and surfaces later as a failed connection test, so double-check it carefully.Client ID
Client Secret
Save
Verifying the connection
Serval includes a built-in Test Salesforce Connection healthcheck. It makes an authenticated request to your org, treats the response as a list of available API versions, and reports the count. This confirms that your instance domain, Client ID, and Client Secret all work together to authenticate against the org. On success, you will see:Successfully connected to Salesforce. <N> API versions available.On failure, you will see:
Unable to connect to Salesforce. Please verify your instance domain, client ID, and client secret are valid.
Gotchas and troubleshooting
Connection test fails right after connecting
Connection test fails right after connecting
https://, e.g. mycompany.my.salesforce.com), then re-run the test. If the domain is correct, confirm the Client ID and Client Secret are the Consumer Key and Consumer Secret from the same app.Authentication fails even though the credentials look right
Authentication fails even though the credentials look right
Workflows can authenticate but can't read or change certain records
Workflows can authenticate but can't read or change certain records
No dedicated action for the object I want to manage
No dedicated action for the object I want to manage
Calls to a non-Salesforce host are blocked
Calls to a non-Salesforce host are blocked
salesforce.com or force.com (the force.com range covers Experience Cloud, community, and custom domains). Any other host is blocked.Need help? Contact support@serval.com for assistance with your Salesforce integration.

