Freshworks CRM
Manage accounts, contacts, deals, appointments, notes, tasks, and search in Freshworks CRM.
Overview
Freshworks CRM (formerly Freshsales) is a cloud sales platform for tracking leads, contacts, accounts, deals, appointments, notes, tasks and sales activities. This node gives a workflow full create, read, update and delete access to each of those records, plus cross-entity search and lookup, so you can keep your CRM in step with the rest of your pipeline — enrol new signups as contacts, push closed-won deals forward, file notes against an account, or pull a saved view of deals into a report. It authenticates with an API key and your Freshworks account domain.
Category: Marketing
Tool Name: freshworks_crm
Version: 1
Appearance: Icon: lucide-CircleDollarSign | Color: #EE5A24
Node Type
Action — processes input items and produces output
| Direction | Port(s) |
|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Freshworks CRM API credentials.
See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|
| Account | account |
| Appointment | appointment |
| Contact | contact |
| Deal | deal |
| Note | note |
| Sales Activity | salesActivity |
| Search | search |
| Task | task |
Operations
The available operations depend on the resource you select.
Account
| Operation | Value | Description |
|---|
| Create | create | Create a new account. |
| Delete | delete | Delete an account. |
| Get | get | Retrieve one account by ID. |
| Get Many | getAll | Retrieve accounts from a saved view. |
| Update | update | Update an existing account. |
Appointment
| Operation | Value | Description |
|---|
| Create | create | Create a new appointment. |
| Delete | delete | Delete an appointment. |
| Get | get | Retrieve one appointment by ID. |
| Get Many | getAll | Retrieve appointments. |
| Update | update | Update an existing appointment. |
Contact
| Operation | Value | Description |
|---|
| Create | create | Create a new contact. |
| Delete | delete | Delete a contact. |
| Get | get | Retrieve one contact by ID. |
| Get Many | getAll | Retrieve contacts from a saved view. |
| Update | update | Update an existing contact. |
Deal
| Operation | Value | Description |
|---|
| Create | create | Create a new deal. |
| Delete | delete | Delete a deal. |
| Get | get | Retrieve one deal by ID. |
| Get Many | getAll | Retrieve deals from a saved view. |
| Update | update | Update an existing deal. |
Note
| Operation | Value | Description |
|---|
| Create | create | Attach a new note to a contact, deal or account. |
| Delete | delete | Delete a note. |
| Update | update | Update an existing note. |
Sales Activity
| Operation | Value | Description |
|---|
| Get | get | Retrieve one sales activity by ID. |
| Get Many | getAll | Retrieve sales activities. |
Search
| Operation | Value | Description |
|---|
| Query | query | Search across entity types for a term. |
| Lookup | lookup | Find records by an exact field value. |
Task
| Operation | Value | Description |
|---|
| Create | create | Create a new task. |
| Delete | delete | Delete a task. |
| Get | get | Retrieve one task by ID. |
| Get Many | getAll | Retrieve tasks. |
| Update | update | Update an existing task. |
Parameters
Account: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the account. |
| Additional Fields | collection | No | {} | Optional account fields to set when the account is created. |
| — Address | string | No | — | Address of the account. |
| — Annual Revenue | number | No | 0 | Annual revenue of the account. |
| — Business Type ID | string | No | — | ID of the business type. Find via GET /selector/business_types. |
| — City | string | No | — | City of the account. |
| — Country | string | No | — | Country of the account. |
| — Facebook | string | No | — | Facebook username. |
| — Industry Type ID | string | No | — | ID of the industry type. Find via GET /selector/industry_types. |
| — LinkedIn | string | No | — | LinkedIn account URL or username. |
| — Number of Employees | number | No | 0 | Number of employees. |
— Owner ID (owner_id) | string | No | — | ID of the user the account is assigned to. Find via GET /selector/owners. |
| — Parent Sales Account ID | string | No | — | Parent account ID. |
| — Phone | string | No | — | Phone number. |
| — State | string | No | — | State. |
| — Territory ID | string | No | — | ID of the territory. Find via GET /selector/territories. |
| — Twitter | string | No | — | Twitter username. |
| — Website | string | No | — | Website URL. |
| — Zipcode | string | No | — | Zipcode. |
Account: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Account ID | string | Yes | — | ID of the account. |
Account: Get
| Parameter | Type | Required | Default | Description |
|---|
| Account ID | string | Yes | — | ID of the account. |
Account: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| View ID | string | Yes | — | ID of a saved account view/filter. Find via GET /sales_accounts/filters. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Account: Update
| Parameter | Type | Required | Default | Description |
|---|
| Account ID | string | Yes | — | ID of the account to update. |
| Update Fields | collection | No | {} | Account fields to change. Supply at least one, or the node reports an error for that item. |
| — Address | string | No | — | Address of the account. |
| — Annual Revenue | number | No | 0 | Annual revenue of the account. |
| — Business Type ID | string | No | — | ID of the business type. |
| — City | string | No | — | City of the account. |
| — Country | string | No | — | Country of the account. |
| — Facebook | string | No | — | Facebook username. |
| — Industry Type ID | string | No | — | ID of the industry type. |
| — LinkedIn | string | No | — | LinkedIn username. |
| — Name | string | No | — | Name of the account. |
| — Number of Employees | number | No | 0 | Number of employees. |
— Owner ID (owner_id) | string | No | — | ID of the user assigned. |
| — Parent Sales Account ID | string | No | — | Parent account ID. |
| — Phone | string | No | — | Phone number. |
| — State | string | No | — | State. |
| — Territory ID | string | No | — | ID of the territory. |
| — Twitter | string | No | — | Twitter username. |
| — Website | string | No | — | Website URL. |
| — Zipcode | string | No | — | Zipcode. |
Appointment: Create
| Parameter | Type | Required | Default | Description |
|---|
| Title | string | Yes | — | Title of the appointment. |
Start Date (fromDate) | string | Yes | — | Start date/time of the appointment in ISO 8601 format. |
End Date (endDate) | string | Yes | — | End date/time of the appointment in ISO 8601 format. |
| Attendees | json | No | [] | JSON array of attendees. Each: { “type”: “contact”|“user”, “contactId”: ”…”, “userId”: ”…” }. |
| Additional Fields | collection | No | {} | Optional appointment fields to set when the appointment is created. |
| — Creator ID | string | No | — | ID of the user who created the appointment. |
| — Is All-Day | boolean | No | false | Whether it is an all-day appointment. |
| — Latitude | string | No | — | Latitude of the location. |
| — Location | string | No | — | Location of the appointment. |
| — Longitude | string | No | — | Longitude of the location. |
| — Outcome ID | string | No | — | ID of the outcome. Find via GET /selector/sales_activity_outcomes. |
| — Target ID | string | No | — | ID of the target entity. |
— Target Type (targetable_type) | options | No | Contact | Type of the entity the appointment is linked to. |
| | | | Options: Contact, Deal, SalesAccount |
| — Time Zone | string | No | — | Timezone for the appointment (e.g. America/New_York). |
Appointment: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Appointment ID | string | Yes | — | ID of the appointment. |
Appointment: Get
| Parameter | Type | Required | Default | Description |
|---|
| Appointment ID | string | Yes | — | ID of the appointment. |
Appointment: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the appointments that are returned. |
| — Include | options | No | creater | Related records to include with each appointment. |
| | | | Options: appointment_attendees, creater (Creator), targetable (Target) |
| — Time | options | No | upcoming | Which appointments to return. |
| | | | Options: past, upcoming |
Appointment: Update
| Parameter | Type | Required | Default | Description |
|---|
| Appointment ID | string | Yes | — | ID of the appointment to update. |
| Update Fields | collection | No | {} | Appointment fields to change. Supply at least one, or the node reports an error for that item. |
| — Attendees | json | No | [] | JSON array of attendees. Each: { “type”: “contact”|“user”, “contactId”: ”…”, “userId”: ”…” }. |
| — Creator ID | string | No | — | ID of the creator user. |
— End Date (end_date) | string | No | — | End date/time (ISO 8601). |
| — Is All-Day | boolean | No | false | Whether it is all-day. |
| — Latitude | string | No | — | Latitude. |
| — Location | string | No | — | Location. |
| — Longitude | string | No | — | Longitude. |
| — Outcome ID | string | No | — | Outcome ID. |
— Start Date (from_date) | string | No | — | Start date/time (ISO 8601). |
| — Target ID | string | No | — | Target entity ID. |
— Target Type (targetable_type) | options | No | Contact | Type of the entity the appointment is linked to. |
| | | | Options: Contact, Deal, SalesAccount |
| — Time Zone | string | No | — | Timezone. |
| — Title | string | No | — | Title. |
| Parameter | Type | Required | Default | Description |
|---|
First Name (firstName) | string | Yes | — | First name of the contact. |
Last Name (lastName) | string | Yes | — | Last name of the contact. |
| Email Address | string | Yes | — | Email address of the contact. |
| Additional Fields | collection | No | {} | Optional contact fields to set when the contact is created. |
| — Address | string | No | — | Address. |
| — Campaign ID | string | No | — | Campaign ID. Find via GET /selector/campaigns. |
| — City | string | No | — | City. |
| — Contact Status ID | string | No | — | Contact status ID. Find via GET /selector/contact_statuses. |
| — Country | string | No | — | Country. |
| — External ID | string | No | — | External ID. |
| — Facebook | string | No | — | Facebook username. |
| — Job Title | string | No | — | Job title. |
| — Keywords | string | No | — | Keywords. |
| — Lead Source ID | string | No | — | Lead source ID. |
| — Lifecycle Stage ID | string | No | — | Lifecycle stage ID. Find via GET /selector/lifecycle_stages. |
| — LinkedIn | string | No | — | LinkedIn. |
| — Medium | string | No | — | Medium. |
| — Mobile Number | string | No | — | Mobile number. |
— Owner ID (owner_id) | string | No | — | Owner user ID. |
| — Sales Account IDs | string | No | — | Comma-separated sales account IDs. First is marked as primary. |
| — State | string | No | — | State. |
| — Subscription Status | string | No | — | Subscription status. |
| — Subscription Types | string | No | — | Subscription types. |
| — Territory ID | string | No | — | Territory ID. |
| — Time Zone | string | No | — | Timezone. |
| — Twitter | string | No | — | Twitter username. |
| — Work Number | string | No | — | Work phone number. |
| — Zipcode | string | No | — | Zipcode. |
| Parameter | Type | Required | Default | Description |
|---|
| Contact ID | string | Yes | — | ID of the contact. |
| Parameter | Type | Required | Default | Description |
|---|
| Contact ID | string | Yes | — | ID of the contact. |
| Parameter | Type | Required | Default | Description |
|---|
| View ID | string | Yes | — | ID of a saved contact view/filter. Find via GET /contacts/filters. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Parameter | Type | Required | Default | Description |
|---|
| Contact ID | string | Yes | — | ID of the contact to update. |
| Update Fields | collection | No | {} | Contact fields to change. Supply at least one, or the node reports an error for that item. |
| — Address | string | No | — | Address. |
| — Campaign ID | string | No | — | Campaign ID. |
| — City | string | No | — | City. |
| — Contact Status ID | string | No | — | Contact status ID. |
| — Country | string | No | — | Country. |
| — External ID | string | No | — | External ID. |
| — Facebook | string | No | — | Facebook username. |
— First Name (first_name) | string | No | — | First name. |
| — Job Title | string | No | — | Job title. |
| — Keywords | string | No | — | Keywords. |
— Last Name (last_name) | string | No | — | Last name. |
| — Lead Source ID | string | No | — | Lead source ID. |
| — Lifecycle Stage ID | string | No | — | Lifecycle stage ID. |
| — LinkedIn | string | No | — | LinkedIn. |
| — Medium | string | No | — | Medium. |
| — Mobile Number | string | No | — | Mobile number. |
— Owner ID (owner_id) | string | No | — | Owner user ID. |
| — Sales Account IDs | string | No | — | Comma-separated sales account IDs. |
| — State | string | No | — | State. |
| — Subscription Status | string | No | — | Subscription status. |
| — Subscription Types | string | No | — | Subscription types. |
| — Territory ID | string | No | — | Territory ID. |
| — Time Zone | string | No | — | Timezone. |
| — Twitter | string | No | — | Twitter username. |
| — Work Number | string | No | — | Work phone number. |
| — Zipcode | string | No | — | Zipcode. |
Deal: Create
| Parameter | Type | Required | Default | Description |
|---|
| Name | string | Yes | — | Name of the deal. |
| Amount | number | Yes | 0 | Value of the deal. |
| Additional Fields | collection | No | {} | Optional deal fields to set when the deal is created. |
| — Base Currency Amount | number | No | 0 | Value in base currency. |
| — Campaign ID | string | No | — | Campaign ID. |
| — Currency ID | string | No | — | Currency ID. Find via GET /selector/currencies. |
| — Deal Payment Status ID | string | No | — | Payment status ID. Find via GET /selector/deal_payment_statuses. |
| — Deal Pipeline ID | string | No | — | Pipeline ID. Find via GET /selector/deal_pipelines. |
| — Deal Product ID | string | No | — | Product ID. Find via GET /selector/deal_products. |
| — Deal Reason ID | string | No | — | Reason ID (for lost deals). Find via GET /selector/deal_reasons. |
| — Deal Stage ID | string | No | — | Stage ID. Find via GET /selector/deal_stages. |
| — Deal Type ID | string | No | — | Type ID. Find via GET /selector/deal_types. |
| — Lead Source ID | string | No | — | Lead source ID. |
— Owner ID (owner_id) | string | No | — | Owner user ID. |
| — Probability | number | No | 0 | Probability 0-100. |
| — Sales Account ID | string | No | — | Sales account ID. |
| — Territory ID | string | No | — | Territory ID. |
Deal: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Deal ID | string | Yes | — | ID of the deal. |
Deal: Get
| Parameter | Type | Required | Default | Description |
|---|
| Deal ID | string | Yes | — | ID of the deal. |
Deal: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| View ID | string | Yes | — | ID of a saved deal view/filter. Find via GET /deals/filters. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Deal: Update
| Parameter | Type | Required | Default | Description |
|---|
| Deal ID | string | Yes | — | ID of the deal to update. |
| Update Fields | collection | No | {} | Deal fields to change. Supply at least one, or the node reports an error for that item. |
| — Amount | number | No | 0 | Value of the deal. |
| — Base Currency Amount | number | No | 0 | Value in base currency. |
| — Campaign ID | string | No | — | Campaign ID. |
| — Currency ID | string | No | — | Currency ID. |
| — Deal Payment Status ID | string | No | — | Payment status ID. |
| — Deal Pipeline ID | string | No | — | Pipeline ID. |
| — Deal Product ID | string | No | — | Product ID. |
| — Deal Reason ID | string | No | — | Reason ID. |
| — Deal Stage ID | string | No | — | Stage ID. |
| — Deal Type ID | string | No | — | Type ID. |
| — Lead Source ID | string | No | — | Lead source ID. |
| — Name | string | No | — | Name of the deal. |
— Owner ID (owner_id) | string | No | — | Owner user ID. |
| — Probability | number | No | 0 | Probability 0-100. |
| — Sales Account ID | string | No | — | Sales account ID. |
| — Territory ID | string | No | — | Territory ID. |
Note: Create
| Parameter | Type | Required | Default | Description |
|---|
| Content | string | Yes | — | Content of the note. |
Target Type (targetableType) | options | Yes | Contact | Type of the entity for which the note is created. |
| | | | Options: Contact, Deal, SalesAccount |
| Target ID | string | Yes | — | ID of the entity for which the note is created. |
Note: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Note ID | string | Yes | — | ID of the note to delete. |
Note: Update
| Parameter | Type | Required | Default | Description |
|---|
| Note ID | string | Yes | — | ID of the note to update. |
| Update Fields | collection | No | {} | Note fields to change. Supply at least one, or the node reports an error for that item. |
| — Content | string | No | — | Content of the note. |
| — Target ID | string | No | — | Target entity ID. |
— Target Type (targetable_type) | options | No | Contact | Target entity type. |
| | | | Options: Contact, Deal, SalesAccount |
Sales Activity: Get
| Parameter | Type | Required | Default | Description |
|---|
| Sales Activity ID | string | Yes | — | ID of the sales activity. |
Sales Activity: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Search: Query
| Parameter | Type | Required | Default | Description |
|---|
| Search Term | string | Yes | — | Term used for searching entities. |
| Search on Entities | string | Yes | — | Comma-separated entity types to search: contact, deal, sales_account, user. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 25 | Max number of results to return. (shown when Return All is false) |
Search: Lookup
| Parameter | Type | Required | Default | Description |
|---|
| Search Field | options | Yes | email | Field to search against. |
| | | | Options: email, name, customField |
| Field Value | string | Yes | — | Value to search for. (shown when Search Field is email, name) |
| Custom Field Name | string | Yes | — | Name of the custom field to search against. (shown when Search Field is customField) |
| Custom Field Value | string | Yes | — | Value of the custom field to search for. (shown when Search Field is customField) |
| Options | collection | No | {} | Extra options for the lookup. |
| — Entities | string | No | — | Comma-separated entity types: contact, deal, sales_account. |
Task: Create
| Parameter | Type | Required | Default | Description |
|---|
| Title | string | Yes | — | Title of the task. |
| Due Date | string | Yes | — | Due date/time in ISO 8601 format. |
Owner ID (ownerId) | string | Yes | — | ID of the user the task is assigned to. Find via GET /selector/owners. |
Target Type (targetableType) | options | Yes | Contact | Type of entity for the task. |
| | | | Options: Contact, Deal, SalesAccount |
| Target ID | string | Yes | — | ID of the target entity. |
| Additional Fields | collection | No | {} | Optional task fields to set when the task is created. |
| — Creator ID | string | No | — | ID of the user who created the task. |
| — Outcome ID | string | No | — | Outcome ID. |
| — Task Type ID | string | No | — | Task type ID. |
Task: Delete
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task. |
Task: Get
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task. |
Task: Get Many
| Parameter | Type | Required | Default | Description |
|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Filters | collection | No | {} | Narrow the tasks that are returned. |
| — Include | options | No | owner | Related records to include with each task. |
| | | | Options: owner, targetable (Target), users |
| — Status | options | No | open | Which tasks to return. |
| | | | Options: completed, due_today, due_tomorrow, open, overdue |
Task: Update
| Parameter | Type | Required | Default | Description |
|---|
| Task ID | string | Yes | — | ID of the task to update. |
| Update Fields | collection | No | {} | Task fields to change. Supply at least one, or the node reports an error for that item. |
| — Creator ID | string | No | — | Creator user ID. |
| — Due Date | string | No | — | Due date/time (ISO 8601). |
| — Outcome ID | string | No | — | Outcome ID. |
— Owner ID (owner_id) | string | No | — | Owner user ID. |
| — Target ID | string | No | — | Target entity ID. |
— Target Type (targetable_type) | options | No | Contact | Target entity type. |
| | | | Options: Contact, Deal, SalesAccount |
| — Task Type ID | string | No | — | Task type ID. |
| — Title | string | No | — | Title of the task. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
Every input item produces exactly one output item — the node never fans out, so a list of 200 deals arrives as one item holding an array, not 200 items. Binary data on the input item is forwarded unchanged.
For single-record operations the API response is merged onto the input item JSON ({ ...itemJson, ...record }), so upstream fields you were carrying stay available alongside the record’s own fields. List operations are the exception: their result replaces the item JSON with items and count.
| Operations | What lands on the output item |
|---|
create, get, update on account, appointment, contact, deal, note and task; get on salesActivity | The record’s own fields, merged onto the input item JSON |
delete on any resource | success: true, merged onto the input item JSON |
getAll on account, appointment, contact, deal, salesActivity and task; query on search | items (the array of records) and count — these replace the input item JSON |
lookup on search | The lookup response, merged onto the input item JSON |
A list result looks like this (each entry trimmed here to a single field):
{
"count": 2,
"items": [
{ "name": "Acme Corporation" },
{ "name": "Globex" }
]
}
To turn a list into one item per record, put a Split Out node on items immediately after this node. Reference the values downstream by expression, e.g. {{ $json.count }} or {{ $json.items[0].name }}.
A delete leaves only the confirmation flag on top of the incoming JSON:
{
"success": true
}
Beyond items, count and success, the fields on a record are whatever the Freshworks API returns for that entity — the node unwraps the API’s single-record envelope and puts the record itself on the item. Run the node once and inspect the output before writing downstream expressions against a specific field.
Usage Examples
- Create a new contact in Freshworks CRM
- Get all deals from a Freshworks CRM view
- Update an account in Freshworks CRM
- Search contacts by email in Freshworks CRM
- Create a task assigned to a user in Freshworks CRM
Example Configuration
Create a contact from an upstream signup item:
{
"type": "freshworks_crm",
"parameters": {
"resource": "contact",
"operation": "create",
"firstName": "{{ $json.firstName }}",
"lastName": "{{ $json.lastName }}",
"emails": "{{ $json.email }}",
"additionalFields": {
"job_title": "{{ $json.jobTitle }}",
"mobile_number": "{{ $json.phone }}",
"sales_accounts": "{{ $json.accountId }}"
}
}
}
Pull the first 50 deals from a saved view:
{
"type": "freshworks_crm",
"parameters": {
"resource": "deal",
"operation": "getAll",
"view": "{{ $json.viewId }}",
"returnAll": false,
"limit": 50
}
}
Update an account with enriched firmographics:
{
"type": "freshworks_crm",
"parameters": {
"resource": "account",
"operation": "update",
"accountId": "{{ $json.accountId }}",
"updateFields": {
"annual_revenue": 2500000,
"number_of_employees": 120,
"website": "{{ $json.website }}"
}
}
}
Create a follow-up task against a deal and assign it to an owner:
{
"type": "freshworks_crm",
"parameters": {
"resource": "task",
"operation": "create",
"title": "Follow up on {{ $json.dealName }}",
"dueDate": "{{ $json.dueDate }}",
"ownerId": "{{ $json.ownerId }}",
"targetableType": "Deal",
"targetable_id": "{{ $json.dealId }}",
"additionalFields": {
"task_type_id": "{{ $json.taskTypeId }}"
}
}
}
Fetch every overdue task with its owner record attached:
{
"type": "freshworks_crm",
"parameters": {
"resource": "task",
"operation": "getAll",
"returnAll": true,
"filters": {
"filter": "overdue",
"include": "owner"
}
}
}
Look a contact up by exact email address before deciding whether to create one:
{
"type": "freshworks_crm",
"parameters": {
"resource": "search",
"operation": "lookup",
"searchField": "email",
"fieldValue": "{{ $json.email }}",
"options": {
"entities": "contact"
}
}
}
Error Handling
| Mode | Behavior |
|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage CRM data (accounts, contacts, deals, tasks, etc.) in Freshworks CRM via its REST API.
Important Notes
- Collection parameters are flat objects.
Additional Fields, Update Fields, Filters and Options each take a plain object of field name to value — no array wrappers and no placeholder keys around the entries.
- Dates are ISO 8601. Give
Start Date, End Date and Due Date values such as 2026-01-15T10:00:00Z. Set a Time Zone on the appointment if you need the record stamped to a specific zone.
- Relationship fields take IDs, not names. Owner, territory, pipeline, stage, lead source and similar fields expect the ID of the related record in your Freshworks account.
- Parameters are scoped to a resource and operation. Changing either one changes which fields the node shows, so pick the resource first and the operation second.
Max Concurrency is your rate-limit lever. Lower it when a large batch of items starts drawing throttling responses from the Freshworks API.
Update Fields cannot be empty. Every update operation fails the item if you supply no fields to change.
Get Many on accounts, contacts and deals needs a View ID. These lists are read through a saved Freshworks view, so create the view in the CRM first and paste its ID into View ID.