Clari Integration User
Clari requires an integration user to guarantee data completeness and stability in the system. Clari relies on a single user to extract data from Salesforce and other sources, so if that user is not an integration user, issues will arise when that user leaves the company, permissions for that user change, etc. It's best to dedicate a user just to Clari and not rely on a specific user's account.
Note that for individual opportunity retrieval and updates, Clari still uses individual user tokens as outlined in this document. Please see additional information below to complete the following:
1. Create an Integration User with the correct permissions
2. Connect the Integration User to Clari
What Does Clari Do with the Integration User?
Clari powers a number of features with our own database, more specifically, our analytics and AI. The integration user is the user that Clari will use to extract Salesforce data and populate our database. In other words, Clari can only extract and subsequently report on fields and records that the integration user has access to. Additionally, in order to replicate CRM access, some system tables are accessed to ensure that the users have access to the same records in Clari as they do in the base CRM.
Integration User Requirements
The user must meet two requirements detailed below:
1. They must have full read access to all records and fields that are being extracted by Clari.
2. They must have visibility into all records targeted in the Clari extract.
These two requirements are detailed below.
Record and Field Read Permissions
Clari can extract any record and field from Salesforce. Fields are extracted for two reasons: to leverage them in Clari and/or to snapshot the field history. In other words, a field may not be used immediately in Clari, but you may want to start capturing the history for that field. Note that the Clari snapshot history supplements the CRM history. So Clari will always have at least as much or more history than the CRM.
If you wish to start snapshotting the history for a given field or record, or if you want to leverage a field or record in Clari, it must be extracted. In order to do this, the integration user must have full read access to that field. If you have purchased Capture, write access will need to be enabled for the Task & Events objects.
Full Record Access
In addition to having read access to the designated fields, the integration user must have access to all fields for the extracted records. If Clari is to extract a single field on a record, Clari will need access to all records that contain that field. For example, if Opportunities are being extracted in Clari, the user must have access to all Opportunity records.
Failing to provide full visibility to all records will create uncertainty in historical data.
Additional Notes
Clari recommends using a unique and easily identifiable name and email address for the integration user, such as clari@yourorgname.com and "Clari Integration." The email address does not necessarily have to be valid or added to your SSO user list. Please let your Customer Success or Support Rep know if the integration user is not set up with a valid email address, and Clari can direct all emails to a specific inbox.
Clari also recommends not creating an API-only user. As part of the integration user setup, you must connect the integration user's Salesforce account to a Clari user, which requires a normal Salesforce login.
The user must be assigned a Role at the top of the hierarchy and have access to "View Roles and Role Hierarchies" in their Salesforce Profile. (This can be done under System Permissions on the user’s profile in Salesforce.) Users must sit in the highest node to see all the data Clari will extract.
Clari Integration User Setup Instructions
Once the integration user is created and properly configured in Clari, notify your Customer Success or Support Rep. Note that you will need to submit a case if you ever need to change the integration user defined for your Clari org.
-
Open Salesforce
-
Open the Setup Menu (Gear Icon) in the top right and select “Setup”

3. In the search bar in the left nav, search for “Permission Sets” then click on Permission Sets:

4. Click New
5. For the label, type “API Enabled User”
6. For description, type “Users assigned will be able to access Salesforce via API”

7. It's optional to select a License. If you do, only select a License type of “Salesforce.”
8. Click Save
9. Open “System Permissions” menu

10. Click Edit
11. Select the checkbox next to “API Enabled”
12. Click Save
13. Next, you will want to add the Clari user to this permission set. Select “Manage Assignments"

14. Click Add Assignments (on the right)
15. From the list, find the user assigned to integrate with Clari. Check the box next to the username

16. Click Next
17. Click Assign
- It is optional to add an expiry date to this permission set. If an expiry date is added, the permission set will be removed from the user record on this date.
- It's recommended not to add an expiry date.
18. Click Done
Adding Permissions Sets & Entity Definitions
1. Go to Setup > Users
2. Select the Integration User
3. Press edit to make updates in the user profile
4. Assign Profile and Save

5. Locate the Administrative Permissions group and set the “View Setup and Configuration” permission.

Records Extracted by Default
By default, Clari attempts to extract all fields on the following records:
Required
User
UserRole
Opportunity
OpportunityLineItem
OpportunitySplit
OpportunityHistory
OpportunityFieldHistory
OpportunityCompetitor
Account
AccountHistory
Contact
ContactHistory
Lead
LeadHistory
Task
OpportunityContactRole
RecordType
Period
FiscalYearSettings
Entity Details - PermissionSet, PermissionSetAssignment, ObjectPermissions, EntityDefinition
More objects for permission model:
-
OpportunityTeamMember
-
AccountTeamMember
-
OpportunityShare
-
ObjectTerritory2Association
-
ObjectTerritory2AssignmentRule
-
ObjectTerritory2AssignmentRuleItem
-
AccountShare
-
Any CustomObject__Share type objects created using Apex-managed sharing
Optional But Recommended
Note: By default, if the integration user has access to the optional entity, Clari will grab that entity. When Clari grabs the optional entity, if it has any dependent entities/fields, they will now become required.
OpportunityLineItemSchedule
OpportunitySplitType
Product2
Product2History
PriceBook2
PriceBook2History
PriceBookEntry
Case
Case History
CurrencyType
DatedConversionRate
Territory (if ETM enabled)
Territory2 (if ETM enabled)
UserTerritory (if ETM enabled)
UserTerritory2Association (if ETM enabled)
Required Fields Table
|
Required Entity
|
Required Fields
|
Optional Fields
| Dependent Entity | Read/Write |
|
RecordType
|
Id
SystemModstamp
Description
DeveloperName
IsActive
Name
NamespacePrefix
SobjectType
CreatedDate
|
IsPersonType
| |
Access to record type field for each object in scope of Clari project. Required: Opportunity Record Type.
|
|
Territory
|
Id
ParentTerritoryId
SystemModstamp
AccountAccessLevel
CaseAccessLevel
ContactAccessLevel
CurrencyIsoCode
Description
DeveloperName
MayForecastManagerSh are
Name
OpportunityAccessLevel
RestrictOppTransfer
| |
UserTerritory
| |
|
Territory2
|
Id
SystemModstamp
AccountAccessLevel
CaseAccessLevel
ContactAccessLevel
CurrencyIsoCode
Description
DeveloperName
Name
OpportunityAccessLevel
| |
UserTerritory2Association
| |
|
UserTerritory
|
Id
SystemModstamp
IsActive
IsDeleted
| |
Territory
| |
|
UserTerritory2Association
|
Id
SystemModstamp
IsActive
RoleInTerritory2
| |
Territory2
| |
|
ObjectTerritory2Association
|
Id
ObjectId
Territory2Id
IsDeleted
SystemModstamp
CreatedDate
| |
Territory2
| |
|
User
|
Id
Name
UserRoleId
FirstName
LastName
Email
IsActive
SystemModstamp
CreatedDate
UserType
LocaleSidKey
TimeZoneSidKey
|
CurrencyIsoCode
DefaultCurrencyIsoCode
| |
Read access to all fields
|
|
UserRole
|
Id
Name
ParentRoleId
PortalType
SystemModstamp
| | |
Read access to field on User object
|
|
Opportunity
(history_reference_entity : OpportunityFieldHistory)
|
Id
AccountId
Name
StageName
(history_reference_entity : OpportunityHistory)
SystemModstamp
OwnerId
ForecastCategory
(history_reference_entity : OpportunityHistory)
IsClosed
CloseDate
(history_reference_entity : OpportunityHistory)
IsWon
Amount
(history_reference_entity : OpportunityHistory)
CreatedDate
IsDeleted
Type
ForecastCategoryName
|
CurrencyIsoCode
(history_reference_entity : OpportunityHistory)
FiscalYear
FiscalQuarter
Description
NextStep
ExpectedRevenue
TotalOpportunityQuantity
| |
Read / Write to all standard fields. Additional read/write for custom fields required for Clari deployment.
|
|
OpportunityHistory
|
Id
OpportunityId
StageName
CloseDate
Amount
ForecastCategory
Probability
ExpectedRevenue
CreatedById
CreatedDate
IsDeleted
|
CurrencyIsoCode
| |
Inherited from Opportunity
|
|
OpportunityFieldHistory
|
Id
OpportunityId
Field
OldValue
NewValue
IsDeleted
CreatedDate
CreatedById
| | |
Inherited from Opportunity
|
|
OpportunityLineItem
|
Id
ConnectionReceivedId
ConnectionSentId
Description
Discount
ListPrice
Name
OpportunityId
ProductId
ProductCode
Quantity
RecalculateTotalPrice
ServiceDate
SortOrder
Subtotal
TotalPrice
UnitPrice
SystemModstamp
CreatedDate
Id
Description
IsDeleted
OpportunityLineItemId
Quantity
Revenue
ScheduleDate
Type
SystemModstamp
CreatedDate
|
CurrencyIsoCode
HasQuantitySchedule
HasRevenueSchedule
HasSchedule
PricebookEntryId
Product2Id
| |
Read to all standard fields. Additional read for custom fields required for Clari deployment.
|
|
OpportunityCompetitor
|
Id
CompetitorName
IsDeleted
OpportunityId
Strengths
Weaknesses
SystemModstamp
|
| |
Read access to all fields
|
|
Account
(history_reference_entity: AccountHistory)
|
Id
Name
Website
OwnerId
SystemModstamp
IsDeleted
Type
CreatedDate
|
CurrencyIsoCode
AnnualRevenue
| |
Read to all standard fields. Additional read for custom fields required for Clari deployment
|
|
AccountHistory
|
Id
CreatedDate
Field
IsDeleted
NewValue
OldValue
|
| |
|
Contact
(history_reference_entity: ContactHistory)
|
Id
AccountId
Email
Name
LastName
FirstName
Title
OwnerId
SystemModstamp
IsDeleted
CreatedDate
|
CurrencyIsoCode
| |
Read to all standard fields. Additional read for custom fields required for Clari deployment.
|
|
ContactHistory
|
Id
CreatedDate
Field
IsDeleted
NewValue
OldValue
|
| |
|
Lead
(history_reference_entity: LeadHistory)
|
Id
Name
Email
OwnerId
IsDeleted
SystemModstamp
CreatedDate
|
| Task | Read Only |
|
LeadHistory
|
Id
IsDeleted
LeadId
CreatedById
CreatedDate
Field
OldValue
NewValue
|
| |
|
Optional Fields Table
| Optional Entity |
Required Fields
| Optional Fields | Dependent Entity | Read/Write |
| OpportunityLineItemSchedule |
Id
Description
IsDeleted
OpportunityLineItemId
Quantity
Revenue
ScheduleDate
Type
SystemModstamp
CreatedDate
| CurrencyIsoCode | | |
| OpportunitySplitType |
Id
Description
DeveloperName
IsActive
IsTotalValidated
Language
ManageableState
MasterLabel
NamespacePrefix
SplitEntity
SplitField
SplitDataStatus
SystemModstamp
CreatedDate
| | | |
|
Product2
(history_reference_entity: Product2History)
|
CanUseQuantitySchedule CanUseRevenueSchedu le
NumberOfQuantity Installments
NumberOfRevenue Installments
QuantityInstallmentPeriod QuantityScheduleType
RevenueInstallmentPeri od
RevenueScheduleType
| | | Read to all standard fields. Additional read for custom fields required for Clari deployment. |
| Product2History |
Id
CreatedDate
Field
IsDeleted
NewValue
OldValue
| | | |
|
PriceBook2
(history_reference_entity: Pricebook2History)
|
Id
Description
IsActive
IsArchived
IsDeleted
IsStandard
Name
SystemModstamp
CurrencyIsoCode
CreatedDate
| | | Read / Write to all standard fields. Additional read/write for custom fields required for Clari deployment. |
|
Pricebook2History
|
Id
CreatedDate
Field
IsDeleted
NewValue
OldValue
| | | |
|
PriceBookEntry
|
Id
IsActive
IsDeleted
Name
Pricebook2Id
ProductCode
UnitPrice
UseStandardPrice
SystemModstamp
CreatedDate
|
CurrencyIsoCode
Product2Id
| | Inherited from PriceBook2 |
|
OpportunityContactRole
|
Id
OpportunityId
ContactId
Role
CreatedDate
IsDeleted
|
| | |
|
OpportunityTeamMember
|
Id
CurrencyIsoCode
IsDeleted
Name
OpportunityAccessLevel
OpportunityId
PhotoURL
TeamMemberRole
Title
UserId
SystemModstamp
CreatedDate
|
| | Read access to all fields |
|
AccountTeamMember
|
Id
SystemModstamp
TeamMemberRole
AccountAccessLevel
CreatedDate
|
Name
Title
OpportunityAccessLevel
CaseAccessLevel
ContactAccessLevel
| | |
|
Case
(history_reference_entity: CaseHistory)
|
Id
AccountId
BusinessHoursId
CaseNumber
ClosedDate
CommunityId
ConnectionReceivedId
ConnectionSentId
ContactEmail
ContactFax
ContactId
ContactMobile
ContactPhone
CreatorFullPhotoUrl
CreatorName
CreatorSmallPhotoUrl
CurrencyIsoCode
Description
FeedItemId
HasCommentsUnreadBy Owner
HasSelfServiceComments
IsClosed
IsClosedOnCreate
IsDeleted
IsEscalated
IsSelfServiceClosed
IsStopped
IsVisibleInSelfService
LastReferencedDate
LastViewedDate
Origin
OwnerId
ParentId
Priority
QuestionId
Reason
RecordTypeId
SlaStartDate
SourceId
Status
StopStartDate
Subject
SuppliedCompany
SuppliedEmail
SuppliedName
SuppliedPhone
Type
SystemModstamp
| |
|
Read to all standard fields. Additional read for custom fields required for Clari deployment.
|
|
CaseHistory
|
Id
CreatedDate
Field
IsDeleted
NewValue
OldValue
| | | |
|
CurrencyType
|
Id
ConversionRate
DecimalPlaces
IsActive
IsCorporate
IsoCode
SystemModstamp
CreatedDate
| | | |
|
DatedConversionRate
|
Id
ConversionRate
IsoCode
NextStartDate
StartDate
SystemModstamp
CreatedDate
| | | |
|
Period
|
Id
SystemModstamp
EndDate
FullyQualifiedLabel
IsForecastPeriod
PeriodLabel
QuarterLabel
StartDate
Type
| | | |
|
FiscalYearSettings
|
Id
SystemModstamp
Description
EndDate
IsStandardYear
Name
PeriodLabelScheme
PeriodPrefix
QuarterLabelScheme
QuarterPrefix
StartDate
WeekLabelScheme
YearType
| | | |
|
Task
|
Id
WhoId
WhatId
Subject
Type
TaskSubtype
AccountId
OwnerId
ActivityDate
CreatedDate
SystemModstamp
| |
Lead
|
Read/Edit/Create
|
Profile System Permissions Requirements:
-
Access Activities - required to show integrated task data
-
API enabled - required for 15-minute data syncs
-
API Only User -not required and can only be turned on after the integration user connection is established; OAuth needed to establish a connection
-
View All Data - not required, but generally recommended. Clari will only extract the data above by default. If additional objects are required, Clari can be configured to extract those as well
-
View Roles and Role Hierarchy - required for automated hierarchy sync, even if you're using Enterprise Territory Management 2.0
If using Clari’s Capture functionality, the Integration User will need access to the following:
Account.recordtypeid - READ
Account.type - READ
Account.website - READ
Contact.email - READ/EDIT/CREATE
Contact.name - READ/EDIT/CREATE
Recordtype.id - READ
Recordtype.name - READ
Opportunitycontactrole.createbyid - READ/EDIT/CREATE
Task Object and associated fields on Task Object - READ/EDIT/CREATE
Event Object and associated fields on Event Object - READ/EDIT/CREATE
Clari can turn off the extract for some of the objects above without impacting Clari functionality. For the records that are extracted, however, as noted above, the integration user must have access to all records.
Connecting the Integration User in Clari
1. Log into Salesforce as the Integration User in an incognito window
2. Open another tab in the same browser and go to app.clari.com(opens in a new tab)
3. Select Create a New account
4. Enter the email address for the Integration User (Note: This is where you’ll need to have access to the email address that you use so you can complete the setup process)
5. Create your password
6. When prompted, connect Salesforce. It should detect the open Salesforce session in the other browser tab and ask you to Allow
7. When prompted, select the User Role as <Sales Ops>
8. Please skip connecting your email for now
9. Please skip entering your mobile number for now
If you do not have access to the email address for this setup process, please send the information below to your Customer Success or Support Rep.
Once your rep sets this up, you can follow the steps to connect the Integration User to Clari.