# Salesforce

Salesforce is a cloud-based CRM platform. You can use Salesforce data as a data source for replication. OAuth 2.0 Client Credentials is the only supported flow for new Salesforce connections, using the `client_credentials` grant.

Salesforce integration replicates data from your Salesforce account. When setting up a Salesforce integration, you can select one of the following Salesforce APIs to replicate your data:

* [Salesforce REST API v61.0](https://developer.salesforce.com/docs/atlas.en-us.250.0.api_rest.meta/api_rest/intro_rest.htm)
* [Salesforce Bulk API](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm)

See the [Schema](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#Schema) section for a list of objects available for replication.

## Preparing for authentication

To access your data, you need to authenticate the connection with your account credentials.

Information noteMake sure that the account you use has read access to the tables you want to fetch.

Before creating the Salesforce connection in Qlik Talend Cloud, confirm that:

* Your Salesforce org supports API access and you have API access enabled. See [REST API compatible editions](https://developer.salesforce.com/docs/atlas.en-us.250.0.api_rest.meta/api_rest/intro_rest_compatible_editions.htm). API access is enabled by default in Enterprise, Performance, Unlimited, and Developer editions.
* If you need help confirming API access for your org, see [Salesforce Help](https://help.salesforce.com/s/articleView?id=xcloud.users_add_products_subscription_management.htm&type=5) or contact your Salesforce account executive.

**Note:** You can’t create Connected Apps. Salesforce recommends using an External Client App instead. For more information, see [Salesforce Help](https://help.salesforce.com/s/articleView?id=005228017&type=1) and [External Client Apps](https://help.salesforce.com/s/articleView?id=xcloud.external_client_apps.htm&type=5).

To create, edit, or delete external client apps, you need admin permissions.

To create an integration user for the external client apps:

1. Log into your [Salesforce](https://login.salesforce.com/) account.

2. From Setup, search for and open Users.

3. Click New User, then enter the integration user details.

   Use an email address that you can access.

4. Set User License to Salesforce Integration.

5. Set Profile to Minimum Access - API only Integrations.

   This profile does not have access to certain Salesforce objects. Administrators might need to extend the object permissions set. For more information, see [Salesforce API Integration license release notes](https://help.salesforce.com/s/articleView?id=release-notes.rn_api_integration_license.htm&release=242&type=5).

6. Click Save.

To set up an external client app and retrieve your client ID and client secret:

1. Log into your [Salesforce](https://login.salesforce.com/) account.
2. From Setup, search for and open App Manager.
3. Select New External Client App and enter a name.
4. Set Distribution State to Local.
5. Enable OAuth Settings.
6. Select these OAuth scopes:
   * Manage user data via APIs (`api`)
   * Full access (`full`)
7. Set Callback URL to https://connector.qlik.com/auth/oauth/v3.htm.
8. Under Flow Enablement, enable Client Credentials Flow.
9. Click Create.
10. Under OAuth Flows and External Client App Enhancements, confirm Enable Client Credentials Flow is selected, then enter the integration username.
11. Set IP Relaxation to Relax IP restrictions, then click Save.
12. Open Settings &gt; Plugin Policies.
13. Open OAuth Settings and select Consumer Key and Secret. Copy your client ID and client secret.

To find the Salesforce instance URL:

1. Log into Salesforce as an administrator.
2. From Setup, search for and open My Domain.
3. Copy your current My Domain URL. Use this value as `instance_url` when you create the connection.

## Creating the connection

For more information, see [Connecting to SaaS applications](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Fill in the required connection properties.

2. Provide a name for the connection in Connection name.

3. Select Open connection metadata to define metadata for the connection when it has been created.

4. Click Create.

Connection settings

| Setting | Description |
| --- | --- |
| Data gateway | Select a Data Movement gateway if required by your use case.<br><br>Information note<br><br>This field is not available with the Qlik Talend Cloud Starter subscription, as it does not support Data Movement gateway. If you have another subscription tier and do not want to use Data Movement gateway, select None.<br><br>For information on the benefits of Data Movement gateway and use cases that require it, see [Qlik Data Gateway - Data Movement](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Start Date | Enter the date, in the format `MM/DD/YYYY`, from which the data must be replicated from your source to your target. |
| Production or Sandbox Environment | Select the type of Salesforce environment for this connection:<br><br><ul><li><span>Production Environment</span>: Connects to your production Salesforce org.</li><li><span>Sandbox Environment</span>: Connects to your Salesforce sandbox org.</li></ul> |
| API Type | Select the API type from the drop-down list:<br><br><ul><li>BULK (recommended): Best for large datasets and less frequent replication. Limited to 10,000 batches per rolling 24 hours. See <a href="https://developer.salesforce.com/docs/atlas.en-us.260.0.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_bulkapi.htm">Salesforce Bulk API limits</a>.</li><li>REST: Best for smaller datasets and frequent updates.</li></ul> |
| Max percentage of API quota to use | Percentage of your standard API quota Qlik Talend Cloud can use. If the limit is reached, replication pauses and resumes when quota is available.<br><br>If set to 80 and your quota is 10,000 calls/24 hours, Qlik Talend Cloud can use up to 8,000 calls across all connected apps.<br><br>API quota limits depend on your Salesforce subscription and edition. See [Salesforce API limits](https://developer.salesforce.com/docs/atlas.en-us.210.0.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm).<br><br>Note: Enter 80, not 80%. |
| Max percentage allowed per run | Percentage of your total API quota that Qlik Talend Cloud can use per replication job.<br><br>If set to 10 and your quota is 10,000 calls, Qlik Talend Cloud can use up to 1,000 calls per job (10,000 × 0.1).<br><br>Note: Enter 10, not 10%. |
| Client ID | Client ID. |
| Client Secret | Client secret. |
| Instance URL | Salesforce My Domain URL. |

## Unsupported objects in REST API

The following objects won’t be available for replications in Qlik Talend Cloud:

* Announcement
* CollaborationGroupRecord
* ContentDocumentLink
* ContentFolderMember
* DataStatistics
* EntityParticle
* FieldDefinition
* FlexQueueItem
* IdeaComment
* OwnerChangeOptionInfo
* PicklistValueInfo
* PlatformAction
* RelationshipDomain
* RelationshipInfo
* SearchLayout
* SiteDetail
* UserEntityAccess
* UserFieldAccess
* Vote
* Any `*ChangeEvent` object
* ActivityHistory
* AggregateResult
* AttachedContentDocument
* CombinedAttachment
* ContentBody
* EmailStatus
* FeedLike
* FeedTrackedChange
* FeedSignal
* FolderedContentDocument
* ListViewChartInstance
* LookedUpFromActivity
* Name
* NoteAndAttachment
* OpenActivity
* OutgoingEmail
* OutgoingEmailRelation
* OwnedContentDocument
* ProcessInstanceHistory
* UserRecordAccess

The unsupported objects list is not exhaustive. Salesforce might change the unsupported objects for the API as Salesforce continues to maintain and update their APIs.

## Unsupported objects in Bulk API

The following objects won’t be available for selection in Qlik Talend Cloud:

* AcceptedEventRelation
* AssetTokenEvent
* AttachedContentNote
* CaseStatus
* ContentFolderItem
* ContractStatus
* DeclinedEventRelation
* EventWhoRelation
* PartnerRole
* QuoteTemplateRichTextData
* RecentlyViewed
* SolutionStatus
* TaskPriority
* TaskWhoRelation
* TaskStatus
* UndecidedEventRelation

The unsupported objects list is not exhaustive. Salesforce might change the unsupported objects for the API as Salesforce continues to maintain and update their APIs.

## Schema

Information note

Schemas and naming conventions can change from version to version. It is recommended to verify your version before continuing.

The schema and info displayed below is for version 2.

To ensure we can provide you with up-to-date documentation, this section covers a few of the most popular tables that Salesforce integration offers.

See the [Salesforce Object Reference](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_list.htm) guide for info on objects not listed here, including the fields available in each object.

### Custom Salesforce object and field replication

Salesforce integration supports the replication of custom objects and fields.

Custom object and field names are appended with `__c` to make identification easier. For example: `AE_Assignment__c` or `Assignment_Group_Name__c`

Some custom fields are formula (calculated) fields. Their values are derived from other fields and can change without updating the record replication key (for example, `systemModStamp`).

With incremental replication, derived values can become stale in your destination if only source fields referenced by the formula change.

If you need formula-field freshness in Qlik Talend Cloud, use one of the following approaches:

* Recreate the formula logic in transformations (for example, joins, lookups, SQL, or expressions) so values are recalculated during processing.
* Run periodic full loads to refresh derived values when incremental updates are not enough. Consider API usage and destination processing impact before scheduling full refreshes.

The following patterns can help when recreating formula logic in your pipeline:

* Cross-object formula fields: if an `Opportunity` formula depends on `Account.Name`, replicate both objects and join on `Opportunity.AccountId = Account.Id` so the derived value is recalculated from the related account field.
* Same-object formula logic: for a weighted value based on `Amount` and `Probability`, recalculate with SQL or an expression (for example, `Amount * (Probability / 100)`) during transformation.

Use periodic full loads when you need a full refresh of derived values across previously replicated records. This can improve freshness, but it may increase Salesforce API usage.

Depending on your destination, table and column names may not appear as they are outlined below.

### account

The `account` table contains info about the individual accounts (organizations and persons) involved with your business. This could be a customer, a competitor, a partner, and so on.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | systemModStamp |
| **Useful links** | [Salesforce documentation](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_account.htm#!) |

account table foreign keys

| Join account with | on |
| --- | --- |
| [contact](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#contact) | ```<br>account.id = contact.accountId<br>```<br><br>```<br>account.ownerId = contact.ownerId<br>``` |
| [lead](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#lead) | ```<br>account.id = lead.convertedAccountId<br>```<br><br>```<br>account.ownerId = lead.ownerId<br>``` |
| [opportunity](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#opportunity) | ```<br>account.id = opportunity.accountId<br>```<br><br>```<br>account.ownerId = opportunity.ownerId<br>``` |
| [user](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#user) | ```<br>account.id = user.accountId<br>```<br><br>```<br>account.ownerId = user.id<br>```<br><br>```<br>account.ownerId = user.delegatedApproverId<br>```<br><br>```<br>account.ownerId = user.managerId<br>``` |

account table schema

| **accountNumber**<br><br><br>STRING |
| --- |
| **accountSource**<br><br><br>STRING |
| **annualRevenue**<br><br><br>NUMBER |
| **billingAddress**<br><br><br>STRING |
| **billingCity**<br><br><br>STRING |
| **billingCountry**<br><br><br>STRING |
| **billingCountryCode**<br><br><br>STRING |
| **billingGeocodeAccuracy**<br><br><br>STRING |
| **billingLatitude**<br><br><br>INTEGER |
| **billingLongitude**<br><br><br>INTEGER |
| **billingPostalCode**<br><br><br>STRING |
| **billingState**<br><br><br>STRING |
| **billingStateCode**<br><br><br>STRING |
| **billingStreet**<br><br><br>STRING |
| **cleanStatus**<br><br><br>STRING |
| **connectionReceivedId**<br><br><br>STRING |
| **description**<br><br><br>STRING |
| **dunsNumber**<br><br><br>STRING |
| **fax**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **industry**<br><br><br>STRING |
| **isCustomerPortal**<br><br><br>BOOLEAN |
| **isDeleted**<br><br><br>BOOLEAN |
| **isPartner**<br><br><br>BOOLEAN |
| **isPersonAccount**<br><br><br>BOOLEAN |
| **jigsaw**<br><br><br>STRING |
| **lastActivityDate**<br><br><br>DATE-TIME |
| **lastReferenceDate**<br><br><br>DATE-TIME |
| **lastViewedDate**<br><br><br>DATE-TIME |
| **masterRecordId**<br><br><br>STRING |
| **naicsCode**<br><br><br>STRING |
| **naicsDescription**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **numberOfEmployees**<br><br><br>NUMBER |
| **operatingHoursId**<br><br><br>STRING |
| **ownerId**<br><br><br>STRING |
| **ownership**<br><br><br>STRING |
| **parentId**<br><br><br>STRING |
| **phone**<br><br><br>STRING |
| **photoUrl**<br><br><br>STRING |
| **rating**<br><br><br>STRING |
| **recordTypeId**<br><br><br>STRING |
| **salutation**<br><br><br>STRING |
| **shippingAddress**<br><br><br>STRING |
| **shippingCity**<br><br><br>STRING |
| **shippingCountry**<br><br><br>STRING |
| **shippingCountryCode**<br><br><br>STRING |
| **shippingGeocodeAccuracy**<br><br><br>STRING |
| **shippingLatitude**<br><br><br>INTEGER |
| **shippingLongitude**<br><br><br>INTEGER |
| **shippingPostalCode**<br><br><br>STRING |
| **shippingState**<br><br><br>STRING |
| **shippingStateCode**<br><br><br>STRING |
| **shippingStreet**<br><br><br>STRING |
| **sic**<br><br><br>STRING |
| **sicDesc**<br><br><br>STRING |
| **site**<br><br><br>STRING |
| **systemModStamp**<br><br><br>DATE-TIME |
| **tickerSymbol**<br><br><br>STRING |
| **tradeStyle**<br><br><br>STRING |
| **type**<br><br><br>STRING |
| **website**<br><br><br>STRING |
| **yearStarted**<br><br><br>STRING |

### contact

The `contact` table contains info about your contacts, who are individuals associated with accounts in your Salesforce instance.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | systemModStamp |
| **Useful links** | [Salesforce documentation](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contact.htm) |

contact table foreign keys

| Join contact with | on |
| --- | --- |
| [account](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#account) | ```<br>contact.accountId = account.id<br>```<br><br>```<br>contact.ownerId = account.ownerId<br>``` |
| [lead](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#lead) | ```<br>contact.accountId = lead.convertedAccountId<br>```<br><br>```<br>contact.id = lead.convertedContactId<br>```<br><br>```<br>contact.ownerId = lead.ownerId<br>``` |
| [opportunity](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#opportunity) | ```<br>contact.accountId = opportunity.accountId<br>```<br><br>```<br>contact.ownerId = opportunity.ownerId<br>``` |
| [user](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#user) | ```<br>contact.accountId = user.accountId<br>```<br><br>```<br>contact.id = user.contactId<br>```<br><br>```<br>contact.ownerId = user.id<br>```<br><br>```<br>contact.ownerId = user.delegatedApproverId<br>```<br><br>```<br>contact.ownerId = user.managerId<br>``` |

contact table schema

| **accountId**<br><br><br>STRING |
| --- |
| **assistantName**<br><br><br>STRING |
| **assistantPhone**<br><br><br>STRING |
| **birthdate**<br><br><br>DATE |
| **canAllowPortalSelfReg**<br><br><br>BOOLEAN |
| **cleanStatus**<br><br><br>STRING |
| **connectionReceivedId**<br><br><br>STRING |
| **connectionSentId**<br><br><br>STRING |
| **department**<br><br><br>STRING |
| **description**<br><br><br>STRING |
| **doNotCall**<br><br><br>BOOLEAN |
| **email**<br><br><br>STRING |
| **emailBouncedDate**<br><br><br>DATE-TIME |
| **emailBouncedReason**<br><br><br>STRING |
| **fax**<br><br><br>STRING |
| **firstName**<br><br><br>STRING |
| **hasOptedOutOfEmail**<br><br><br>BOOLEAN |
| **hasOptedOutOfFax**<br><br><br>BOOLEAN |
| **homePhone**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **isDeleted**<br><br><br>BOOLEAN |
| **isEmailBounced**<br><br><br>BOOLEAN |
| **isPersonAccount**<br><br><br>BOOLEAN |
| **jigsaw**<br><br><br>STRING |
| **lastActivityDate**<br><br><br>DATE-TIME |
| **lastName**<br><br><br>STRING |
| **lastReferenceDate**<br><br><br>DATE-TIME |
| **lastViewedDate**<br><br><br>DATE-TIME |
| **leadSource**<br><br><br>STRING |
| **mailingAddress**<br><br><br>STRING |
| **mailingCity**<br><br><br>STRING |
| **mailingCountry**<br><br><br>STRING |
| **mailingCountryCode**<br><br><br>STRING |
| **mailingGeocodeAccuracy**<br><br><br>STRING |
| **mailingLatitude**<br><br><br>INTEGER |
| **mailingLongitude**<br><br><br>INTEGER |
| **mailingPostalCode**<br><br><br>STRING |
| **mailingState**<br><br><br>STRING |
| **mailingStateCode**<br><br><br>STRING |
| **mailingStreet**<br><br><br>STRING |
| **masterRecordId**<br><br><br>STRING |
| **middleName**<br><br><br>STRING |
| **mobilePhone**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **otherAddress**<br><br><br>STRING |
| **otherCity**<br><br><br>STRING |
| **otherCountry**<br><br><br>STRING |
| **otherCountryCode**<br><br><br>STRING |
| **otherGeocodeAccuracy**<br><br><br>STRING |
| **otherLatitude**<br><br><br>INTEGER |
| **otherLongitude**<br><br><br>INTEGER |
| **otherPhone**<br><br><br>STRING |
| **otherPostalCode**<br><br><br>STRING |
| **otherState**<br><br><br>STRING |
| **otherStateCode**<br><br><br>STRING |
| **otherStreet**<br><br><br>STRING |
| **ownerId**<br><br><br>STRING |
| **phone**<br><br><br>STRING |
| **photoUrl**<br><br><br>STRING |
| **recordTypeId**<br><br><br>STRING |
| **reportsToId**<br><br><br>STRING |
| **salutation**<br><br><br>STRING |
| **suffix**<br><br><br>STRING |
| **systemModStamp**<br><br><br>DATE-TIME |
| **title**<br><br><br>STRING |

### lead

The `lead` table contains info about your leads, who are prospects or potential Opportunities.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | systemModStamp |
| **Useful links** | [Salesforce documentation](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_lead.htm) |

lead table foreign keys

| Join lead with | on |
| --- | --- |
| [account](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#account) | ```<br>lead.convertedAccountId = account.id<br>```<br><br>```<br>lead.ownerId = account.ownerId<br>``` |
| [contact](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#contact) | ```<br>lead.convertedAccountId = contact.accountId<br>```<br><br>```<br>lead.convertedContactId = contact.id<br>```<br><br>```<br>lead.ownerId = contact.ownerId<br>``` |
| [opportunity](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#opportunity) | ```<br>lead.convertedAccountId = opportunity.accountId<br>```<br><br>```<br>lead.convertedOpportunityId = opportunity.id<br>```<br><br>```<br>lead.ownerId = opportunity.ownerId<br>``` |
| [user](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#user) | ```<br>lead.convertedAccountId = user.accountId<br>```<br><br>```<br>lead.convertedContactId = user.contactId<br>```<br><br>```<br>lead.ownerId = user.id<br>```<br><br>```<br>lead.ownerId = user.delegatedApproverId<br>```<br><br>```<br>lead.ownerId = user.managerId<br>``` |

lead table schema

| **PostalCode**<br><br><br>STRING |
| --- |
| **address**<br><br><br>STRING |
| **annualRevenue**<br><br><br>NUMBER |
| **city**<br><br><br>STRING |
| **cleanStatus**<br><br><br>STRING |
| **company**<br><br><br>STRING |
| **companyDunsNumber**<br><br><br>STRING |
| **connectionReceivedId**<br><br><br>STRING |
| **convertedAccountId**<br><br><br>STRING |
| **convertedContactId**<br><br><br>STRING |
| **convertedDate**<br><br><br>DATE-TIME |
| **convertedOpportunityId**<br><br><br>STRING |
| **country**<br><br><br>STRING |
| **countryCode**<br><br><br>STRING |
| **currencyIsoCode**<br><br><br>STRING |
| **description**<br><br><br>STRING |
| **division**<br><br><br>STRING |
| **email**<br><br><br>STRING |
| **emailBouncedDate**<br><br><br>DATE-TIME |
| **emailBouncedReason**<br><br><br>STRING |
| **fax**<br><br><br>STRING |
| **firstName**<br><br><br>STRING |
| **geocodeAccuracy**<br><br><br>STRING |
| **hasOptedOutOfEmail**<br><br><br>BOOLEAN |
| **id**<br><br><br>STRING |
| **industry**<br><br><br>STRING |
| **isConverted**<br><br><br>BOOLEAN |
| **isDeleted**<br><br><br>BOOLEAN |
| **isUnreadByOwner**<br><br><br>BOOLEAN |
| **jigsaw**<br><br><br>STRING |
| **lastActivityDate**<br><br><br>DATE-TIME |
| **lastName**<br><br><br>STRING |
| **lastReferenceDate**<br><br><br>DATE-TIME |
| **lastViewedDate**<br><br><br>DATE-TIME |
| **latitude**<br><br><br>INTEGER |
| **leadSource**<br><br><br>STRING |
| **longitude**<br><br><br>INTEGER |
| **masterRecordId**<br><br><br>STRING |
| **middleName**<br><br><br>STRING |
| **mobilePhone**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **numberOfEmployees**<br><br><br>INTEGER |
| **ownerId**<br><br><br>STRING |
| **partnerAccountId**<br><br><br>STRING |
| **phone**<br><br><br>STRING |
| **photoUrl**<br><br><br>STRING |
| **rating**<br><br><br>STRING |
| **recordTypeId**<br><br><br>STRING |
| **salutation**<br><br><br>STRING |
| **scoreIntelligenceId**<br><br><br>STRING |
| **state**<br><br><br>STRING |
| **stateCode**<br><br><br>STRING |
| **status**<br><br><br>STRING |
| **street**<br><br><br>STRING |
| **suffix**<br><br><br>STRING |
| **systemModStamp**<br><br><br>DATE-TIME |
| **title**<br><br><br>STRING |
| **website**<br><br><br>STRING |

### opportunity

The `opportunity` table contains info about your opportunities, which are sales or pending deals.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | systemModStamp |
| **Useful links** | [Salesforce documentation](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_opportunity.htm) |

opportunity table foreign keys

| Join opportunity with | on |
| --- | --- |
| [account](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#account) | ```<br>opportunity.accountId = account.id<br>```<br><br>```<br>opportunity.ownerId = account.ownerId<br>``` |
| [contact](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#contact) | ```<br>opportunity.accountId = contact.accountId<br>```<br><br>```<br>opportunity.ownerId = contact.ownerId<br>``` |
| [lead](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#lead) | ```<br>opportunity.accountId = lead.convertedAccountId<br>```<br><br>```<br>opportunity.id = lead.convertedOpportunityId<br>```<br><br>```<br>opportunity.ownerId = lead.ownerId<br>``` |
| [user](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#user) | ```<br>opportunity.accountId = user.accountId<br>```<br><br>```<br>opportunity.ownerId = user.id<br>```<br><br>```<br>opportunity.ownerId = user.delegatedApproverId<br>```<br><br>```<br>opportunity.ownerId = user.managerId<br>``` |

opportunity table schema

| **accountId**<br><br><br>STRING |
| --- |
| **amount**<br><br><br>NUMBER |
| **campaignId**<br><br><br>STRING |
| **closeDate**<br><br><br>DATE-TIME |
| **connectionReceivedId**<br><br><br>STRING |
| **connectionSentId**<br><br><br>STRING |
| **currencyIsoCode**<br><br><br>STRING |
| **description**<br><br><br>STRING |
| **expectedRevenue**<br><br><br>NUMBER |
| **fiscal**<br><br><br>STRING |
| **fiscalQuarter**<br><br><br>INTEGER |
| **fiscalYear**<br><br><br>INTEGER |
| **forecastCategory**<br><br><br>STRING |
| **forecastCategoryName**<br><br><br>STRING |
| **hasOpenActivity**<br><br><br>BOOLEAN |
| **hasOpportunityLineItem**<br><br><br>BOOLEAN |
| **hasOverdueTask**<br><br><br>BOOLEAN |
| **id**<br><br><br>STRING |
| **isClosed**<br><br><br>BOOLEAN |
| **isDeleted**<br><br><br>BOOLEAN |
| **isExcludedFromTerritory2Filter**<br><br><br>BOOLEAN |
| **isSplit**<br><br><br>BOOLEAN |
| **isWon**<br><br><br>BOOLEAN |
| **lastActivityDate**<br><br><br>DATE-TIME |
| **lastReferenceDate**<br><br><br>DATE-TIME |
| **lastViewedDate**<br><br><br>DATE-TIME |
| **leadSource**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **nextStep**<br><br><br>STRING |
| **ownerId**<br><br><br>STRING |
| **pricebook2Id**<br><br><br>STRING |
| **pricebookId**<br><br><br>STRING |
| **probability**<br><br><br>INTEGER |
| **recordTypeId**<br><br><br>STRING |
| **stageName**<br><br><br>STRING |
| **syncedQuoteId**<br><br><br>STRING |
| **systemModStamp**<br><br><br>DATE-TIME |
| **territory2Id**<br><br><br>STRING |
| **totalOpportunityQuantity**<br><br><br>NUMBER |
| **type**<br><br><br>STRING |

### user

The `user` table contains info about the users in your organization.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | systemModStamp |
| **Useful links** | [Salesforce documentation](https://developer.salesforce.com/Content/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_user.htm) |

user table foreign keys

| Join user with | on |
| --- | --- |
| [account](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#account) | ```<br>user.accountId = account.id<br>```<br><br>```<br>user.id = account.ownerId<br>```<br><br>```<br>user.delegatedApproverId = account.ownerId<br>```<br><br>```<br>user.managerId = account.ownerId<br>``` |
| [contact](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#contact) | ```<br>user.accountId = contact.accountId<br>```<br><br>```<br>user.contactId = contact.id<br>```<br><br>```<br>user.id = contact.ownerId<br>```<br><br>```<br>user.delegatedApproverId = contact.ownerId<br>```<br><br>```<br>user.managerId = contact.ownerId<br>``` |
| [lead](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#lead) | ```<br>user.accountId = lead.convertedAccountId<br>```<br><br>```<br>user.contactId = lead.convertedContactId<br>```<br><br>```<br>user.id = lead.ownerId<br>```<br><br>```<br>user.delegatedApproverId = lead.ownerId<br>```<br><br>```<br>user.managerId = lead.ownerId<br>``` |
| [opportunity](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Salesforce-v2.htm#opportunity) | ```<br>user.accountId = opportunity.accountId<br>```<br><br>```<br>user.id = opportunity.ownerId<br>```<br><br>```<br>user.delegatedApproverId = opportunity.ownerId<br>```<br><br>```<br>user.managerId = opportunity.ownerId<br>``` |

user table schema

| **aboutMe**<br><br><br>STRING |
| --- |
| **accountId**<br><br><br>STRING |
| **address**<br><br><br>STRING |
| **alias**<br><br><br>STRING |
| **badgeText**<br><br><br>STRING |
| **bannerPhotoUrl**<br><br><br>STRING |
| **callCenterId**<br><br><br>STRING |
| **city**<br><br><br>STRING |
| **communityNickname**<br><br><br>STRING |
| **companyName**<br><br><br>STRING |
| **contactId**<br><br><br>STRING |
| **country**<br><br><br>STRING |
| **countryCode**<br><br><br>STRING |
| **defaultCurrencyIsoCode**<br><br><br>STRING |
| **defaultDivision**<br><br><br>STRING |
| **defaultGroupNotificationFrequency**<br><br><br>STRING |
| **delegatedApproverId**<br><br><br>STRING |
| **department**<br><br><br>STRING |
| **digestFrequency**<br><br><br>STRING |
| **division**<br><br><br>STRING |
| **email**<br><br><br>STRING |
| **emailEncodingKey**<br><br><br>STRING |
| **emailPreferencesAutoBcc**<br><br><br>BOOLEAN |
| **employeeNumber**<br><br><br>STRING |
| **extension**<br><br><br>STRING |
| **fax**<br><br><br>STRING |
| **federationIdentifier**<br><br><br>STRING |
| **firstName**<br><br><br>STRING |
| **forecastEnabled**<br><br><br>BOOLEAN |
| **fullPhotoUrl**<br><br><br>STRING |
| **id**<br><br><br>STRING |
| **isActive**<br><br><br>BOOLEAN |
| **isPortalEnabled**<br><br><br>BOOLEAN |
| **isPortalSelfRegistered**<br><br><br>BOOLEAN |
| **isPrmSuperUser**<br><br><br>BOOLEAN |
| **isProfilePhotoActive**<br><br><br>BOOLEAN |
| **jigsawImportLimitOverride**<br><br><br>INTEGER |
| **languageLocaleKey**<br><br><br>STRING |
| **lastLoginDate**<br><br><br>DATE-TIME |
| **lastName**<br><br><br>STRING |
| **lastReferenceDate**<br><br><br>DATE-TIME |
| **lastViewedDate**<br><br><br>DATE-TIME |
| **latitude**<br><br><br>INTEGER |
| **localeSidKey**<br><br><br>STRING |
| **longitude**<br><br><br>INTEGER |
| **manager**<br><br><br>STRING |
| **managerId**<br><br><br>STRING |
| **mediumBannerPhotoUrl**<br><br><br>STRING |
| **middleName**<br><br><br>STRING |
| **mobilePhone**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **offlineTrialExpirationDate**<br><br><br>DATE-TIME |
| **phone**<br><br><br>STRING |
| **portalRole**<br><br><br>STRING |
| **postalCode**<br><br><br>STRING |
| **profileId**<br><br><br>STRING |
| **receivesAdminInfoEmails**<br><br><br>BOOLEAN |
| **receivesInfoEmails**<br><br><br>BOOLEAN |
| **senderEmail**<br><br><br>STRING |
| **senderName**<br><br><br>STRING |
| **signature**<br><br><br>STRING |
| **smallBannerPhotoUrl**<br><br><br>STRING |
| **smallPhotoUrl**<br><br><br>STRING |
| **state**<br><br><br>STRING |
| **stateCode**<br><br><br>STRING |
| **street**<br><br><br>STRING |
| **suffix**<br><br><br>STRING |
| **systemModStamp**<br><br><br>DATE-TIME |
| **timeZoneSidKey**<br><br><br>STRING |
| **title**<br><br><br>STRING |
| **userPermissionsCallCenterAutoLogin**<br><br><br>BOOLEAN |
| **userPermissionsChatterAnswersUser**<br><br><br>BOOLEAN |
| **userPermissionsInteractionUser**<br><br><br>BOOLEAN |
| **userPermissionsJigsawProspectingUser**<br><br><br>BOOLEAN |
| **userPermissionsKnowledgeUser**<br><br><br>BOOLEAN |
| **userPermissionsLiveAgentUser**<br><br><br>BOOLEAN |
| **userPermissionsMarketingUser**<br><br><br>BOOLEAN |
| **userPermissionsMobileUser**<br><br><br>BOOLEAN |
| **userPermissionsOfflineUser**<br><br><br>BOOLEAN |
| **userPermissionsSFContentUser**<br><br><br>BOOLEAN |
| **userPermissionsSiteforceContributorUser**<br><br><br>BOOLEAN |
| **userPermissionsSiteforcePublisherUser**<br><br><br>BOOLEAN |
| **userPermissionsSupportUser**<br><br><br>BOOLEAN |
| **userPermissionsWorkDotComeUserFeature**<br><br><br>BOOLEAN |
| **userPreferencesAcitivityRemindersPopup**<br><br><br>BOOLEAN |
| **userPreferencesApexPagesDeveloperMode**<br><br><br>BOOLEAN |
| **userPreferencesContentEmailAsAndWhen**<br><br><br>BOOLEAN |
| **userPreferencesContentNoEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisCommentAfterLikeEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisMentionsCommentEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisProfPostCommentEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableAllFeedsEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableBookmarkEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableChangeCommentEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableEndorsementEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableFeedbackEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableFileShareNotificationsForApi**<br><br><br>BOOLEAN |
| **userPreferencesDisableFollowersEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableLaterCommentEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableLikeEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableMentionsPostEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableMessageEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableProfilePostEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableRewardEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableSharePostEmail**<br><br><br>BOOLEAN |
| **userPreferencesDisableWorkEmail**<br><br><br>BOOLEAN |
| **userPreferencesEnableAutoSubForFeeds**<br><br><br>BOOLEAN |
| **userPreferencesEventRemindersCheckboxDefault**<br><br><br>BOOLEAN |
| **userPreferencesHideBiggerPhotoCallout**<br><br><br>BOOLEAN |
| **userPreferencesHideCSNDesktopTask**<br><br><br>BOOLEAN |
| **userPreferencesHideCSNGetChatterMobileTask**<br><br><br>BOOLEAN |
| **userPreferencesHideChatterOnboardingSplash**<br><br><br>BOOLEAN |
| **userPreferencesHideHideSecondChatterOnboardingSplash**<br><br><br>BOOLEAN |
| **userPreferencesHideS1BrowserUI**<br><br><br>BOOLEAN |
| **userPreferencesHideSfxWelcomeMat**<br><br><br>BOOLEAN |
| **userPreferencesJigsawListUser**<br><br><br>BOOLEAN |
| **userPreferencesLightningExperiencePreferred**<br><br><br>BOOLEAN |
| **userPreferencesPathAssistantCollapsed**<br><br><br>BOOLEAN |
| **userPreferencesReminderSoundOff**<br><br><br>BOOLEAN |
| **userPreferencesShowCityToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowCityToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowCountryToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowCountryToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowEmailToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowEmailToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowFaxToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowFaxToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowManagerToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowManagerToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowMobilePhoneToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowMobilePhoneToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowPostalCodeToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowPostalCodeToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowProfilePicToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowProfilePicToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowStateToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowStateToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowStreetAddressToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowStreetAddressToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowTitleToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowTitleToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowWorkPhoneToExternalUsers**<br><br><br>BOOLEAN |
| **userPreferencesShowWorkPhoneToGuestUsers**<br><br><br>BOOLEAN |
| **userPreferencesSortFeedByComment**<br><br><br>BOOLEAN |
| **userPreferencesTaskRemindersCheckboxDefault**<br><br><br>BOOLEAN |
| **userRoleId**<br><br><br>STRING |
| **userType**<br><br><br>STRING |
| **username**<br><br><br>STRING |