Freshsales

Usage Instructions

Integrate Freshsales (Freshworks CRM) into the workflow. Create, update, look up, and search contacts, manage deals and accounts, create leads on Freshsales Classic accounts, and log the work around them: follow-up tasks, appointments, notes, and sales activities such as AI calls or WhatsApp chats. Requires your Freshsales bundle alias and API key.

Actions

Freshsales Create Contact

Create a contact in Freshsales. Needs an email or a mobile number; email and mobile number are unique, so a duplicate fails.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
firstNamestringNoFirst name
lastNamestringNoLast name
emailstringNoPrimary email address. Creating needs an email or a mobile number.
mobileNumberstringNoMobile number. Unique per record.
workNumberstringNoWork phone number
jobTitlestringNoJob title
ownerIdstringNoID of the user to assign as owner
lifecycleStageIdstringNoID of the lifecycle stage
contactStatusIdstringNoID of the contact status
salesAccountIdstringNoID of an existing account to set as the primary account of the contact
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
contactobjectThe created contact
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Update Contact

Update fields of a Freshsales contact by ID, such as owner, lifecycle stage, phone, or custom fields. Only the fields you set change.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
contactIdstringYesID of the contact to update
firstNamestringNoFirst name
lastNamestringNoLast name
emailstringNoPrimary email address. Creating needs an email or a mobile number.
mobileNumberstringNoMobile number. Unique per record.
workNumberstringNoWork phone number
jobTitlestringNoJob title
ownerIdstringNoID of the user to assign as owner
lifecycleStageIdstringNoID of the lifecycle stage
contactStatusIdstringNoID of the contact status
salesAccountIdstringNoID of an existing account to set as the primary account of the contact
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
contactobjectThe updated contact
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Get Contact

Get a Freshsales contact by ID.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
contactIdstringYesID of the contact

Output

ParameterTypeDescription
contactobjectThe contact
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Search Contacts

Find Freshsales contacts. "lookup" finds exact matches on one field (email by default, or name or a custom field); "search" runs a keyword search over names and emails; "filter" runs a filtered search with filter rules.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
searchModestringYesHow to search: "lookup", "search", or "filter"
querystringNoValue to look up or keywords to search for (lookup and search modes)
lookupFieldstringNoField to match exactly in lookup mode: "email" (default), "name", or the internal name of a text, number, dropdown, or radio custom field
filterRulejsonNoFilter rules for filter mode, e.g. [{"attribute": "contact_email.email", "operator": "is_in", "value": "jane@example.com"}]
perPagenumberNoResults per page for search and filter modes (default 10, max 100)

Output

ParameterTypeDescription
contactsarrayMatching contacts. Keyword search returns only id, displayName, and email for each.
↳ customFieldsjsonCustom field values keyed by internal name
countnumberNumber of contacts returned
totalnumberTotal matches reported by filter mode

Freshsales Create Lead

Create a lead in a Freshsales Classic account (freshsales.io domain). Needs an email or a mobile number. Current Freshworks CRM accounts have no lead module; create a contact instead.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
firstNamestringNoFirst name
lastNamestringNoLast name
emailstringNoPrimary email address. Creating needs an email or a mobile number.
mobileNumberstringNoMobile number. Unique per record.
workNumberstringNoWork phone number
jobTitlestringNoJob title
ownerIdstringNoID of the user to assign as owner
companyNamestringNoName of the company the lead works for
leadStageIdstringNoID of the lead stage
leadSourceIdstringNoID of the lead source
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
leadobjectThe created lead
↳ companyobjectCompany of the lead

Freshsales Update Lead

Update fields of a Freshsales Classic lead by ID, such as owner, lead stage, or custom fields. Only the fields you set change.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
leadIdstringYesID of the lead to update
firstNamestringNoFirst name
lastNamestringNoLast name
emailstringNoPrimary email address. Creating needs an email or a mobile number.
mobileNumberstringNoMobile number. Unique per record.
workNumberstringNoWork phone number
jobTitlestringNoJob title
ownerIdstringNoID of the user to assign as owner
companyNamestringNoName of the company the lead works for
leadStageIdstringNoID of the lead stage
leadSourceIdstringNoID of the lead source
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
leadobjectThe updated lead
↳ companyobjectCompany of the lead

Freshsales Get Lead

Get a Freshsales Classic lead by ID.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
leadIdstringYesID of the lead

Output

ParameterTypeDescription
leadobjectThe lead
↳ companyobjectCompany of the lead

Freshsales Create Deal

Create a deal in Freshsales. Name, amount, and the account ID are required by Freshsales.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
namestringYesDeal name
amountnumberYesDeal value
salesAccountIdstringYesID of the account the deal belongs to. Freshsales requires an account on every deal.
dealStageIdstringNoID of the deal stage
dealPipelineIdstringNoID of the deal pipeline
ownerIdstringNoID of the user to assign as owner
expectedClosestringNoExpected close date, YYYY-MM-DD
contactIdsstringNoComma-separated contact IDs to link to the deal
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
dealobjectThe created deal
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Update Deal

Update fields of a Freshsales deal by ID, such as stage, amount, owner, or expected close date. Only the fields you set change.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
dealIdstringYesID of the deal to update
namestringNoDeal name
amountnumberNoDeal value
salesAccountIdstringNoID of the account the deal belongs to
dealStageIdstringNoID of the deal stage
dealPipelineIdstringNoID of the deal pipeline
ownerIdstringNoID of the user to assign as owner
expectedClosestringNoExpected close date, YYYY-MM-DD
contactIdsstringNoComma-separated contact IDs to link to the deal
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
dealobjectThe updated deal
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Get Deal

Get a Freshsales deal by ID.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
dealIdstringYesID of the deal

Output

ParameterTypeDescription
dealobjectThe deal
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Create Account

Create an account (a company, called a sales account in the API) in Freshsales.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
namestringYesAccount name
websitestringNoWebsite of the account
phonestringNoPhone number of the account
citystringNoCity of the account
countrystringNoCountry of the account
ownerIdstringNoID of the user to assign as owner
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_city": "Pune", "cf_is_active": true}
additionalFieldsjsonNoAny other documented attributes in Freshsales API naming, e.g. {"territory_id": 3}. Explicit fields win over the same keys here.

Output

ParameterTypeDescription
accountobjectThe created account
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Get Account

Get a Freshsales account (sales account) by ID.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
accountIdstringYesID of the account

Output

ParameterTypeDescription
accountobjectThe account
↳ customFieldsjsonCustom field values keyed by internal name

Freshsales Create Task

Create a follow-up task in Freshsales on a contact, account, deal, or Freshsales Classic lead, assigned to a user with a due date.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
titlestringYesTask title
dueDatestringYesWhen the task is due, ISO 8601, e.g. 2026-11-02T10:00:00Z
ownerIdstringYesID of the user the task is assigned to
targetTypestringYesType of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only)
targetIdstringYesID of the related record
descriptionstringNoTask description
taskTypeIdstringNoID of the task type
outcomeIdstringNoID of the task outcome

Output

ParameterTypeDescription
taskobjectThe created task

Freshsales Create Appointment

Book an appointment (meeting) in Freshsales on a contact, account, deal, or Freshsales Classic lead, with optional user and contact attendees.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
titlestringYesAppointment title
fromDatestringYesStart time, ISO 8601, e.g. 2026-11-02T10:30:00+05:30
endDatestringYesEnd time, ISO 8601
targetTypestringNoType of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only)
targetIdstringNoID of the related record
descriptionstringNoAppointment description
locationstringNoLocation or meeting link
timeZonestringNoTime zone name, e.g. "Chennai"
isAllDaybooleanNoWhether the appointment lasts all day
attendeeUserIdsstringNoComma-separated IDs of users to invite
attendeeContactIdsstringNoComma-separated IDs of contacts to invite

Output

ParameterTypeDescription
appointmentobjectThe created appointment
↳ attendeeIdsarrayIDs of the appointment attendee records

Freshsales Create Note

Add a note to a Freshsales contact, account, deal, or Freshsales Classic lead, such as a call summary or conversation recap.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
descriptionstringYesNote text
targetTypestringYesType of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only)
targetIdstringYesID of the related record

Output

ParameterTypeDescription
noteobjectThe created note

Freshsales Log Sales Activity

Log a sales activity in Freshsales, such as a call, WhatsApp chat, or demo, on a contact, account, deal, or Freshsales Classic lead.

Input

ParameterTypeRequiredDescription
domainstringYesBundle alias of the Freshsales account, e.g. "acme" or "acme.myfreshworks.com" (shown under Profile Settings > API Settings). Use "acme.freshsales.io" for a Freshsales Classic account.
apiKeystringYesFreshsales API key, from Profile Settings > API Settings
titlestringYesTitle of the activity
salesActivityTypeIdstringYesID of the sales activity type, from Admin Settings > Sales Activities
startDatestringYesStart time, ISO 8601, e.g. 2026-11-02T17:00:00+05:30
endDatestringYesEnd time, ISO 8601
ownerIdstringYesID of the user who owns the activity
targetTypestringYesType of the related record: "Contact", "SalesAccount", "Deal", or "Lead" (Freshsales Classic only)
targetIdstringYesID of the related record
notesstringNoNotes about the activity, e.g. a call summary
outcomeIdstringNoID of the activity outcome
customFieldsjsonNoCustom field values keyed by internal name, e.g. {"cf_call_outcome": "Interested"}

Output

ParameterTypeDescription
salesActivityobjectThe logged sales activity