External source sync allows you to bring information from Airtable bases and other external tools into a single, centralized table. This feature will be available for all enterprise customers.
This article covers how to sync Salesforce report data to an Airtable base. If you haven’t set up a sync before, we recommend first reading the Sync - Basic setup article to become familiarized with how sync works.
IN THIS ARTICLEAdd a new synced table
Select a Salesforce account
Select fields to sync
Create synced table
Security and OAuth scopes
Add a new synced table
Start by clicking the + symbol next to your list of tables. Then, under “Sync data from”, select the Salesforce option.’’
Select a Salesforce account
Select an existing Salesforce account (if you’ve already connected to Salesforce), or link to a new Salesforce account. We’ll ask you to allow Airtable access to your Salesforce account.
Once you link to the account, select that account to use to create the synced table. You’ll then be able to choose a report and unique ID column within the report.
Choose a report
When you choose a report, we strongly recommend choosing a report with filters that won’t change. Whenever a report’s filters are changed in Salesforce, records that no longer match the filters are deleted, along with any additions made in Airtable.
For example, if you’ve synced a Salesforce report that contains only open opportunities, and one of those opportunities is closed (so it no longer meets the filter), the associated Airtable record will be deleted along with any record comments and activity, and other field data that may have been added. If that same opportunity moves back to open, a new Airtable record will be created.
If you’ve unintentionally lost Airtable records due to a changed filter, we may be able to help. Please reach out to our support team to request help.
Choose a unique ID column
For some types of reports, you may be asked to choose a unique ID field. This is the field in the report that will allow Airtable to uniquely identify that row in Salesforce. For reports where the unique ID is automatically selected for you, you won’t see an option to change it.
When you choose the unique ID column in Salesforce, choose an ID column that is unique and won’t change. This column is how Airtable identifies the original row in Salesforce. If that column’s value changes in Salesforce, the record will be deleted and re-created, and any additions made within Airtable will be lost.
As a result, we recommend choosing an ID column that is unlikely to change. If you’ve lost Airtable records due to a changed filter, we may be able to help. Please reach out to our support team to request help.
NOTEThe unique ID field cannot be changed after the synced table is created.
Select fields to sync
After clicking next, you’ll be presented with field configuration options. First, select what data you want to use for the “Primary field” of your table (the first field in the table). The value chosen for the primary field can be a different value than the unique ID field chosen in the previous step.
The primary field cannot be changed after the synced table is created.
Next, choose between two options to sync:
- All fields from the source view (Salesforce), including any fields added by Salesforce in the future.
- Specific fields from the source view (Salesforce).
If you choose to sync specific fields you’ll be shown a menu where you can toggle each individual field that you want to sync from Salesforce.
Create synced table
Before creating your synced table, there are Settings options that allow you choose how often you want to sync, and how to handle records deleted or hidden in the source (Salesforce).
- The frequency of syncing. Right now, the options are manual syncing and automatic syncing which happens around every hour for this particular Salesforce sync feature.
- Whether or not deleted records (rows from the Salesforce report) should be removed from the Airtable table. By default, deleted rows will be removed.
Once you’ve selected your desired settings, click the “Create table” button. The sync
operation will retrieve rows from the selected Salesforce report and generate Airtable records. If the report has groupings, those groupings will also be automatically added to the main grid view of the synced table.
Security and OAuth scopes
The most important scope listed here is api. Unfortunately, Salesforce does not have very granular OAuth scopes, and api is the minimal scope required to view and run reports. The OAuth consent screen will look something like this:
Airtable will only have access to the reports that the user who connected the Salesforce sync has access to. Additionally, the user must have both the View and Run Report permissions on any reports that they wish to sync. If the user who connected a Salesforce sync leaves the company and their Salesforce account gets deactivated, the sync will stop working.
NOTEThere is no separate plugin or app that needs to be installed on the user’s Salesforce instance. The data that we retrieve from Salesforce’s API is transmitted securely via HTTPS and will not be used for any purpose other than the synced table.
|Scope name||Scope purpose|
||Basic user info|
||To get a refresh token|
||Regular api access for "regular" data|
||Messaging capabilities (e.g. to send messages to peers and customers)|
For more information on Salesforce scopes, check out Salesforce's documentation here.
What is the maximum number of syncs per Salesforce account?
The number of synced tables your organization can have will range from 500 (if all of the reports have 2000 or fewer rows) to 100 (if all the reports have up to 10,000 rows). Because the maximum number of tables is determined by how much Salesforce API quota is used by automatic syncs (see next FAQ question) you can raise this number by setting some syncs to update manually.
I’m seeing an error message that says my sync is paused because my “Salesforce instance reached its total hourly API quota”. What’s going on?
This error message can appear if you have too many Salesforce synced tables querying the same Salesforce instance.
To get this table syncing again, you can manually trigger a sync using the Sync Now button. This table will resume syncing automatically again after a manually triggered sync completes successfully. However, you may continue to encounter this error intermittently if you have many separate synced tables that connect to your Salesforce instance. To reduce the incidence of this error, you can consider setting more syncs in your organization to update manually instead of automatically.
For context, Airtable uses the Salesforce’s reporting APIs to access data from your Salesforce instance. The main reporting API used is the synchronous API, which is limited to 500 report executions per hour across all products using the API -- not just Airtable. Each report syncs once an hour if set on Automatic sync, and every 2,000 rows in a report will count as one execution (so a 10,000 row report will count as five executions.) This is a Salesforce-imposed API limitation, but you can work around it by setting some syncs to update manually.
Why am I seeing some text field values get truncated?
Unfortunately, this is a limitation of Salesforce's API. Reports will truncate text values to at most 255 characters, and in some cases, the values will be truncated even further.
What type of access will Airtable have to Salesforce?
Airtable will only have access to the reports that the user who connected the Salesforce sync has access to. Additionally, the user must have both the View and Run Report permissions on any reports that they wish to sync.
What happens to the sync if the Salesforce account used becomes deactivated?
The sync will stop working if the connected Salesforce account is deactivated.
How is data transmitted from Salesforce?
The data that we retrieve from Salesforce’s API is transmitted securely via HTTPS and is not used for any purpose other than syncing data to the table.
What is the maximum number of rows and columns that can be synced?
There is a limit of 10,000 rows and 100 columns that can be synced to ensure consistent performance. If the number of rows in your report still surpasses this limit, we recommend working around it by choosing more specific filters. Additionally, if there are multiple duplicate values in the unique ID column of the report, it’s possible that fewer than 10,000 rows will be synced.
Are joined reports supported?
Is grouping supported?
Salesforce allows reports to have up to 2 levels of row-wise grouping and 2 levels of column-wise grouping for a total of 4 levels of grouping. Only the first 3 of those grouping levels will be considered by Airtable. If a user has an existing synced report and the user updates the groupings for that report in Salesforce, Airtable will not update its grouping settings for the main view of the synced table.
I’m seeing fewer records in Airtable than there are in my synced Salesforce report. What’s going on?
This can happen if you select a Unique ID column during the sync configuration that isn’t actually unique. This means that there are multiple rows in the report that have the same Unique ID value. If that happens, only one row with that same Unique ID value will be synced into Airtable.. To make sure all your data is synced from Salesforce to Airtable, please be sure to select a Unique ID that is both truly unique and won’t change.
Why do I need to pick a Unique ID, and why does it need to be unique and unchanging?
We use the Unique ID field to identify the Airtable record that corresponds to each row in the Salesforce report. If this Unique ID field isn’t actually unique within the report (i.e., if multiple rows have the same value for this column), or if the Unique ID value changes, it’s not possible to map data consistently across the two systems.