Salesforce Setup Guide
Prerequisites
- A Salesforce account.
- A Salesforce Enterprise level account plan or higher, or purchased Salesforce API calls.
Setup Guide
-
Enable field history tracking (optional). Read the Salesforce documentation for instructions on enabling field history tracking.
-
If Session IP Locking is enabled, navigate to the Session Settings page and deselect the Lock sessions to the IP address from which they originated option.
ℹ️ Note: To set up a Salesforce connector, it's recommended to use a dedicated user account from within your organization. This user should have the necessary permissions to access Salesforce's APIs and should be limited to accessing only the data you intend to synchronize. To achieve this, you can create a new user and configure a corresponding profile in Salesforce. To create a new user and profile in Salesforce, follow these steps:
-
(Optional) Create a dedicated user.
- Log in to Salesforce with administrative privileges.
- Navigate to Setup in the top right corner of your screen.
- Within the Administration tab on the left side, select the Profiles tab.
- Click New Profile.
- Select Read Only from the Existing Profile drop-down menu.
- Enter a memorable name in the Profile Name field. For example, Matia User Read Only.
- Click Save. The Profile page will open.
- Click Edit in the Profile Detail section.
- Scroll down to the Standard Object Permissions section and set the Read permission for the objects that you want sync.
- Click Save.
- Under the Administration tab on the left side of the screen, click the Users tab.
- Click New User. Fill in all the required details.
- In Profile, select the user profile you created (Matia User Read Only).
- Choose the Salesforce environment where you want to sync the data.
- Authenticate your Salesforce account with OAuth by clicking on OAUth.
- If using Sandbox, append
.<yourSandboxName>to userName. For example, if your production username isuser@example.comand your Sandbox is nameddev, your Sandbox username would beuser@example.com.dev.
- If using Sandbox, append
- Check Sync formula fields directly (not recommended), if you want to sync formula fields directly. Activating this option could compromise data consistency.
- Enter a Name for the connector.
- (Optional) Enter a Description for the connector.
- Select the Owner of the connector.
- (Optional) Verify that your Salesforce account is successfully connected by clicking on Test Connection.
- Click Connect.
Formula Fields
Formula fields in Salesforce are auto-populated fields with values dynamically derived from standard or custom fields. Each formula field consists of a definition, representing the formula logic, and a value, which is determined based on the formula’s computation. Since updates to formula fields do not always trigger changes to an object’s SystemModStamp (and thus, we cannot reliably perform an incremental sync), Matia translates Salesforce formulas into SQL and builds corresponding data models for Salesforce objects containing formula fields:
-
MATIA_FORMULA stores the Salesforce-defined formulas, which are used to translate formula fields.
-
MATIA_FORMULA_FAILURE_REASON stores all the reasons why Matia could not translate a specific formula field.
-
MATIA_FORMULA_MODEL stores SQL models for objects with translated formula fields. It includes a SQL SELECT statement for each object containing formula fields. This statement generates a model that combines all standard fields with all computable formula fields.
Formula field limitations
-
Supported destinations
SnowflakeBigQuery
-
Fields referencing columns or tables not synced by the user are not supported.
-
The following functions are not supported:
- IMAGE
- DAYOFYEAR
- TRUNC
- ASCII
- INITCAP
- PICKLISTCOUNT
- REVERSE
- DISTANCE
- GEOLOCATION
-
We support the fields that reference the following Global Variables:
$Api$Label$Organization$Permission$Profile$System.OriginDateTime$User$UserRole$CustomMetadata$RecordType$Setup
-
The following global variables rely on specific tables. The relevant tables on the Schema tab of your integration page have to be enabled.
GLOBAL VARIABLE DEPENDENT TABLES $OrganizationOrganization $PermissionPermissionSetAssignment, Organization, SetupEntityAccess, CustomPermission $ProfileProfile, User $UserUser $UserRoleUser, UserRole $CustomMetadataReferenced custom metadata table $RecordTypeRecordType $SetupReferenced custom setting table, User