Thank you for contacting our Skyvia Team!
Are you talking about package 76062 "Upsert Invoice__c step 4"?
If yes, this package is not properly configured. This package is confgured to perform UPSERT here. Salesforce offers native support for UPSERT and performs UPSERT by an External ID field. If you do not want to use native External ID support, you can use UPSERT by using primary key. In this case, please note the following information:
If ID is set, package performs UPDATE even if ID is incorrect. If there is a NULL value instead of the ID, package performs INSERT and ID is generated automatically. I.e. if there is no such value in the source table or if it is a lookup that returns NULL, the INSERT operation will be performed.
In your case, you are using simple Column mapping, such as ["target": "Id","source":"Street2"] or ["target": "Id","source": "Freshbook_Invoice_ID__c"]. With such mapping, in most cases Skyvia will perform UPDATE or produce an error.
If you do not have ID values in your source table or file, you can perform UPSERT even without knowing the ID values. For this, you can use Lookup Mapping for ID/PK columns and get the IDs or PK values from the target object itself by some other field that uniquely identifies a record. To use the Lookup mapping, you need to have a column (or a set of columns) that uniquely identifies a record, other than the primary key.
For example, in your case this could be:
This Lookup will try to find and return Id of the record in the target Salesforce object where Freshbooks source Id field equals to Salesforce target Freshbooks_Invoice_ID__c field. If such Id is found and returned, Skyvia will perform UPDATE. If such Id if not found, Lookup will return null and Skyvia will perform INSERT.
All of these comments apply to all the of your packages with UPSERT.