This article examines common options when integrating with Salesforce as a destination app.
- For a full tutorial that retrieves Salesforce records, see Export data from Salesforce
- For model integrations, see the celigo.com Salesforce Marketplace
- Create an import
- Import settings: How would you like the records imported?
- Import settings: Advanced
- Import mapping
- From the Resources menu, select Imports.
- On the resulting Imports page, click + Create import.
- From the Application list, select Salesforce.
- The Create import pane then asks you to describe your new import. Provide at least the required settings, and click Next.
- Connection (required): Select an existing Salesforce connection to apply or edit ( ) it; or click + to build a new connection.
- Name (required): Provide a proper name so that you can identify your import later.
- After clicking Next, the pane offers an additional General setting: One to many, which is set to No by default. Select Yes if the records being processed contain child records that should instead be treated as the main records – only during this import. (For example, select Yes if you are importing an Account object whose opportunities are in an array object, so that all the opportunities for the account will be imported.) When processing the records as One to many, enter the JSON Path to many, below.
After you have supplied all of the required import settings (continued below), save the import and apply it within one or more flows.
This section provides you with control and flexibility in importing records to Salesforce.
The simple object access protocol, or SOAP, is a web service architecture that allows you to create, retrieve, update, and delete records. integrator.io formats the data into XML according to the web services description language (WSDL) and sends the requests to Salesforce.
Using SOAP, you can submit 200 records at once in a single API request. Since there is a limit on the number of API requests per day to Salesforce, it is best to use the SOAP API when you are importing a large amount of data into Salesforce.
Salesforce supports a powerful REST API-based web service. Its advantages include ease of integration and speed, in the case of lightweight operations. REST services use built-in HTTP headers to carry metadata and GET, POST, PATCH and DELETE methods for performing common operations.
Select REST when you are sure that a smaller number of records will be imported into Salesforce or when you are performing a lookup, which processes a single request per operation.
The Salesforce Composite API can execute a series of API requests in a single call. The entire request counts as one towards daily API limits. If there is an error, then the entire composite request will be rolled back. This method is powerful for creating multiple types of sObjects in a single call.
If you are trying to import parent and child records (such as Opportunity and Opportunity Line Items), you can create them in a single composite API call. The main advantage of choosing Composite is that either your successful request will be committed or rolled back entirely if there is an error.
Choose any sObject that you want to import into Salesforce. In the drop-down list, you can see all of the standard and custom sObjects. Click the Refresh button ( ) to fetch the latest record types in your Salesforce account, if you don’t see the object that you’re looking for.
Select Insert if you are always creating records on the Salesforce side. You can provide criteria to ignore existing Salesforce records.
Select the Update operation if you are always modifying existing records. Then, you can provide criteria to find the data in Salesforce. You can also choose to ignore missing records, so that integrator.io will not throw an error if the records are not found.
Select Upsert if there is an external ID field on the Salesforce record and on the exported record. If there is already a record with the same external ID value in Salesforce, then the record will be updated, or one will be created with the external ID value.
Tip: While creating the custom field in Salesforce, you can mark it as an external ID type if the field can be used as a unique record identifier from the external system. You can also use record ID as external ID.
This operation will be very fast compared to Insert/update, since Upsert does not need to perform lookup criteria for each Salesforce record to determine if the operation is Insert/update. After the request to upsert with an external ID, Salesforce then handles the operation based on the ID to determine whether to insert or update the record.
Important: The Upsert operation is supported only for REST and SOAP APIs, but not for the Composite API.
Select Insert/update if you would like to update the record that matches the criteria or insert the record if there is no match found. This option is available for all API types.
Keep in mind that when you have an external ID in the exported data, it’s always better to choose Upsert instead. With Insert/update, integrator.io has extra overhead in performing an API request with criteria for each input record, which can slow performance.
Select Delete to permanently delete records in your Salesforce account that match the How can we find existing records? lookup criteria. You can suppress errors for records that don’t exist when the flow runs by checking Ignore missing records.
If you choose a file type sObject, such as Attachment, Document, or Content version, then the Delete import operation will remove files that match the filter you set.
- Delete with care; this operation is irreversible (not backed up and recoverable)
- An alternative strategy to prevent accidental deletions is to use an Update operation to make the record inactive
- Import mappings are not needed
Additional optional settings are available for Salesforce imports:
By default, a Salesforce connection’s Concurrency level is set to 5, which means that you can
submit five parallel requests to Salesforce.
In certain scenarios, adding a Concurrency ID lock template helps prevent duplicate records on the Salesforce side. For example, if you have a webhook real-time export where a record gets created and also updated within a short time, there might be chance of submitting the same record multiple times to the import system. In these cases, if you define a Concurrency ID lock template with handlebars expressions, then integrator.io will not send parallel requests for the same ID.
When your flow runs with errors, this field can help to make sure that all the errors in your job dashboard have a link to the target data in the import application (where possible).
This setting uses a handlebars template to generate the dynamic links based on the data being imported.
Note that the template you provide will run against your data after it has been mapped, and then again after it has been submitted to the import application, to maximize the ability to link to the right place.
For example, if you are updating a customer record in Shopify, you would most likely set this field to the following value:
Salesforce data mapping is similar to other destination apps, with standard, hardcoded, lookup, and multifield options. For the lookup, you can select Static or Dynamic.
When mapping fields imported with the Salesforce Composite API type, always perform a line ID lookup, based on the line-level operation that you want to be evaluated. For each matching line, the line-level record will be updated; otherwise, the line-level record will be created. See the following sample line-level lookup, configured to find an existing Opportunity Product.