# Deploy project salesforce `POST` `/api/v1/carve/projects/{project_id}/scenarios/{scenario_id}/deploy-salesforce` Trigger an export of a Carve scenario's results to Salesforce. The `crm_connection_id` must identify an active Salesforce OAuth connection. Returns a job ID that can be polled via `GET //deploy/`. To discover available account sheet columns for `field_mappings.account_sheet_column`, call `GET //scenarios//account-sheet/schema` first. To discover valid Salesforce field names for `field_mappings` and `additional_field_updates`, call `GET /api/v1/crm-connections/{crm_connection_id}/metadata` first. Use the `value` from each field object as `match_field`, `update_field`, or `additional_field_updates[].field`. ## Path parameters | Name | Type | Required | Description | |------|------|----------|-------------| | project_id | string | yes | — | | scenario_id | string | yes | — | ## Request body `application/json` | Field | Type | Required | Description | |-------|------|----------|-------------| | crm_connection_id | string | yes | — | | field_mappings | object | yes | — | | field_mappings.account_sheet_column | string | yes | Column name from the scenario account sheet used to match account sheet rows to CRM records (e.g. the account ID or a unique identifier field). Use `GET //scenarios//account-sheet/schema` to discover available column names. | | field_mappings.match_field | string | yes | Salesforce field used to match account sheet rows to CRM records (e.g. the account ID or a unique identifier field). Use `GET /api/v1/crm-connections/{crm_connection_id}/metadata` to discover valid field names. | | field_mappings.update_field | string | yes | Salesforce field to write the account sheet column value into on each matched record. Must differ from any field listed in `additional_field_updates`. For lookup fields, records are matched using the Name field on the referenced object (e.g. User Name). Duplicate or unmatched records are skipped. | | create_target_books | boolean | no | If true, create Gradient Works target books from the export results. | | target_book_ownership_field | string | no | Salesforce field used to assign ownership when creating target books. | | additional_field_updates | array[object] | no | — | | additional_field_updates.field | string | yes | Salesforce field name to update. Must differ from `field_mappings.update_field`. | | additional_field_updates.value | string | yes | Value to write into the Salesforce field. String values must be non-empty. | ## Response `202 Accepted` — `application/json` | Field | Type | Description | |-------|------|-------------| | job_id | string | — | | status | string | — | ## Errors | Status | Description | |--------|-------------| | 403 | Forbidden | | 404 | Not Found | | 409 | Conflict | | 422 | Unprocessable Entity | | 502 | Bad Gateway |