---
schema_version: "1"
id: 1f75ccac0790ff61210f5cd8354d0d8c093d438540a03a5fa693d48efb6ce3f7
title: Create Quote Members Invocable Action
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/ind/264-0-0/comms_create_quote_members_invocable_action.md
canonical_url: https://help.salesforce.com/s/articleView?id=ind.comms_create_quote_members_invocable_action.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: fac54d5cf1f1d6acb39b0abde53d5df12fa35288fd89ffdd75be4bb2638a8ac8
description: Use b2bCmexCreateQuoteMembers invocable action to create multiple quote members in one synchronous request, with optional duplicate detection.
products:
  - Communications
release: "264"
---
# Create Quote Members Invocable Action

Use b2bCmexCreateQuoteMembers invocable action to create multiple quote members in one synchronous request, with optional duplicate detection.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col style="width:100%"></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: <strong>Enterprise</strong>, <strong>Unlimited</strong>, and <strong>Developer</strong> Editions</td></tr></tbody></table>

Available from the Salesforce REST Actions API, Flow Builder, and OmniStudio in API version 68.0 and later, this action creates or upserts quote members from a JSON array. You can check for existing quote members by using a composite key built from selected fields.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-ind-communications-264-0-0-production-enus/444efb86-ea1e-477e-afbc-56eaac192eaf/images/icon_note.png)

Note To configure this invocable action as an Agentic action in Agentforce, use wrappers for both input and output payload transformation. You can create the wrappers in Apex or in Flow.

## Input Values

   
| Parameter | Required | Description | Data Type |
| --- | --- | --- | --- |
| quoteId | Yes | The ID of the quote to add members to. | String |
| members | Yes | A JSON array of member objects that use field API names as keys. | String (JSON array) |
| checkAsyncJobStatus | No | A Boolean value that indicates whether to check for a concurrent asynchronous job. Set the value to `false` to skip the check. The default value is `true`. | Boolean |
| checkDuplicate | No | A Boolean value that indicates whether to check for existing quote members. | Boolean |
| duplicateCheckFields | No | Field API names used to build the composite duplicate-detection key. When multiple fields are provided, matching always uses AND, so a record is treated as a duplicate only if all provided fields match. | List of Strings |

## Output Values

  
| Parameter | Description | Data Type |
| --- | --- | --- |
| isSuccess | A Boolean value that indicates whether the operation completed successfully. | Boolean |
| createdQuoteMembers | The quote members that the action created or upserted. | List of Strings |
| skippedDuplicateCount | The number of members skipped because duplicates were detected. | Integer |
| error | An error message if the operation failed. | String |

## Usage

Use this action to create quote members in bulk, such as members supplied by a CSV upload.

Set `checkDuplicate` to `true` and specify `duplicateCheckFields` to skip members that match existing composite keys.

The action returns its result synchronously.

## Considerations

- The `members` value is sent as a JSON-encoded string when the REST Actions API is used.
- The running user must have access to the record.
- Business and validation failures are returned in `outputValues.error`, even when the Actions API envelope contains `isSuccess=true`.
- Duplicate checking is optional.

## Example Input

```json
{
  "inputs": [
    {
      "quoteId": "0Q0XXXXXXXXXXXXXXX",
      "members": [
        { "Name": "Acme HQ", "City__c": "London" },
        { "Name": "Acme DC", "City__c": "Leeds" }
      ],
      "checkDuplicate": true,
      "duplicateCheckFields": ["Name", "City__c"]
    }
  ]
}
```

## Example Output

```json
[
  {
    "actionName": "vlocity_cmt__B2BCmexCreateQuoteMembersInvocable",
    "isSuccess": true,
    "errors": null,
    "outputValues": {
      "isSuccess": true,
      "createdQuoteMembers": [
        { "Id": "a0XXXXXXXXXXXXXXXX", "Name": "Acme HQ" }
      ],
      "skippedDuplicateCount": 1,
      "error": null
    }
  }
]
```

## Error Handling

Check `outputValues.error` to determine whether the action succeeded. Business and validation failures don't populate the Actions API `errors` array.

The action returns an error when a required value is blank or when the running user doesn't have access to the record.