> ## Documentation Index
> Fetch the complete documentation index at: https://klipy.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# How do I manage deal contacts, qualification, and close reasons?

> Ask Claude to attach a deal contact, record qualification, or log why a deal closed — the deal-specific writes update_crm_record doesn't manage.

A deal carries relationships a plain field patch can't express — who is the economic buyer, whether budget is confirmed, why a deal was actually lost. Those live outside `update_crm_record` on their own dedicated tools. Connect Claude to Klipy and it calls the right one for what you're asking.

## Example prompt

Copy any of these into Claude once it is connected to Klipy:

```text theme={null}
Add Dana Lee to the Acme deal as the economic buyer.
```

```text theme={null}
Mark budget as confirmed on the Acme deal — they approved $50k.
```

```text theme={null}
Close the Acme deal as lost: competitor, they went with Vendor X.
```

## What happens

**1. Adding or re-roling a contact**

Claude calls `update_deal_contacts` to attach Dana with that role. It's additive — every other contact on the deal keeps the role and reporting line they already had, and at most one contact is marked primary per call.

**2. Recording qualification**

Claude calls `set_deal_qualification`, and the criterion key is checked against the deal's own qualification framework (BANT, MEDDIC, etc.) before anything is written.

**3. Recording a close reason**

Claude calls `set_deal_outcome` to record the close reason. Ask it to move the deal to the closing stage in the same request and that stage move fires the usual stage-change automations, with `closeDate` stamped the first time the deal reaches a closing stage.

These are ordinary CRM writes — free, the same as any create or update through the app.

## Good to know

* **`update_crm_record` doesn't manage these fields.** Deal contacts, the main contact, qualification, and the close reason move through these three tools instead — `describe_crm_schema` lists them per deal so Claude never guesses a write path.
* **`update_deal_contacts` never drops a contact you don't name.** Each call merges onto the deal's current membership; contacts left out of the request keep their existing role.
* **A qualification key has to match the deal's own framework.** `set_deal_qualification` validates every criterion key against the framework the deal was seeded with — an unknown key is rejected, not silently ignored.
* **A bare close-reason write never touches `closeDate`.** `set_deal_outcome` only stamps `closeDate` when the same call moves the deal into a closing stage, and only the first time — logging a reason on an already-closed deal doesn't redate it.

## Related

> [card] [CRM updates](https://klipy.ai/docs/guides/mcp/use-cases/crm-updates.md)
>
> Let Klipy's own suggestions drive the rest of a record's fields.

> [card] [Pipeline forecast](https://klipy.ai/docs/guides/mcp/use-cases/pipeline-forecast.md)
>
> See how a deal's stage and confidence feed the forecast.

> [card] [Tool reference](https://klipy.ai/docs/guides/mcp/tools.md)
>
> Every tool Claude can call, grouped by scope.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.