# Deploy project hubspot `POST` `/api/v1/carve/projects/{project_id}/scenarios/{scenario_id}/deploy-hubspot` Trigger an export of a Carve scenario's results to HubSpot. The `crm_connection_id` must identify an active HubSpot OAuth connection. Returns a job ID that can be polled via `GET //deploy/`. To discover available account sheet columns for `property_mappings.account_sheet_column`, call `GET //scenarios//account-sheet/schema` first. To discover valid HubSpot property names for `property_mappings` and `additional_property_updates`, call `GET /api/v1/crm-connections/{crm_connection_id}/metadata` first. Use the `value` from each property object as `match_property`, `update_property`, or `additional_property_updates[].property`. ## 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 | — | | property_mappings | object | yes | — | | property_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. | | property_mappings.match_property | string | yes | HubSpot property used to match account sheet rows to CRM records (e.g. the account ID or a unique identifier property). Use `GET /api/v1/crm-connections/{crm_connection_id}/metadata` to discover valid property names. | | property_mappings.update_property | string | yes | HubSpot property to write the account sheet column value into on each matched record. Must differ from any property listed in `additional_property_updates`. For lookup properties, records are matched using the Name field on the referenced object (e.g. User Name). Duplicate or unmatched records are skipped. | | additional_property_updates | array[object] | no | — | | additional_property_updates.property | string | yes | HubSpot property name to update. Must differ from `property_mappings.update_property`. | | additional_property_updates.value | string | yes | Value to write into the HubSpot property. 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 |