An Import package with UPSERT operation will fit your scenario.
The Upsert operation in Skyvia requires you to map the target id field. It works in the following way:
1. If a non-null value is provided for the primary key mapping, then the update operation is performed, and Skyvia attempts to update a record with such primary key value.
2. If a null value is provided for primary key mapping, then the insert operation is performed.
For Upsert, every source row is either inserted or updated. And the number of records successfully inserted/updated in the target objects or tables is counted, even if a row was updated with the same values.
Please refer to:
https://skyvia.com/resources/docs/how_to_create_import_task.htm State Filter
Please follow the steps below to create such a package in your account:
1. Go to Integration tab. Click New -> Import;
2. Select source and target kinds and connections. Set Freshbooks for the source and Salesforce for the target;
3. Click Add task;
4. Select Client object for the Source. Set State Filter to ALL. Click Next;
5. Select Account object for the Target. Select Upsert Option;
6. Select the mapping reference type: "Use Primary key".
Also, Salesforce offers native support for Upsert when "Use External ID" is selected in the package. External ID determining whether to create a new record or update an existing one for the UPSERT operation. Please note that External ID in Salesforce is a custom field that has the “External ID” attribute and has to be created manually
7. Click Next;
8. Specify mapping for the required columns;
8.1. For 'Id' we recommend you to use the target lookup mapping with the "Set null when no match found" option for the id field. This lookup will compare emails in Freshbooks (Client) and Salesforce (Account). If such record is found, it will return its Id, and the record will be updated. If not, a null value is returned, and the record is inserted.
Mapping type - Target Lookup https://prnt.sc/kiwcz7
Lookup Object: Account
Resulted Column: Id
Lookup Key Column: email__c (Salesforce)
Column: Email (Freshbooks)
Select Option "Set null when no match found".
Note that email__c- is a custom field created manualy
For more information, please refer to skyvia.com/resources/docs/index.html?lookup_mapping.htm
8.2. Click the Name column and map it to the Username source column using column mapping.
8.3. Click the Email__c column and map it to the Email source column using column mapping.
9. Map other target fields that you need to the corresponding source Freshbooks fields using the default Column mapping.
10. Click Finish
11. Click Save and run the package.
Create distinct Import package for each of your Freshbooks connections.
Feel free to ask in case of any further questions