Skip to main content
POST
Convert Contact
The most involved endpoint on this router. Advances a lead → contact (won/customer), stamping contact_at and converted_at (and backfilling lead_at if the contact skipped straight from target). Optionally also creates or links an account, and optionally creates a deal on that account — all in one call. Steps run sequentially, not in a transaction:
  1. If create_account is true, create a new account (new_account.name → falls back to the contact’s company, then its display name, then "Untitled Account"). Otherwise use account_id (body) or the contact’s existing account_id.
  2. If create_deal is true and an account is now known, create a deal on it (deal_payload.name → falls back to "Deal with {company}").
  3. Patch the contact: stage = "contact", contact_at, converted_at, and (if an account was resolved) account_id + converted_to_account_id, and (if a deal was created) converted_to_deal_id.
A failure in step 2 (deal creation) does not abort the request — it’s reported back as deal_error and the contact is still advanced in step 3. A failure in step 3 is reported as convert_status_error rather than raising, so a client must check for these keys rather than assuming a 200 means every requested side-effect happened.

Auth

Requires a CRM manage scope and an active organization on the token. Any *:manage scope qualifies — in practice contacts:manage, deals:manage, companies:manage, or activities:manage.

Response

Errors

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

contact_id
string
required

The contact's id.

Body

application/json

Advance a contact lead→contact (won/customer), optionally creating or linking an account and creating a deal. The contact already exists, so there is no "create contact" step (unlike the old lead-convert flow).

account_id
string | null

Existing account to link the contact to. Mutually exclusive with create_account.

create_account
boolean
default:false

If true, create a new account from new_account (or fall back to the contact's company/name).

new_account
NewAccountFields · object | null

Fields for the new account when create_account is true.

create_deal
boolean
default:false

If true, also create a deal linked to the resulting account.

deal_payload
DealFields · object | null

Fields for the new deal when create_deal is true.

Response

Successful Response

The response is of type Response Convert Contact Route Contacts Contact Id Convert Post · object.