---
canonical_url: "https://docs.composio.dev/toolkits/freshsales"
markdown_url: "https://docs.composio.dev/toolkits/freshsales.md"
product: "platform"
version: null
last_updated: null
---

# Freshsales

Personalize engagement, shorten your sales cycle, and grow your business with Freshsales

- **Category:** crm
- **Auth:** API_KEY, OAUTH2
- **Composio-managed OAuth available?** No
- **Tools:** 104
- **Triggers:** 0
- **Slug:** `FRESHSALES`
- **Version:** 00000000_00

## Tools

### Add Marketing List Contacts

**Slug:** `FRESHSALES_ADD_MARKETING_LIST_CONTACTS`

Add contacts to a Freshsales marketing list. The same official operation also copies contacts that already belong to another list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `list_id` | integer | Yes | Destination marketing-list ID. |
| `contact_ids` | array | Yes | One or more contact IDs to add or copy into the destination list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Assign Contact Owner

**Slug:** `FRESHSALES_BULK_ASSIGN_CONTACT_OWNER`

Replace the owner of up to 100 Freshsales contacts using explicit contact and owner IDs. Freshsales is known to return a false-success 200 for this endpoint, so this action reads every contact after the write and fails unless every owner_id matches.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `owner_id` | integer | Yes | Active Freshsales user ID selected from the owners selector. |
| `contact_ids` | array | Yes | One to 100 unique Freshsales contact IDs whose owner will be replaced. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Assign CPQ Record Owners

**Slug:** `FRESHSALES_BULK_ASSIGN_CPQ_RECORDS`

Queue one owner assignment for selected CPQ products or documents; acknowledgment does not prove completion. Requires Freshsales CPQ to be licensed and enabled. Observed product bulk paths support OAuth; OAuth behavior for document and template paths remains unverified. https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `owner_id` | integer | Yes | Freshsales user ID to assign as owner. |
| `record_ids` | array | Yes | Distinct positive Freshsales CPQ record IDs. |
| `resource_type` | string ("product" | "document") | Yes | CPQ resource family to mutate: product or document. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Delete CPQ Records

**Slug:** `FRESHSALES_BULK_DELETE_CPQ_RECORDS`

Queue soft deletion of selected CPQ products or documents so they remain restorable; acknowledgment does not prove completion. Requires Freshsales CPQ to be licensed and enabled. Observed product bulk paths support OAuth; OAuth behavior for document and template paths remains unverified. https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_ids` | array | Yes | Distinct positive Freshsales CPQ record IDs. |
| `resource_type` | string ("product" | "document") | Yes | CPQ resource family to mutate: product or document. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Restore CPQ Records

**Slug:** `FRESHSALES_BULK_RESTORE_CPQ_RECORDS`

Queue restoration of selected soft-deleted CPQ products or documents using the PUT methods in Freshsales' official cURL examples; acknowledgment does not prove completion. Requires Freshsales CPQ to be licensed and enabled. Observed product bulk paths support OAuth; OAuth behavior for document and template paths remains unverified. https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_ids` | array | Yes | Distinct positive Freshsales CPQ record IDs. |
| `resource_type` | string ("product" | "document") | Yes | CPQ resource family to mutate: product or document. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Update CPQ Records

**Slug:** `FRESHSALES_BULK_UPDATE_CPQ_RECORDS`

Queue one shared-field update for selected CPQ products or documents. Product pricing and document product-line mutations are not supported by these bulk endpoints; acknowledgment does not prove completion. Requires Freshsales CPQ to be licensed and enabled. Observed product bulk paths support OAuth; OAuth behavior for document and template paths remains unverified. https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_ids` | array | Yes | Distinct positive Freshsales CPQ record IDs. |
| `resource_type` | string ("product" | "document") | Yes | CPQ resource family to mutate: product or document. |
| `product_fields` | object | No | Product fields applied to every selected product; use only with resource_type=product. |
| `document_fields` | object | No | Document fields applied to every selected document; use only with resource_type=document. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Clone Contact

**Slug:** `FRESHSALES_CLONE_CONTACT`

Create a new Freshsales contact by cloning an existing contact and applying field overrides.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `overrides` | object | No | Optional fields to override using Freshsales field names. Omit this or send an empty object to copy all existing contact properties. |
| `contact_id` | integer | Yes | Existing Freshsales contact ID to clone. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Clone Custom Module Record

**Slug:** `FRESHSALES_CLONE_CUSTOM_MODULE_RECORD`

Create a new Freshsales custom-module record by cloning an existing record and applying field overrides.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `overrides` | object | Yes | Fields to override on the clone using Freshsales field names, such as name, owner_id, or custom_field. |
| `record_id` | integer | Yes | Existing Freshsales custom-module record ID to clone. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Clone Deal

**Slug:** `FRESHSALES_CLONE_DEAL`

Clone a Freshsales deal, optionally overriding fields on the new deal.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deal_id` | integer | Yes | Deal ID to clone. |
| `overrides` | object | No | Optional fields to override on the cloned deal. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Clone Sales Account

**Slug:** `FRESHSALES_CLONE_SALES_ACCOUNT`

Clone a Freshsales sales account, optionally overriding fields on the new account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `overrides` | object | No | Optional fields to override on the clone. |
| `sales_account_id` | integer | Yes | Sales-account ID to clone. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Appointment

**Slug:** `FRESHSALES_CREATE_APPOINTMENT`

Create a Freshsales appointment, optionally linked to a CRM record or attendees, and return its ID and related records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Appointment title. |
| `target` | object | No | CRM record to link to the appointment. |
| `all_day` | boolean | No | Whether the appointment is an all-day event. |
| `ends_at` | string | Yes | Appointment end as an ISO 8601 date-time after starts_at. |
| `location` | string | No | Appointment location. |
| `attendees` | array | No | Freshsales users or CRM records to invite to the appointment. |
| `starts_at` | string | Yes | Appointment start as an ISO 8601 date-time. |
| `time_zone` | string | No | Freshsales time-zone label used to interpret the appointment times; examples include UTC, Chennai, and Hawaii. |
| `outcome_id` | integer | No | Freshsales appointment outcome ID to assign. |
| `description` | string | No | Appointment details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Contact

**Slug:** `FRESHSALES_CREATE_CONTACT`

Create a Freshsales contact identified by email addresses, mobile number, Twitter username, or external ID and return its ID and contact fields. Tenant contact-field settings can impose additional requirements; inspect List Contact Fields first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | Contact's city. |
| `state` | string | No | Contact's state or region. |
| `emails` | array | No | Email-address hashes for the contact using the modern emails field. Freshsales deprecates the singular email write field. |
| `medium` | string | No | Acquisition medium that led the contact to the site. |
| `address` | string | No | Contact's street address. |
| `country` | string | No | Contact's country. |
| `keyword` | string | No | Acquisition keyword used by the contact. |
| `twitter` | string | No | Unique Twitter username that can identify the contact. |
| `zipcode` | string | No | Contact's postal code. |
| `facebook` | string | No | Contact's Facebook username. |
| `linkedin` | string | No | Contact's LinkedIn account. |
| `owner_id` | integer | No | Freshsales user ID to assign as owner. |
| `job_title` | string | No | Contact's job title. |
| `last_name` | string | No | Contact's last name. |
| `time_zone` | string | No | Contact's time zone. |
| `first_name` | string | No | Contact's first name. |
| `campaign_id` | integer | No | Freshsales campaign ID that acquired the contact. |
| `external_id` | string | No | Unique external identifier that can identify the contact. |
| `work_number` | string | No | Contact's work phone number. |
| `territory_id` | integer | No | Freshsales territory ID for the contact. |
| `custom_fields` | object | No | Contact custom-field values keyed by Freshsales internal field name. |
| `mobile_number` | string | No | Unique mobile telephone number that can identify the contact. |
| `lead_source_id` | integer | No | Freshsales lead-source ID for the contact. |
| `sales_accounts` | array | No | One to 10 existing sales accounts. IDs must be unique and exactly one association must be primary. |
| `contact_status_id` | integer | No | Freshsales contact-status ID. |
| `lifecycle_stage_id` | integer | No | Freshsales lifecycle-stage ID. |
| `subscription_types` | array | No | Contact subscription-type hashes, using tenant-supported subscription IDs. |
| `subscription_status` | array | No | Contact subscription-status hashes. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create CPQ Document

**Slug:** `FRESHSALES_CREATE_CPQ_DOCUMENT`

Create a Freshsales quote or other CPQ document and return its confirmed ID. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `stage` | string | No | Configured document stage. |
| `amount` | number | No | Document amount; cannot be directly updated after products are attached. |
| `deal_id` | integer | Yes | Deal ID the document belongs to. |
| `owner_id` | integer | No | Assigned Freshsales user ID. |
| `contact_id` | integer | Yes | Contact ID the document belongs to. |
| `valid_till` | string | No | Document validity timestamp. |
| `billing_city` | string | No | Billing city. |
| `custom_field` | object | No | Custom fields keyed by Freshsales internal field name. |
| `display_name` | string | Yes | Unique document display name. |
| `territory_id` | integer | No | Territory ID. |
| `billing_state` | string | No | Billing state or region. |
| `currency_code` | string | Yes | Required document currency code from the tenant's configured currency selector. |
| `document_type` | string | Yes | Configured CPQ document type. |
| `shipping_city` | string | No | Shipping city. |
| `shipping_state` | string | No | Shipping state or region. |
| `billing_address` | string | No | Billing street address. |
| `billing_country` | string | No | Billing country. |
| `billing_zipcode` | string | No | Billing postal code. |
| `sales_account_id` | integer | No | Sales-account ID the document belongs to. |
| `shipping_address` | string | No | Shipping street address. |
| `shipping_country` | string | No | Shipping country. |
| `shipping_zipcode` | string | No | Shipping postal code. |
| `cpq_document_template_name` | string | Yes | Existing CPQ template name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Custom Field

**Slug:** `FRESHSALES_CREATE_CUSTOM_FIELD`

Create a persistent custom field on one explicit Freshsales entity form. This mutates tenant schema, may make future record writes require the field, and cannot be undone through any documented custom-field delete endpoint. Requires confirm_irreversible_schema_change=true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `hint` | string | No | Optional help text for the field. |
| `type` | string ("text" | "decimal" | "dropdown" | "radio" | "auto_complete" | "multi_select_dropdown") | Yes | Custom-module field type documented by Freshsales. |
| `label` | string | Yes | User-visible custom-field label. |
| `choices` | array | No | Choice hashes required for dropdown, radio, and multi-select fields. |
| `form_id` | integer | Yes | Explicit form ID obtained from List Entity Forms. |
| `visible` | boolean | No | Whether users can see the field. |
| `editable` | boolean | No | Whether users can edit the field. |
| `required` | boolean | No | Whether the form requires this field. |
| `parent_id` | string | No | Optional parent field-group string/UUID. Legacy positive integer IDs are also accepted and serialized as strings. When omitted, Freshsales uses the Basic information group. |
| `entity_type` | string | Yes | Freshsales entity type that owns the form. |
| `field_options` | object | No | Type-specific options. auto_complete requires lookup_type; decimal fields may use locale. |
| `internal_name` | string | No | Optional stable internal name. Freshsales requires it for dropdown fields and otherwise documents it as optional. |
| `confirm_irreversible_schema_change` | boolean | Yes | Must be true to confirm a persistent tenant-schema change. The researched API exposes no custom-field delete endpoint. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Custom Module

**Slug:** `FRESHSALES_CREATE_CUSTOM_MODULE`

Create a tenant-wide Freshsales custom-module definition and return its ID and internal entity name. This changes the tenant's CRM schema, immediately creates five saved filters, and consumes one of the documented maximum of 10 custom modules per account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `icon` | string ("icon-cm-auction" | "icon-cm-cart" | "icon-cm-connection" | "icon-cm-courses" | "icon-cm-employee" | "icon-cm-event" | "icon-cm-inventory" | "icon-cm-payments" | "icon-cm-people" | "icon-cm-project" | "icon-cm-property" | "icon-cm-schools" | "icon-cm-sku" | "icon-cm-subscription" | "icon-cm-ticket" | "icon-cm-transactions" | "icon-cm-asset" | "icon-cm-assistant" | "icon-cm-category" | "icon-cm-community" | "icon-cm-competitor" | "icon-cm-entitlement" | "icon-cm-file-attachment" | "icon-cm-fulfillment" | "icon-cm-goals" | "icon-cm-hierarchy" | "icon-cm-id-card" | "icon-cm-idea" | "icon-cm-invoice" | "icon-cm-items" | "icon-cm-labels" | "icon-cm-legal" | "icon-cm-location" | "icon-cm-milestone" | "icon-cm-partner" | "icon-cm-payment" | "icon-cm-purchase-order" | "icon-cm-queue" | "icon-cm-relationship" | "icon-cm-revenue-schedule" | "icon-cm-skill" | "icon-cm-storage" | "icon-cm-survey" | "icon-cm-timesheet") | Yes | Freshsales custom-module icon identifier from the official allowed list; the icon must be unused by another custom module in the tenant. |
| `status` | integer | No | Optional numeric Freshsales module status. |
| `description` | string | No | Purpose of the custom module. |
| `entity_name` | string | No | Optional stable internal entity name beginning with cm_; Freshsales may generate it when omitted. |
| `plural_name` | string | Yes | Plural display name for the module, limited by Freshsales to 25 characters. |
| `singular_name` | string | Yes | Singular display name for the module, limited by Freshsales to 25 characters. |
| `show_in_navigation_menu` | boolean | No | Whether to show the module in Freshsales navigation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Custom Module Record

**Slug:** `FRESHSALES_CREATE_CUSTOM_MODULE_RECORD`

Create one record in a named Freshsales custom module and return its record ID and fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the custom-module record. |
| `owner_id` | integer | No | Freshsales user ID to assign as owner. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |
| `custom_fields` | object | No | Module field values keyed by each field's Freshsales internal name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Deal

**Slug:** `FRESHSALES_CREATE_DEAL`

Create a Freshsales deal associated with exactly one existing or new sales account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Required deal name. |
| `amount` | number | Yes | Deal amount. |
| `fields` | object | No | Additional deal fields using Freshsales wire names, such as contacts_added_list and custom_field. |
| `sales_account` | object | No | New sales account to create and associate with the deal. |
| `sales_account_id` | integer | No | Existing Freshsales sales-account ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Document Link

**Slug:** `FRESHSALES_CREATE_DOCUMENT_LINK`

Attach a web document URL to one explicit Freshsales CRM record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Web URL to attach to the CRM record. |
| `name` | string | No | Optional display name for the linked document. |
| `is_shared` | boolean | No | Whether the document link is shared in Freshsales. |
| `targetable_id` | integer | Yes | Explicit ID of the target CRM record. |
| `targetable_type` | string ("Lead" | "Contact" | "SalesAccount" | "Deal") | Yes | Freshsales type of the target record. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Marketing List

**Slug:** `FRESHSALES_CREATE_MARKETING_LIST`

Create an empty Freshsales marketing list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name for the marketing list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Note

**Slug:** `FRESHSALES_CREATE_NOTE`

Create a Freshsales note on one lead, contact, sales account, or deal.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `description` | string | Yes | Text of the note to create. |
| `targetable_id` | integer | Yes | Freshsales ID of the related CRM record. |
| `targetable_type` | string ("Lead" | "Contact" | "SalesAccount" | "Deal") | Yes | Related record type: Lead, Contact, SalesAccount, or Deal. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create CPQ Product

**Slug:** `FRESHSALES_CREATE_PRODUCT`

Create a Freshsales CPQ product and return the provider-confirmed product ID. Requires Freshsales CPQ to be licensed and enabled for the connected account. Product create, get, update, delete, and restore paths support OAuth. Official contract: https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Unique product name. |
| `category` | string | No | Exact product-category label configured in the tenant's products form; copy it from Freshsales settings. |
| `owner_id` | integer | No | Assigned Freshsales user ID. |
| `is_active` | boolean | No | Whether the product is active. |
| `sku_number` | string | No | Unique stock-keeping unit. |
| `valid_till` | string | No | Product validity timestamp. |
| `description` | string | No | Product description. |
| `custom_field` | object | No | Custom fields keyed by Freshsales internal field name. |
| `product_code` | string | No | Unique product code. |
| `parent_product` | integer | No | Parent product ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Sales Account

**Slug:** `FRESHSALES_CREATE_SALES_ACCOUNT`

Create a Freshsales sales account with standard, parent-account, or tenant-defined fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Required sales-account name. |
| `fields` | object | No | Additional account fields using Freshsales wire names, including parent_sales_account and custom_field. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Sales Activity

**Slug:** `FRESHSALES_CREATE_SALES_ACTIVITY`

Create a Freshsales sales activity with all provider-mandatory time, owner, type, and CRM-target fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `notes` | string | No | Activity notes. |
| `title` | string | Yes | Sales-activity title. |
| `end_date` | string | Yes | Activity end in a Freshsales-supported datetime form. |
| `location` | string | No | Activity location. |
| `owner_id` | integer | Yes | Freshsales user ID that owns the activity. |
| `start_date` | string | Yes | Activity start in a Freshsales-supported datetime form. |
| `custom_fields` | object | No | Custom-field values keyed by Freshsales internal name. |
| `targetable_id` | integer | Yes | Freshsales ID of the related CRM record. |
| `targetable_type` | string ("Contact" | "SalesAccount" | "Deal") | Yes | Related record type: Contact, SalesAccount, or Deal. |
| `sales_activity_type_id` | integer | Yes | Configured sales-activity type ID. |
| `sales_activity_outcome_id` | integer | No | Configured outcome ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Task

**Slug:** `FRESHSALES_CREATE_TASK`

Create a Freshsales task with every provider-mandatory assignment, due-date, and CRM-target field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Task title. |
| `due_date` | string | Yes | Task due date and time in a Freshsales-supported datetime form. |
| `owner_id` | integer | Yes | Freshsales user ID that owns the task. |
| `outcome_id` | integer | No | Configured task outcome ID. |
| `description` | string | No | Task details. |
| `task_type_id` | integer | No | Configured task sales-activity type ID. |
| `collaborators` | array | No | Users collaborating on the task. |
| `targetable_id` | integer | Yes | Freshsales ID of the related CRM record. |
| `targetable_type` | string ("Lead" | "Contact" | "SalesAccount" | "Deal") | Yes | Related record type: Lead, Contact, SalesAccount, or Deal. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Appointment

**Slug:** `FRESHSALES_DELETE_APPOINTMENT`

Delete one Freshsales appointment by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | Freshsales appointment ID to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contacts

**Slug:** `FRESHSALES_DELETE_CONTACTS`

Delete one or more Freshsales contacts through ordinary deletion rather than permanent forget. Provide contact_id for one contact or contact_ids for a bulk request. This toolkit does not expose a restore operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | No | One Freshsales contact ID to delete through the single-contact endpoint. Mutually exclusive with contact_ids. |
| `contact_ids` | array | No | Two or more Freshsales contact IDs to delete in one bulk request. Mutually exclusive with contact_id. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete CPQ Document

**Slug:** `FRESHSALES_DELETE_CPQ_DOCUMENT`

Soft-delete one Freshsales CPQ document so it can be restored. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `document_id` | integer | Yes | Freshsales CPQ document ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Custom Module

**Slug:** `FRESHSALES_DELETE_CUSTOM_MODULE`

Delete a Freshsales custom-module definition and change the tenant's CRM schema. Remove all records from the custom module before calling this action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `module_id` | integer | Yes | Freshsales custom-module definition ID to delete. Remove every record from the custom module before calling this action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Custom Module Records

**Slug:** `FRESHSALES_DELETE_CUSTOM_MODULE_RECORDS`

Delete one or more records from a named Freshsales custom module through ordinary deletion. Provide record_id for one record or record_ids for a bulk request. This action never permanently forgets records or their data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_id` | integer | No | One custom-module record ID to delete through the ordinary single-record endpoint. Mutually exclusive with record_ids. |
| `record_ids` | array | No | Two or more custom-module record IDs to delete in one bulk request. Mutually exclusive with record_id. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Deals

**Slug:** `FRESHSALES_DELETE_DEALS`

Ordinarily delete one deal or bulk-delete multiple deals. This operation is separate from permanent forget.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deal_id` | integer | No | One deal ID for ordinary single deletion; mutually exclusive with deal_ids. |
| `deal_ids` | array | No | Two or more deal IDs for ordinary bulk deletion. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Delete Note

**Slug:** `FRESHSALES_DELETE_NOTE`

Permanently delete one Freshsales note. Freshsales documents no restore operation; the response contains provider-confirmed deletion fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | integer | Yes | Freshsales note ID to permanently delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete CPQ Product

**Slug:** `FRESHSALES_DELETE_PRODUCT`

Soft-delete one Freshsales CPQ product so it can be restored. Requires Freshsales CPQ to be licensed and enabled for the connected account. Product create, get, update, delete, and restore paths support OAuth. Official contract: https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | integer | Yes | Freshsales CPQ product ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Sales Accounts

**Slug:** `FRESHSALES_DELETE_SALES_ACCOUNTS`

Ordinarily delete one account or bulk-delete multiple accounts. This is not permanent forget; associated contacts and deals are deleted only when explicitly requested.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sales_account_id` | integer | No | One account ID for ordinary single deletion; mutually exclusive with sales_account_ids. |
| `sales_account_ids` | array | No | Two or more account IDs for ordinary bulk deletion. |
| `delete_associated_contacts_deals` | boolean | No | Also delete associated contacts and deals. Applies to either mode. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Sales Activity

**Slug:** `FRESHSALES_DELETE_SALES_ACTIVITY`

Delete one Freshsales sales activity after confirming the provider success code.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sales_activity_id` | integer | Yes | Freshsales sales-activity ID to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Task

**Slug:** `FRESHSALES_DELETE_TASK`

Delete one Freshsales task and return provider-confirmed deletion fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | integer | Yes | Freshsales task ID to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Forget Contact

**Slug:** `FRESHSALES_FORGET_CONTACT`

Permanently and irreversibly erase one Freshsales contact and associated data. This is not ordinary deletion, cannot be undone by this toolkit, and requires confirm_permanent_erasure=true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | Yes | Freshsales contact ID to erase permanently. |
| `confirm_permanent_erasure` | boolean | Yes | Must be true to confirm permanent, irreversible erasure of the contact and its associated data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Forget CPQ Document

**Slug:** `FRESHSALES_FORGET_CPQ_DOCUMENT`

Permanently and irreversibly delete one CPQ document and all associated data. This cannot be restored and requires confirm_permanent_erasure=true. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `document_id` | integer | Yes | Freshsales CPQ document ID. |
| `confirm_permanent_erasure` | boolean | Yes | Must be true to confirm permanent, irreversible erasure of the CPQ document and all associated data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Forget Custom Module Record

**Slug:** `FRESHSALES_FORGET_CUSTOM_MODULE_RECORD`

Permanently and irreversibly erase one Freshsales custom-module record and associated data. This is not ordinary deletion, cannot be undone by this toolkit, and requires confirm_permanent_erasure=true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_id` | integer | Yes | Custom-module record ID to erase permanently. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from Get Custom Module. |
| `confirm_permanent_erasure` | boolean | Yes | Must be true to confirm permanent, irreversible erasure of this record and its associated data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Forget Deal

**Slug:** `FRESHSALES_FORGET_DEAL`

IRREVERSIBLE: permanently erase one Freshsales deal and associated data. This cannot be restored and requires confirm_permanent_erasure=true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deal_id` | integer | Yes | Deal ID to erase permanently. |
| `confirm_permanent_erasure` | boolean | Yes | Must be true to confirm permanent, irreversible erasure of the deal and its associated data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Permanently Forget Sales Account

**Slug:** `FRESHSALES_FORGET_SALES_ACCOUNT`

IRREVERSIBLE: permanently erase one Freshsales sales account and associated data. This cannot be restored and requires confirm_permanent_erasure=true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sales_account_id` | integer | Yes | Sales-account ID to erase permanently. |
| `confirm_permanent_erasure` | boolean | Yes | Must be true to confirm permanent, irreversible erasure of the sales account and its associated data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Appointment

**Slug:** `FRESHSALES_GET_APPOINTMENT`

Return one Freshsales appointment and its related attendees, users, conferences, and notes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | Freshsales appointment ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contact

**Slug:** `FRESHSALES_GET_CONTACT`

Return one Freshsales contact by ID, optionally including related resources.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Related resources to embed in the response. |
| `contact_id` | integer | Yes | Freshsales contact ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get CPQ Document

**Slug:** `FRESHSALES_GET_CPQ_DOCUMENT`

Get one Freshsales CPQ document, optionally including product line items. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | string | No | Set to products to include attached product pricing details. |
| `document_id` | integer | Yes | Freshsales CPQ document ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Custom Module

**Slug:** `FRESHSALES_GET_CUSTOM_MODULE`

Return one Freshsales custom-module definition by ID, including the entity name required by custom-module record tools.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `module_id` | integer | Yes | Custom-module definition ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Custom Module Record

**Slug:** `FRESHSALES_GET_CUSTOM_MODULE_RECORD`

Return one record by ID from a named Freshsales custom module.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_id` | integer | Yes | Freshsales custom-module record ID. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Deal

**Slug:** `FRESHSALES_GET_DEAL`

Get one Freshsales deal by ID, optionally with related resources.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deal_id` | integer | Yes | Freshsales deal ID. |
| `include` | array | No | Documented related resources to embed in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Bulk Upsert Job Status

**Slug:** `FRESHSALES_GET_JOB_STATUS`

Get bounded, single-request progress and failure details for one Freshsales bulk-upsert job; this does not poll.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | Bulk-upsert job ID from a Freshsales job_status_url. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get CPQ Product

**Slug:** `FRESHSALES_GET_PRODUCT`

Get one Freshsales CPQ product, optionally including pricing. Requires Freshsales CPQ to be licensed and enabled for the connected account. Product create, get, update, delete, and restore paths support OAuth. Official contract: https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | string | No | Set to product_pricings to include configured prices. |
| `product_id` | integer | Yes | Freshsales CPQ product ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Sales Account

**Slug:** `FRESHSALES_GET_SALES_ACCOUNT`

Get one Freshsales sales account by ID, optionally with related resources.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Documented related resources to embed in the response. |
| `sales_account_id` | integer | Yes | Freshsales sales-account ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Sales Activity

**Slug:** `FRESHSALES_GET_SALES_ACTIVITY`

Get one Freshsales sales activity by ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sales_activity_id` | integer | Yes | Freshsales sales-activity ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Task

**Slug:** `FRESHSALES_GET_TASK`

Get one Freshsales task by ID, optionally with collaborators and its CRM target.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Related users and/or targetable record to embed. |
| `task_id` | integer | Yes | Freshsales task ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Appointments

**Slug:** `FRESHSALES_LIST_APPOINTMENTS`

Return one page selected by Freshsales's required appointment filter. Open is documented for upcoming appointments; complete is a separate provider-named filter whose semantics are not further defined. Return the next page number only when Freshsales meta.total proves another page exists. Pages default to 25 appointments (maximum 100); larger pages increase response size and token cost.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Freshsales page number to return. |
| `filter` | string ("open" | "complete") | Yes | Required provider filter: open is documented for upcoming appointments; complete is a separate provider-named filter whose semantics are not further defined. |
| `include` | array | No | Related resources to embed in the response. |
| `per_page` | integer | No | Appointments per page (default 25, Freshsales maximum 100). Larger pages increase response size, latency, and token cost. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Configuration Options

**Slug:** `FRESHSALES_LIST_CONFIGURATION_OPTIONS`

List one Freshsales configuration option family for IDs needed by CRM operations. Covers all 21 official selectors without exposing arbitrary paths; each selector returns its complete provider-bounded option set and does not expose pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resource` | string ("owners" | "territories" | "deal_stages" | "currencies" | "deal_reasons" | "deal_types" | "lead_sources" | "industry_types" | "business_types" | "campaigns" | "deal_payment_statuses" | "deal_products" | "deal_pipelines" | "contact_statuses" | "sales_activity_types" | "sales_activity_outcomes" | "sales_activity_entity_types" | "lifecycle_stages" | "designations" | "pipeline_deal_stages" | "sales_activity_type_outcomes") | Yes | Configuration option family to list. Use pipeline_deal_stages for one deal pipeline or sales_activity_type_outcomes for one activity type. |
| `parent_id` | integer | No | Parent pipeline or sales-activity-type ID. Required only for the two parent-scoped resource values and forbidden otherwise. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Activities

**Slug:** `FRESHSALES_LIST_CONTACT_ACTIVITIES`

Return activity history for one Freshsales contact. The limit input is a provider result-size hint, not a guaranteed maximum. Inspect meta.has_next and meta.has_previous to determine whether the response is incomplete; this action does not expose an unproven continuation input.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Provider result-size hint sent to Freshsales; it is not a guaranteed maximum number of returned activities. |
| `include` | array | No | Related user details to embed; the supported value is user. |
| `contact_id` | integer | Yes | Freshsales contact ID whose activity history to read. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Document Associations

**Slug:** `FRESHSALES_LIST_CONTACT_DOCUMENT_ASSOCIATIONS`

List the file and web-link associations attached to one Freshsales contact, including referenced links, users, and provider totals. This returns metadata only, not file bytes, and exposes no continuation because Freshsales documents none for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | Yes | Freshsales contact ID whose attached file and link associations to list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Fields

**Slug:** `FRESHSALES_LIST_CONTACT_FIELDS`

List Freshsales contact field definitions, internal names, types, choices, and tenant form metadata for use in contact create and update calls. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Related field-group metadata to include; the supported value is field_group. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contacts by View

**Slug:** `FRESHSALES_LIST_CONTACTS_BY_VIEW`

Return one explicitly numbered page from a saved Freshsales contact view, including shaped page totals and the next page number when available.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based Freshsales page number to return. |
| `sort` | string | No | Contact field used to sort this page. |
| `view_id` | integer | Yes | Saved contact-view ID returned by List Contact Views. |
| `sort_type` | string ("asc" | "desc") | No | Ascending or descending sort direction. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Contact Views

**Slug:** `FRESHSALES_LIST_CONTACT_VIEWS`

List saved Freshsales contact views and their IDs for use with contact listing tools. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List CPQ Document Related Products

**Slug:** `FRESHSALES_LIST_CPQ_DOCUMENT_RELATED_PRODUCTS`

List the typed product records associated with one Freshsales CPQ document. Freshsales documents no pagination or continuation parameter for this endpoint. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `document_id` | integer | Yes | Freshsales CPQ document ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Module Records

**Slug:** `FRESHSALES_LIST_CUSTOM_MODULE_RECORDS`

Return one saved-view page of records from a named Freshsales custom module and a page cursor when more records are available.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | integer | No | Page cursor returned by a previous call. Omit it for page one and pass next_cursor unchanged to fetch the next page. |
| `view_id` | integer | Yes | Saved-view ID returned by LIST_CUSTOM_MODULE_VIEWS. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Custom Module Views

**Slug:** `FRESHSALES_LIST_CUSTOM_MODULE_VIEWS`

List saved views for a Freshsales custom module and return the view IDs needed to list its records. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Deal Fields

**Slug:** `FRESHSALES_LIST_DEAL_FIELDS`

List standard and tenant-defined Freshsales deal field definitions. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Optional documented field metadata; the only supported value is field_group. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Deals by View

**Slug:** `FRESHSALES_LIST_DEALS_BY_VIEW`

Return one numbered page from a saved Freshsales deal view.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based page number. |
| `sort` | string | No | Field name to sort by. |
| `view_id` | integer | Yes | Saved-view ID for this entity family. |
| `sort_type` | string ("asc" | "desc") | No | Ascending or descending sort direction. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Deal Views

**Slug:** `FRESHSALES_LIST_DEAL_VIEWS`

List saved Freshsales deal views and their IDs. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Entity Forms

**Slug:** `FRESHSALES_LIST_ENTITY_FORMS`

List Freshsales forms for a standard or custom entity so callers can obtain an explicit form ID before creating a custom field. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `entity_type` | string | Yes | Freshsales entity type, such as contacts or a custom-module internal entity name beginning with cm_. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Marketing List Contacts

**Slug:** `FRESHSALES_LIST_MARKETING_LIST_CONTACTS`

Return one documented page of contacts in a Freshsales marketing list. Freshsales can reject this endpoint when the account plan lacks the feature.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based result page. Compare this with meta.total_pages to continue. |
| `list_id` | integer | Yes | Marketing-list ID whose contacts should be returned. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Marketing Lists

**Slug:** `FRESHSALES_LIST_MARKETING_LISTS`

Return one documented page of Freshsales marketing lists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based result page. Compare this with meta.total_pages to continue. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Account Fields

**Slug:** `FRESHSALES_LIST_SALES_ACCOUNT_FIELDS`

List standard and tenant-defined Freshsales sales-account field definitions. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Optional documented field metadata; the only supported value is field_group. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Accounts by View

**Slug:** `FRESHSALES_LIST_SALES_ACCOUNTS_BY_VIEW`

Return one numbered page from a saved Freshsales sales-account view.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based page number. |
| `sort` | string | No | Field name to sort by. |
| `view_id` | integer | Yes | Saved-view ID for this entity family. |
| `sort_type` | string ("asc" | "desc") | No | Ascending or descending sort direction. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Account Views

**Slug:** `FRESHSALES_LIST_SALES_ACCOUNT_VIEWS`

List saved Freshsales sales-account views and their IDs. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Activities

**Slug:** `FRESHSALES_LIST_SALES_ACTIVITIES`

Return one bounded Freshsales sales-activity page (25 records by default, 100 maximum) and an explicit next page number.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based page number; pass next_page back here to continue. |
| `per_page` | integer | No | Maximum activities in this bounded page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sales Activity Fields

**Slug:** `FRESHSALES_LIST_SALES_ACTIVITY_FIELDS`

List standard and tenant-defined Freshsales sales-activity field definitions. Freshsales documents no pagination or continuation parameter for this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `include` | array | No | Optional documented field metadata; the only supported value is field_group. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tasks

**Slug:** `FRESHSALES_LIST_TASKS`

Return one Freshsales task page for exactly one documented status/due-date filter. Freshsales uses a fixed 25-record page size; pass next_page back as page to continue.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | One-based page number; one bounded page is returned per call. |
| `filter` | string ("open" | "due_today" | "due_tomorrow" | "overdue" | "completed") | Yes | Exactly one documented task filter. |
| `include` | array | No | Related users, targetable records, and/or owners to embed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Log Phone Call for Existing Record

**Slug:** `FRESHSALES_LOG_PHONE_CALL_FOR_EXISTING_RECORD`

Create an irreversible manual call log for one existing Freshsales lead, contact, or sales account and optionally create a note. Freshsales documents no call-log delete operation; explicit confirmation is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | object | No | Optional note; description is mandatory and non-empty when supplied. |
| `outcome_id` | integer | No | Freshsales call outcome ID to assign. |
| `targetable_id` | integer | Yes | Existing Freshsales CRM record ID. |
| `call_direction` | boolean | Yes | Call direction required by Freshsales: true for incoming, false for outgoing. |
| `targetable_type` | string ("lead" | "contact" | "salesAccount") | Yes | Existing record type: lead, contact, or salesAccount. |
| `confirm_persistent_call_log` | boolean | Yes | Must be true to acknowledge that this creates permanent CRM history and Freshsales documents no call-log delete operation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Log Phone Call for New Record

**Slug:** `FRESHSALES_LOG_PHONE_CALL_FOR_NEW_RECORD`

Create a new Freshsales contact and an irreversible manual call log associated with it, optionally with a note. Contact-field requirements vary by tenant; provide emails when the tenant requires them, but email is not universally required. Neither effect has a documented call-log rollback; explicit confirmation is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | object | No | Optional note; description is mandatory and non-empty when supplied. |
| `outcome_id` | integer | No | Freshsales call outcome ID to assign. |
| `targetable` | object | Yes | Identity, phone, email, and company details for the new contact. |
| `call_direction` | boolean | Yes | Call direction required by Freshsales: true for incoming, false for outgoing. |
| `targetable_type` | string | Yes | New CRM record type to create; the supported value is contact. |
| `confirm_persistent_call_log` | boolean | Yes | Must be true to acknowledge that this creates permanent CRM history and Freshsales documents no call-log delete operation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Lookup Records by Exact Field

**Slug:** `FRESHSALES_LOOKUP_RECORDS`

Look up exact matches across one or more Freshsales lead, contact, sales-account, or deal types using one compatible standard or custom field. Freshsales returns a provider-bounded result set and exposes no pagination parameters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `field` | string | Yes | Exactly one standard field (name, email, or lead company_name) or supported custom text/number/dropdown/radio internal field name. |
| `query` | string | Yes | Exact name, email, or custom-field value to match. |
| `entities` | array | Yes | Entity types to search. The selected field must exist on every entity; Freshsales rejects incompatible combinations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Move Marketing List Contacts

**Slug:** `FRESHSALES_MOVE_MARKETING_LIST_CONTACTS`

Move selected contacts or every contact from one Freshsales marketing list to a different destination list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `selection` | string ("selected" | "all") | Yes | Move only contact_ids, or move every contact from the source list. |
| `contact_ids` | array | No | Required for selected; forbidden for all. |
| `source_list_id` | integer | Yes | Marketing-list ID from which contacts should be removed. |
| `destination_list_id` | integer | Yes | Marketing-list ID that should receive the contacts. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Marketing List Contacts

**Slug:** `FRESHSALES_REMOVE_MARKETING_LIST_CONTACTS`

Remove selected contacts or every contact from one Freshsales marketing list. This changes list membership, not the contact records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `list_id` | integer | Yes | Marketing-list ID to modify. |
| `selection` | string ("selected" | "all") | Yes | Remove only contact_ids, or remove every contact from the list. |
| `contact_ids` | array | No | Required for selected; forbidden for all. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore CPQ Document

**Slug:** `FRESHSALES_RESTORE_CPQ_DOCUMENT`

Restore one soft-deleted Freshsales CPQ document. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `document_id` | integer | Yes | Freshsales CPQ document ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Restore CPQ Product

**Slug:** `FRESHSALES_RESTORE_PRODUCT`

Restore one soft-deleted Freshsales CPQ product. Requires Freshsales CPQ to be licensed and enabled for the connected account. Product create, get, update, delete, and restore paths support OAuth. Official contract: https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | integer | Yes | Freshsales CPQ product ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Contacts by Exact Filters

**Slug:** `FRESHSALES_SEARCH_CONTACTS_FILTERED`

Find exact-match Freshsales contacts with explicit field/operator/value rules.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `per_page` | integer | No | Maximum contacts returned by this non-paginated search (default 10, Freshsales maximum 100). |
| `filter_rules` | array | Yes | One or more exact-match Freshsales contact filter rules. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Records

**Slug:** `FRESHSALES_SEARCH_RECORDS`

Fuzzy-search Freshsales users, standard CRM records, and custom-module records in one bounded request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Fuzzy name or email query. |
| `include` | array | Yes | One or more entity handles: user, lead, contact, sales_account, deal, or a custom-module entity name. Among standard handles, Freshsales rejects sets of four or more that contain all of user, lead, and contact. |
| `per_page` | integer | No | Maximum results returned by this non-paginated search (default 10, Freshsales maximum 100). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Bulk Contact Upsert

**Slug:** `FRESHSALES_START_BULK_CONTACT_UPSERT`

Start an asynchronous upsert of up to 100 Freshsales contacts. Returns only the provider's job acknowledgment and status URL; this tool does not wait for or verify completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contacts` | array | Yes | One to 100 contacts to upsert. Each item requires data and exactly one identifier_name and identifier_value pair. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Bulk Deal Upsert

**Slug:** `FRESHSALES_START_BULK_DEAL_UPSERT`

Start an asynchronous upsert of up to 100 deals. Returns acceptance and a status URL but does not verify completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `deals` | array | Yes | One to 100 deals, each with exactly one matching identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Start Bulk Sales Account Upsert

**Slug:** `FRESHSALES_START_BULK_SALES_ACCOUNT_UPSERT`

Start an asynchronous upsert of up to 100 sales accounts. Returns acceptance and a status URL but does not verify completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sales_accounts` | array | Yes | One to 100 sales accounts, each with exactly one matching identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Appointment

**Slug:** `FRESHSALES_UPDATE_APPOINTMENT`

Update selected fields or attendees on an existing Freshsales appointment and return the updated appointment and related records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more appointment fields or attendees to update. |
| `appointment_id` | integer | Yes | Freshsales appointment ID to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact

**Slug:** `FRESHSALES_UPDATE_CONTACT`

Update selected fields on an existing Freshsales contact and return the updated contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more mutable contact fields using Freshsales field names; custom fields belong under custom_field. |
| `contact_id` | integer | Yes | Freshsales contact ID to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact Team Memberships

**Slug:** `FRESHSALES_UPDATE_CONTACT_TEAM_MEMBERSHIPS`

Add, update, or remove Freshsales contact-team memberships using explicit contact, user, and designation IDs. Removing a membership changes that user's access to the contact; verify all tenant IDs before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | integer | Yes | Freshsales contact ID. |
| `team_members` | array | Yes | Team memberships to add/update or remove. Every item requires explicit user_id and designation_id values; this action never guesses tenant IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update CPQ Document

**Slug:** `FRESHSALES_UPDATE_CPQ_DOCUMENT`

Update document fields or replace its complete product list through the one official PUT contract. Freshworks documents quantity as optional, though some tenants require a positive quantity for every supplied line; products=[] removes all lines. Requires Freshsales CPQ to be licensed and enabled for the connected account. OAuth behavior for CPQ document and template paths remains unverified. Official contract: https://developer.freshsales.io/api/#documents

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `stage` | string | No | Configured document stage. |
| `amount` | number | No | Document amount; cannot be directly updated after products are attached. |
| `deal_id` | integer | No | Deal ID the document belongs to. |
| `include` | string | No | Automatically set to products when products is supplied. |
| `owner_id` | integer | No | Assigned Freshsales user ID. |
| `products` | array | No | Complete replacement product list. Supplying one removes omitted products; an empty list removes all products. |
| `contact_id` | integer | No | Contact ID the document belongs to. |
| `valid_till` | string | No | Document validity timestamp. |
| `document_id` | integer | Yes | Freshsales CPQ document ID to update. |
| `billing_city` | string | No | Billing city. |
| `custom_field` | object | No | Custom fields keyed by Freshsales internal field name. |
| `display_name` | string | No | Unique document display name. |
| `territory_id` | integer | No | Territory ID. |
| `billing_state` | string | No | Billing state or region. |
| `currency_code` | string | No | Document currency code. |
| `document_type` | string | No | Configured CPQ document type. |
| `shipping_city` | string | No | Shipping city. |
| `shipping_state` | string | No | Shipping state or region. |
| `billing_address` | string | No | Billing street address. |
| `billing_country` | string | No | Billing country. |
| `billing_zipcode` | string | No | Billing postal code. |
| `sales_account_id` | integer | No | Sales-account ID the document belongs to. |
| `shipping_address` | string | No | Shipping street address. |
| `shipping_country` | string | No | Shipping country. |
| `shipping_zipcode` | string | No | Shipping postal code. |
| `cpq_document_template_name` | string | No | Existing CPQ template name. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Custom Module

**Slug:** `FRESHSALES_UPDATE_CUSTOM_MODULE`

Update selected display, icon, navigation, or description settings on an existing Freshsales custom-module definition. The internal entity name remains stable when display names change.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `icon` | string ("icon-cm-auction" | "icon-cm-cart" | "icon-cm-connection" | "icon-cm-courses" | "icon-cm-employee" | "icon-cm-event" | "icon-cm-inventory" | "icon-cm-payments" | "icon-cm-people" | "icon-cm-project" | "icon-cm-property" | "icon-cm-schools" | "icon-cm-sku" | "icon-cm-subscription" | "icon-cm-ticket" | "icon-cm-transactions" | "icon-cm-asset" | "icon-cm-assistant" | "icon-cm-category" | "icon-cm-community" | "icon-cm-competitor" | "icon-cm-entitlement" | "icon-cm-file-attachment" | "icon-cm-fulfillment" | "icon-cm-goals" | "icon-cm-hierarchy" | "icon-cm-id-card" | "icon-cm-idea" | "icon-cm-invoice" | "icon-cm-items" | "icon-cm-labels" | "icon-cm-legal" | "icon-cm-location" | "icon-cm-milestone" | "icon-cm-partner" | "icon-cm-payment" | "icon-cm-purchase-order" | "icon-cm-queue" | "icon-cm-relationship" | "icon-cm-revenue-schedule" | "icon-cm-skill" | "icon-cm-storage" | "icon-cm-survey" | "icon-cm-timesheet") | No | New Freshsales icon identifier from the official allowed list. |
| `status` | integer | No | Optional numeric Freshsales module status. |
| `module_id` | integer | Yes | Custom-module definition ID to update. |
| `description` | string | No | New module description. |
| `plural_name` | string | No | New plural display name, limited by Freshsales to 25 characters. |
| `singular_name` | string | No | New singular display name, limited by Freshsales to 25 characters. |
| `show_in_navigation_menu` | boolean | No | Whether to show the module in Freshsales navigation. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Custom Module Record

**Slug:** `FRESHSALES_UPDATE_CUSTOM_MODULE_RECORD`

Update selected fields on one record in a named Freshsales custom module and return the updated record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more mutable record fields using Freshsales field names, including name, owner_id, or custom_field values. |
| `record_id` | integer | Yes | Freshsales custom-module record ID to update. |
| `entity_name` | string | Yes | Internal entity name beginning with cm_; obtain it from GET_CUSTOM_MODULE. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Deal

**Slug:** `FRESHSALES_UPDATE_DEAL`

Update a Freshsales deal, its contact associations, or replace all deal products. Supplying an empty products list removes every line item.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | No | Mutable deal fields using Freshsales wire names, including contact association lists and custom_field. |
| `deal_id` | integer | Yes | Deal ID to update. |
| `include` | string | No | Automatically set to products when products is supplied; otherwise optional related resources. |
| `products` | array | No | Complete replacement product list; an empty list removes all products. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Deal Team Memberships

**Slug:** `FRESHSALES_UPDATE_DEAL_TEAM_MEMBERSHIPS`

Add, update, or remove team memberships for one Freshsales deal.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_id` | integer | Yes | Record ID whose team to change. |
| `team_users` | array | Yes | Team members to add, update, or remove. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Marketing List

**Slug:** `FRESHSALES_UPDATE_MARKETING_LIST`

Rename an existing Freshsales marketing list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | New marketing-list name. |
| `list_id` | integer | Yes | Marketing-list ID to rename. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Note

**Slug:** `FRESHSALES_UPDATE_NOTE`

Replace the text and target association of an existing Freshsales note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note_id` | integer | Yes | Freshsales note ID to update. |
| `description` | string | Yes | Replacement note text. |
| `targetable_id` | integer | Yes | Freshsales ID of the related CRM record. |
| `targetable_type` | string ("Lead" | "Contact" | "SalesAccount" | "Deal") | Yes | Related record type: Lead, Contact, SalesAccount, or Deal. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update CPQ Product

**Slug:** `FRESHSALES_UPDATE_PRODUCT`

Update product fields or add, overwrite, and delete product prices through the one official PUT contract. Requires Freshsales CPQ to be licensed and enabled for the connected account. Product create, get, update, delete, and restore paths support OAuth. Official contract: https://developer.freshsales.io/api/#products

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Product name. |
| `include` | string | No | Automatically set to product_pricings when product_pricings is supplied. |
| `category` | string | No | Exact product-category label configured in the tenant's products form; copy it from Freshsales settings. |
| `owner_id` | integer | No | Assigned Freshsales user ID. |
| `is_active` | boolean | No | Whether the product is active. |
| `product_id` | integer | Yes | Freshsales CPQ product ID to update. |
| `sku_number` | string | No | Unique stock-keeping unit. |
| `valid_till` | string | No | Product validity timestamp. |
| `description` | string | No | Product description. |
| `custom_field` | object | No | Custom fields keyed by Freshsales internal field name. |
| `pricing_type` | integer ("1" | "2") | No | Pricing type, allowed only when prices are first added: 1 one-time or 2 subscription. |
| `product_code` | string | No | Unique product code. |
| `parent_product` | integer | No | Parent product ID. |
| `product_pricings` | array | No | Complete pricing mutations. Existing entries are overwritten by supplied details; delete entries with id and destroy=true. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Sales Account

**Slug:** `FRESHSALES_UPDATE_SALES_ACCOUNT`

Update standard or tenant-defined fields on a Freshsales sales account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | Mutable fields using Freshsales wire names. |
| `sales_account_id` | integer | Yes | Sales-account ID to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Sales Account Team Memberships

**Slug:** `FRESHSALES_UPDATE_SALES_ACCOUNT_TEAM_MEMBERSHIPS`

Add, update, or remove team memberships for one Freshsales sales account. Requires an API-key connection; Freshworks does not authorize this operation through its available OAuth scopes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `record_id` | integer | Yes | Record ID whose team to change. |
| `team_users` | array | Yes | Team members to add, update, or remove. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Sales Activity

**Slug:** `FRESHSALES_UPDATE_SALES_ACTIVITY`

Update selected fields on one existing Freshsales sales activity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more sales-activity fields to update. |
| `sales_activity_id` | integer | Yes | Freshsales sales-activity ID to update. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update or Mark Task Done

**Slug:** `FRESHSALES_UPDATE_TASK`

Update a Freshsales task through the single documented PUT path; set status=1 to mark it completed or status=0 to reopen it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more task fields; use status=1 to mark the task done. |
| `task_id` | integer | Yes | Freshsales task ID to update or mark done. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload and Attach Document

**Slug:** `FRESHSALES_UPLOAD_AND_ATTACH_FILE`

Upload a required file as multipart/form-data and attach it to one explicit Freshsales CRM record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | File to upload and attach to the CRM record. |
| `file_name` | string | No | Optional provider-side display filename. |
| `is_shared` | boolean | No | Whether the uploaded document is shared in Freshsales. |
| `targetable_id` | integer | Yes | Explicit ID of the target CRM record. |
| `targetable_type` | string ("Lead" | "Contact" | "SalesAccount" | "Deal" | "Product") | Yes | Freshsales type of the target record. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Contact

**Slug:** `FRESHSALES_UPSERT_CONTACT`

Create or update one Freshsales contact matched by a unique identifier and return the resulting contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | One or more contact fields to create or update, using Freshsales field names. Put custom fields under custom_field. |
| `identifier_type` | string | Yes | Freshsales contact field name used for matching. Use id or a field marked unique in this tenant's contact form, such as emails, mobile_number, external_id, or a tenant-defined custom field. |
| `identifier_value` | string | Yes | Value of the selected unique identifier. Contact IDs may be strings. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Deal

**Slug:** `FRESHSALES_UPSERT_DEAL`

Create or update a deal by one unique standard or tenant-defined field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | Fields to create or update using Freshsales wire names. |
| `identifier_name` | string | Yes | Deal ID field (id) or another deal field configured as unique in the tenant. |
| `identifier_value` | string | Yes | Value to match. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Sales Account

**Slug:** `FRESHSALES_UPSERT_SALES_ACCOUNT`

Create or update a sales account by one unique standard or tenant-defined field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | Fields to create or update using Freshsales wire names. |
| `identifier_name` | string | Yes | Unique sales-account field, such as name or external_id. |
| `identifier_value` | string | Yes | Value to match. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
