Skip to main content

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)
You’ll find more information about Salesforce connected app scopes here.

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.
If you encounter the following error during the OAuth flow OAUTH_APPROVAL_ERROR_GENERIC, and the callback URL contains error_description=app+must+be+installed+into+org, follow these steps:
  • Go to SetupConnected 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 an API 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
For Salesforce, we base this synchronization on the LastModifiedDate field, present in each table.
Salesforce typeQobra type
intnumber
doublenumber
percentpercentage
currencyamount
picklistpicklist
multipicklistmultipicklist
textareastring
stringstring
comboboxstring
phonestring
booleanbool
datedate
datetimedate
referenceobject
reference > useruser
Qobra integration supports multi-currency synchronization, based on the 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 WhoId field can reference Leads, Contacts, or Users
  • The WhatId field can reference Accounts, Opportunities, Cases, and other custom objects
Unfortunately, Qobra does not currently support polymorphic references due to their complex nature. When synchronizing objects that contain these fields, the references will not be properly resolved.

Workarounds

To handle this limitation, here are some suggested workarounds:
  1. 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__c
    • Opportunity__c
    • Lead__c
    Then use Process Builder or Flow to automatically populate these fields based on the WhatId/WhoId values.
  2. 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.
  3. Custom Junction Objects: For complex relationships, consider creating custom junction objects that explicitly define the relationships between your records.
Contact Qobra support for more information.