Introduction
Qobra connects to Salesforce through a connected app, which needs to be installed via an Oauth check. The integration is used to synchronize all objects, their fields and their content. The integration supports standard or custom objects, and standard or custom fields in those objects. This integration is readonly and does not write anything in your Salesforce.Access
Oauth authentication & scopes
To connect your Salesforce to Qobra, you’ll need to go through an Oauth flow, granting us access to two Salesforce scopes:Perform requests at any time(refresh_token, offline_access)Manage user data via APIs(api)
OAuth login – common pitfalls
When logging into Salesforce, please pay attention to the following points:- Make sure you are logging into the correct Salesforce environment (Production or Sandbox).
- If you are logging in as an API-only user, ensure this user is fully logged out of Salesforce before starting the OAuth connection.
- Be careful when using Salesforce custom domains and verify you are authenticating through the correct domain.
OAUTH_APPROVAL_ERROR_GENERIC, and the callback URL contains error_description=app+must+be+installed+into+org, follow these steps:
- Go to Setup → Connected Apps OAuth Usage
- Find the Qobra connected app
- If the status shows Install (or Approve), click it
- Retry the OAuth connection
Access restriction
The Qobra integrations has access to all the data the user who connected has access to. A common practice for our customers is to create anAPI only user in Salesforce to give Qobra’s access through this user (unlimited, enterprise, and performance Salesforce edition orgs get five free API only licenses). You can restrict this user’s access to Salesforce data, and then give us access through the Oauth flow to restrict Qobra’s access to a part of your Salesforce.
Follow this tutorial to implement Salesforce’s best security practices.
Synchronization
Refresh Frequency
Qobra keeps your Salesforce data up to date through regular synchronizations:- Daily Full Refresh: Every night, we perform a complete sync of all your Salesforce data
- Bi-hourly Updates: Every 2 hours throughout the day, we sync any recent changes
- On-Demand Updates: Need the latest data right away? Just click the refresh button in your integration settings
LastModifiedDate field, present in each table.
| Salesforce type | Qobra type |
|---|---|
int | number |
double | number |
percent | percentage |
currency | amount |
picklist | picklist |
multipicklist | multipicklist |
textarea | string |
string | string |
combobox | string |
phone | string |
boolean | bool |
date | date |
datetime | date |
reference | object |
reference > user | user |
CurrencyIsoCode field, present in each Salesforce object.
Custom queries are based on SOQL where conditions. For instance, you could add as a custom query StageName = 'Closed Won’ to filter your Opportunity object.
Polymorphic References
Salesforce uses polymorphic references (also known as “polymorphic lookup fields” or “WhoId/WhatId fields”) in certain objects like Events and Tasks. These special reference fields can point to multiple types of entities. For example:- The
WhoIdfield can reference Leads, Contacts, or Users - The
WhatIdfield can reference Accounts, Opportunities, Cases, and other custom objects
Workarounds
To handle this limitation, here are some suggested workarounds:-
Create Separate Fields: Instead of using the polymorphic fields, you can create separate lookup fields for each type of entity you need to reference. For example:
Account__cOpportunity__cLead__c
- Use Record Types: Create different record types for your Events/Tasks based on the type of entity they’re related to. This allows you to have different page layouts and field sets for each type of relationship.
- Custom Junction Objects: For complex relationships, consider creating custom junction objects that explicitly define the relationships between your records.