Overview
The purpose of this workflow is to capture leads from an Excel / XLSX file and use these to create and update contacts in Freshsales.
This workflow is fired every time a Excel / XLSX file is added to a Tray form:

Prerequisites
To implement this workflow, you will need the following:
- API credentials for Freshsales
- An Excel sheet with the correct column setup. You can use this template to set up your Excel file.
Getting Live
Click Use Template to deploy the template in your chosen Workspace. Then take the following steps to configure the workflow and start submitting leads for processing:
The workflow will then start the process of pulling the leads into Freshsales.
End Result

Key workflow steps
The following diagram gives a simplified breakdown of the key steps in the workflow:

Format XLSX
These steps convert the form data into an Excel format which is later converted into a Excel / XLSX file so that each row can be looped through and dealt with individually.
Standardization
This Object Helpers step transforms the Excel column headers into a standard object with fields in the following format:
First Name --> first_name
Last Name --> last_name
Lead Source --> lead_source
etc.
Note that the actual value for Lead Source ('Paid Search', 'Referrals' etc.) is mapped according to the data mapping section above.
For each lead we will then have a simple object which can be easily accessed by later Freshsales steps using jsonpaths such as $.steps.object-helpers-1.result.first_name:

Email validation
The lead’s email address is validated for the appropriate user@domain.com format.
Create / Update contacts
A search is made for an existing contact in Freshsales using the lead’s email address as the unique identifier.
If a Freshsales contact exists, update the contact record.
If a Freshsales contact does not exist, create a new contact record using the standard object