SiftHub's Salesforce Connector integrates your Salesforce data into SiftHub, enabling you to search and receive AI-generated answers directly from your Salesforce records via the SiftHub Platform.
Connection Options
SiftHub connects to your Salesforce content via an API Integration (Client Credentials Flow), providing comprehensive access to your data. This method requires specific configuration within your Salesforce organisation, including the creation of a Connected App, a dedicated Integration User, and associated profiles and permission sets.
What Gets Connected
SiftHub connects to and indexes data from specific Salesforce objects and their critical fields.
Supported Objects:
Account
Contact
Opportunity
Task
Event
EmailMessage
ContentDocument
Note
Critical Fields (Necessary for proper functioning)
1. Core System Fields (Always Required)
Id- Primary identifier for all objectsCreatedDate- Used for initial data loading and syncLastModifiedDate- Used for incremental sync operationsIsDeleted- Required to check if the record is deleted in SalesforceCreatedBy- User who created the recordLastModifiedBy- User who last modified the record
2. Object-Specific Required Fields
Account Object:
Name, TypeParentId- Related object
Contact Object:
Name, EmailAccountId- Related object
Opportunity Object:
Name, StageName, IsClosed, Probability, Amount, CloseDate, OpportunityContactRolesAccountId - Related object
Task Object:
Subject, Status,Priority, ActivityDateWhatId- Related objectWhoId- Related contact
Event Object:
Subject,StartDateTime, EndDateTimeWhatId- Related objectWhoId- Related contact
Note Object:
TitleParentId- Parent object reference
EmailMessage Object:
Subject,FromAddress, ToAddress, CcAddress, BccAddressRelatedToId- Related object reference
ContentDocument Object:
Title,FileExtension,ContentSize,LatestPublishedVersionIdLinkedEntityId- Related object reference
How It Works
Once connected, SiftHub:
Indexes content from the supported Salesforce objects8.
Utilises CreatedDate and LastModifiedDate fields for initial data loading and subsequent incremental synchronisation operations.
Makes the connected content searchable and available for AI-generated answers within the SiftHub platform.
Content Updates
New or modified content appears in SiftHub within 6 Hours
Updates include:
New Objects
Objects changes
Permission changes
Deletions
Deleted Objects are automatically removed from SiftHub results
Access Control
SiftHub partially supports Salesforce’s native permissions
Supported:
Profile
Permission Set
Permission Set Groups
Currently unsupported:
Org Wide Defaults
Role Hierarchy
Restriction Rules
Sharing Rules
Field level access
Record level access
Examples (Provided the user is present in Salesforce and SiftHub platform)
Example of Field level access:
Let's imagine a sensitive field in Salesforce on the Opportunity object called Commission_Amount__c.Permissions in Salesforce
Integration User: The Salesforce profile for this user is given access to view the Commission_Amount__c field.
Sales Rep (Alex): Alex's Salesforce profile is denied access to the Commission_Amount__c field. When Alex logs into Salesforce directly, they cannot see this field on any opportunity.
Outcome in SiftHub
Because the Integration User has access to the Commission_Amount__c field, SiftHub ingests this field and its data during its sync.
When Alex logs into the SiftHub platform, they will be able to see the Commission_Amount__c field and its values.
This demonstrates that SiftHub's platform access mirrors the permissions of the Integration User, overriding the specific field-level restrictions applied to an individual user like Alex in Salesforce. Any field visible to the Integration User becomes visible to all SiftHub users.
Example of Record level access:
If one User A of Salesforce has a profile or permission set or permission set group which gives that user A the access to Opportunity object, then he will have access to all the Opportunities on SiftHub platform.
How to create Connected App & Integration User
Prerequisites
Before creating a Connected App, ensure you have:
System Administrator or equivalent permissions in your Salesforce org
Step-by-Step Creation Process
Step 1: Navigate to Connected Apps Setup
Log in to your Salesforce org
Click the Setup gear icon in the top right corner
In the Quick Find box, search for "App Manager"
Click App Manager under Apps
Click New External Client App button
Step 2: Basic Information Configuration
Fill out the required basic information:
Connected App Name
Enter a descriptive name for your app (e.g., "SiftHub")
This name will be visible to users during authorization
API Name
This auto-populates based on your app name
You can modify it if needed (must be unique in your org)
Contact Email
Provide a valid email address for the app contact
Users will see this email if they have issues with the app
API (Enable OAuth Settings)
Check "Enable OAuth Settings" - This is mandatory for API access
Callback URL
Enter the URL where Salesforce will redirect users after authentication:
https://sifthub.io/oauth/salesforce-callback
Selected OAuth Scopes Choose appropriate scopes:
Perform requests at any time (refresh_token, offline_access) - Enables refresh tokens
Access the identity URL service (id, profile, email, address, phone) - User profile data
Access custom permissions (custom_permissions) - Custom Permissions
Manage user data via APIs (API)
4. Enable Client Credentials Flow
5. Click on Create
Step 3: Create Custom Profile
Go to Setup → Users → Profiles
Click on M in Navigation Pane & Clone the Minimum Access - API Only Integrations Profile
Name the Profile as “Sifthub API Integration Profile”
Scroll down to Field Level Security
For each object (Account, Contact, Opportunity, Event, Task, EmailMessage)
Open field level security for each object
Select all the fields and ensure Read access to all fields are given.
Click Save
Refer to the example below
Step 4: Create Integration User (API-only User)
Navigate to Users
Go to Setup → Users → Users
Click New User
2. Configure Integration User
First Name: Integration
Last Name: User (or your app name like "SiftHub")
Email: Use a dedicated email (e.g.,
sifthub-integration@yourcompany.com)Username: Must be unique across all Salesforce orgs (e.g.,
sifthub-integration@yourcompany.com)Nickname: IntegrationUser
User License: Salesforce Integration
Profile: Sifthub API Integration Profile (Created in Step 3)
Generate new password and notify user immediately: Uncheck this
3. Click on Save
Step 5: Create Custom Permission Set for API Access
Navigate to Permission Sets
Go to Setup → Permission Sets
Click New
Configure Permission Set
Label: Sifthub API Access
API Name: Sifthub_API_Access
Description: Permission set for Sifthub integration API access
License: Salesforce API Integration
Configure System Permissions
Go to System Permissions
Click Edit
Enable the following permissions:
Access Activities ✓
View All Users ✓ (for user queries)
View Setup and Configuration ✓ (for permission queries)
View All Data ✓
Click Save
Assign Permission Set to Integration User
Click Manage Assignments
Click Add Assignment
Select your integration user created in Step 4
Click Next
Click Assign
Step 6: Managing Policies
Go to Setup → External Client App Manager
Find your Connected App and click the dropdown arrow
Click on Edit policies
OAuth Policies Options:
Permitted Users: Admin approved users are pre-authorized
Enable Client Credentials Flow->Run as: Select your integration user created in Step 4
Refresh Token Policy: Refresh token is valid until revoked
App Policies Options:
Since you selected "Admin approved users are pre-authorized”
Select Profiles to assign specific profiles
a. Add Sifthub API Integration Profile (Created in Step 3)
Select Permission Sets to assign permission sets
a. Add Sifthub API Access (Created in Step 5)
Step 8: Retrieve Credentials
View External Client Connected App
Important: Copy and securely store:
Consumer Key (Client ID)
Consumer Secret (Client Secret)
Your Salesforce Domain
Troubleshooting Common Issues
"invalid_client_id" Error
Verify the Consumer Key is correct
Ensure the Connected App is active
Check if the user has access to the app
"redirect_uri_mismatch" Error
Verify the callback URL matches exactly
Check for trailing slashes or HTTP vs HTTPS
"invalid_scope" Error
Ensure requested scopes are configured in the Connected App
Verify the user has permissions for the requested scopes
"invalid_grant" Error
Check if authorization code has expired (10 minutes)
Verify the redirect URI matches the one used for authorization
Ensure client credentials are correct