# Deal

Uma proposta, sua oferta, valor negociado e resultado comercial.

Um Deal representa uma proposta a um cliente e, desde 04/11/2026, é também onde o lead fica: um lead novo é um Deal no estágio Lead. O cliente é Company°, People° ou os dois. Product* seleciona uma Offer de Offer (mirror), não um registro de Product. Offer (Price) é o preço de catálogo; Value* é o valor negociado e pode ser diferente.

## Regras e relações

Ligue o cliente em Company°, People° ou nos dois, depois escolha a empresa responsável e uma membership dela. Lead, Contacted, Meeting Scheduled, Pitched, Proposal Sent e Negotiation permanecem abertos; Won, Lost e Abandoned encerram o negócio. Um lead desqualificado é Lost, com o motivo em Notes°. Uma etapa vazia também gera Open em Deal Status. Product*, Value* e Expected Close Date* só são exigidos em Proposal Sent, Negotiation e Won; um lead precisa só do cliente, do par responsável e da etapa. Source° registra como o lead chegou. Encerrar não cria contrato nem fatura.

Os registros da Relationship foram migrados para Deals em 04/11/2026: 476 Deals criados e 3 existentes atualizados. Cada Deal migrado tem a tag relationship-cleanup e, em Legacy Relationship ID, o coreId da Relationship de origem. O fluxo de agendamento do Cal.com cria um Deal em Meeting Scheduled, ou passa de Lead ou Contacted para Meeting Scheduled o Deal aberto da pessoa com o mesmo vendedor. A tabela Relationship foi apagada no mesmo dia, junto com os campos do Deal que apontavam para ela (Relationship*, seus lookups e Attribution Relationship Count).

Expected Close Date* é uma previsão, não prova de aceite. Campaign° liga a campanha do Core de onde o lead veio, pelo espelho Campaign; deixe vazio quando o lead não veio de campanha. O resultado por campanha são os Deals ligados a ela, listados em Deals (Campaign) no espelho Campaign, e cada Interaction do Deal mostra a mesma campanha no lookup Campaign. A tabela Campaign Participation e seus campos no Deal (Campaign Participation°, o lookup Campaign, Participation Relationship UUID, Participation Key, Participation Duplicates, Participation Count e Campaign Attribution Check) foram apagados em 04/11/2026. O fluxo do Cal.com não preenche Campaign°. Este escopo não tem tabela de itens, geração de contrato ou fluxo de pagamento verificado. A formatação monetária usa $; o valor isolado não normaliza moedas nem unidades de cobrança.

## Campos

| Campo | Armazenamento | Configuração atual |
| --- | --- | --- |
| Name | Fórmula | Calculado; veja as regras abaixo. |
| Product* | Registros vinculados | [Offer (mirror)](/pt-br/systems/crm/entity-offer); Seletor de vários registros |
| Offer (Price) | Consulta vinculada | Por Product* → Price* |
| Value* | Valor monetário | $ |
| Notes° | Texto longo | Valor armazenado ou auditoria do sistema; edite conforme o fluxo. |
| Deal # | Número sequencial | Valor armazenado ou auditoria do sistema; edite conforme o fluxo. |
| Accountable (Person)* | Registros vinculados | [People](/pt-br/systems/crm/entity-people); Seletor de vários registros |
| Deal Stage* | Seleção única | Lead, Contacted, Meeting Scheduled, Pitched, Proposal Sent, Negotiation, Won, Lost, Abandoned |
| Expected Close Date* | Data | Valor armazenado ou auditoria do sistema; edite conforme o fluxo. |
| Deal Status | Fórmula | Calculado; veja as regras abaixo. |
| Intake Step | Fórmula | Calculado; veja as regras abaixo. |
| Deal Check | Fórmula | Calculado; veja as regras abaixo. |
| Offer (Item) | Consulta vinculada | Por Product* → Item (Name) |
| Offer (Unit) | Consulta vinculada | Por Product* → Unit* |
| Auth User | Consulta vinculada | Por Accountable (Person)* → Account Binding |
| Interactions | Registros vinculados | [Interaction](/pt-br/systems/crm/entity-interaction); Seletor de vários registros |
| Accountable (Company)* | Registros vinculados | [Companies](/pt-br/systems/crm/entity-companies); Seletor de vários registros |
| Accountable (Person Companies) | Consulta vinculada | Por Accountable (Person)* → Companies |
| Owner Email | Consulta vinculada | Por Accountable (Person)* → Company Email (from Memberships) |
| Created By | Criado por | Valor armazenado ou auditoria do sistema; edite conforme o fluxo. |
| Created At | Data de criação | Valor armazenado ou auditoria do sistema; edite conforme o fluxo. |
| Record health | Fórmula | Calculado; veja as regras abaixo. |
| Health check | Fórmula | Calculado; veja as regras abaixo. |
| Contact Email | Consulta vinculada | Por People° → Email |
| Open send mail link | Botão | Abre o Gmail em compose com Contact Email como destinatário |
| Accountable (Membership)* - to delete (deprecated) | Registros vinculados | [Membership (mirror)](/pt-br/systems/crm/entity-membership); Descontinuado desde 06/11/2026; somente leitura até ser apagado, substituído por Accountable (Person)* |
| Accountable (Person) lookup - to delete (deprecated) | Consulta vinculada | Por Accountable (Membership)* → Member; Descontinuado desde 06/11/2026; somente leitura até ser apagado |
| Auth User (Membership) - to delete (deprecated) | Consulta vinculada | Por Accountable (Membership)* → Auth User; Descontinuado desde 06/11/2026; somente leitura até ser apagado |
| Owner Email (Membership) - to delete (deprecated) | Consulta vinculada | Por Accountable (Membership)* → Company Email; Descontinuado desde 06/11/2026; somente leitura até ser apagado |
| Accountable (Business Unit) - to delete (deprecated) | Consulta vinculada | Por Accountable (Membership)* → Business Unit; Descontinuado desde 06/11/2026; somente leitura até ser apagado, substituído por Accountable (Person Companies) |
| Team (Accountable&lt;membership&gt;) - to delete (deprecated) | Consulta vinculada | Por Accountable (Membership)* → Teams; Descontinuado desde 06/11/2026; somente leitura até ser apagado |
| Tags | Registros vinculados | [Tags](/pt-br/systems/crm/entity-tags); Seletor de vários registros |
| Notes | Registros vinculados | Tabela Notes; Seletor de vários registros |
| Tasks | Registros vinculados | [Tasks](/pt-br/systems/crm/entity-task); Seletor de vários registros |
| Company° | Registros vinculados | [Companies](/pt-br/systems/crm/entity-companies); Seletor de vários registros. A empresa cliente; deixe vazio quando o lead é uma pessoa ainda sem empresa |
| People° | Registros vinculados | [People](/pt-br/systems/crm/entity-people); Seletor de vários registros. O contato principal |
| Source° | Seleção única | Referral, Networking Event, Inbound, Cold Outreach, Existing Relationship |
| Campaign° | Registros vinculados | [Campaign](/pt-br/systems/crm/entity-campaign); Seletor de vários registros. Liga a campanha de onde o lead veio, por exemplo um evento ou uma landing page. Escolha uma campanha quando o lead pertence a uma; senão deixe vazio. Uma campanha que falta é criada no Core, não aqui |
| Legacy Relationship ID | Texto de uma linha | coreId da Relationship de onde este Deal foi migrado em 04/11/2026; vazio nos Deals criados depois. Não edite |

## Regras calculadas

As expressões abaixo usam nomes de campos para facilitar a leitura. Filtros e checks orientam o trabalho; não são controles de acesso. O Name lê Company° e People°, e cai para "No client". O Intake Step fica vazio num Deal encerrado; Deal - 1 não tem cliente, Deal - 2 não tem o par responsável, Deal - 3 está em Proposal Sent ou Negotiation sem Product*, Value* ou Expected Close Date*, e Deal - 4 está completo. O Deal Check só avisa sobre responsável incoerente, e data prevista de fechamento vencida num Deal aberto.

### Name

```text
IF(AND({Company°}, {People°}), ARRAYJOIN({Company°}, ", ") & " - " & ARRAYJOIN({People°}, ", "), IF({Company°}, ARRAYJOIN({Company°}, ", "), IF({People°}, ARRAYJOIN({People°}, ", "), "No client"))) & IF(ARRAYJOIN({Offer (Item)}) != "", " - " & ARRAYJOIN({Offer (Item)}), "") & " - #" & {Deal #}
```

### Deal Status

```text
SWITCH({Deal Stage*}, "Won", "Won", "Lost", "Lost", "Abandoned", "Abandoned", "Open")
```

### Intake Step

```text
IF({Deal Status} != "Open", "",
IF(AND({Company°} = BLANK(), {People°} = BLANK()), "Deal - 1",
IF(OR({Accountable (Company)*} = BLANK(), {Accountable (Person)*} = BLANK()), "Deal - 2",
IF(AND(OR({Deal Stage*} = "Proposal Sent", {Deal Stage*} = "Negotiation"), OR({Product*} = BLANK(), {Value*} = BLANK(), {Expected Close Date*} = BLANK())), "Deal - 3",
"Deal - 4"))))
```

### Deal Check

```text
IF(AND({Accountable (Company)*}, {Accountable (Person)*}, FIND(ARRAYJOIN({Accountable (Company)*}), ARRAYJOIN({Accountable (Person Companies)}, ", ")) = 0), "⚠ Accountable person has no membership in the accountable company. ", "") &
IF(AND({Deal Status} = "Open", {Expected Close Date*}, IS_BEFORE({Expected Close Date*}, TODAY())), "⚠ Expected close date has passed; update it or close the deal. ", "")
```

### Record health

```text
SUM(
IF(OR(COUNTA({Company°})>0, COUNTA({People°})>0),1,0),
IF(COUNTA({Accountable (Company)*})>0,1,0),
IF(COUNTA({Accountable (Person)*})>0,1,0),
IF({Deal Stage*},1,0),
IF(OR({Value*}, NOT(OR({Deal Stage*}="Proposal Sent", {Deal Stage*}="Negotiation", {Deal Stage*}="Won"))),1,0),
IF(OR(COUNTA({Product*})>0, NOT(OR({Deal Stage*}="Proposal Sent", {Deal Stage*}="Negotiation", {Deal Stage*}="Won"))),1,0),
IF(OR({Expected Close Date*}, NOT(OR({Deal Stage*}="Proposal Sent", {Deal Stage*}="Negotiation", {Deal Stage*}="Won"))),1,0)
)/7
```

### Health check

```text
IF(
  AND(
    OR(COUNTA({Company°})>0, COUNTA({People°})>0),
    COUNTA({Accountable (Company)*})>0,
    COUNTA({Accountable (Person)*})>0,
    {Deal Stage*},
    OR(NOT(OR({Deal Stage*}="Proposal Sent", {Deal Stage*}="Negotiation", {Deal Stage*}="Won")), AND({Value*}, COUNTA({Product*})>0, {Expected Close Date*}))
  ),
  "✅",
  "Missing: " & REGEX_REPLACE(
    CONCATENATE(
      IF(OR(COUNTA({Company°})>0, COUNTA({People°})>0), "", "Company or People, "),
      IF(COUNTA({Accountable (Company)*})>0, "", "Accountable (Company), "),
      IF(COUNTA({Accountable (Person)*})>0, "", "Accountable (Person), "),
      IF({Deal Stage*}, "", "Deal Stage, "),
      IF(OR({Deal Stage*}="Proposal Sent", {Deal Stage*}="Negotiation", {Deal Stage*}="Won"),
        IF({Value*}, "", "Value, ") & IF(COUNTA({Product*})>0, "", "Product, ") & IF({Expected Close Date*}, "", "Expected Close Date, "), "")
    ),
    ", $", ""
  )
)
```

## Próximos passos

[Abrir o guia da tarefa](/pt-br/systems/crm/manage-deals) · [Encontrar a view](/pt-br/systems/crm/data-views)