Skip to main content

Quando ocorre

Este evento é disparado quando um membro da equipe marca um negócio como ganho — via painel ou pela API (POST /v1/deals/:id/won). É um dos eventos mais importantes para integrações de CRM e analytics de receita.

Casos de uso comuns

  • Atualizar a oportunidade no CRM externo para “Fechada Ganha”
  • Gerar e enviar a proposta/contrato final automaticamente
  • Criar uma assinatura ou pedido no sistema de billing
  • Notificar o time de customer success para onboarding
  • Registrar a receita em ferramentas de BI ou analytics
  • Disparar um e-mail de boas-vindas para o novo cliente

Payload completo

{
  "id": "evt_01jxc4d5e6f7g8h9i0j1k2l3m",
  "event": "deal.won",
  "organization_id": "664a1b2c3d4e5f6789012345",
  "created_at": "2026-06-15T14:30:00.000Z",
  "data": {
    "id": "664g2h3i4j5k6l7m8n9o0p1q",
    "title": "Proposta Empresa XYZ",
    "value": 500000,
    "currency": "BRL",
    "status": "won",
    "pipeline": {
      "id": "664a1b2c3d4e5f6789012345",
      "name": "Funil Principal"
    },
    "stage": {
      "id": "664e1a2b3c4d5e6f78901233",
      "name": "Fechamento",
      "order": 3
    },
    "contact": {
      "id": "664f1a2b3c4d5e6f78901234",
      "name": "João Silva",
      "email": "joao@empresa.com.br",
      "phone": "+5511999999999"
    },
    "company": {
      "id": "664b1c2d3e4f5a6789012346",
      "name": "Empresa XYZ"
    },
    "assigned_to": {
      "id": "664a1b2c3d4e5f6789012345",
      "name": "Maria Santos"
    },
    "won_by": {
      "id": "664a1b2c3d4e5f6789012345",
      "name": "Maria Santos"
    },
    "tags": ["enterprise", "inbound"],
    "close_date": "2026-06-15T00:00:00.000Z",
    "won_at": "2026-06-15T14:30:00.000Z",
    "created_at": "2026-06-10T17:00:00.000Z"
  }
}

Referência de campos

CampoTipoDescrição
data.statusstringSempre won neste evento
data.won_atstringTimestamp do momento em que foi marcado como ganho
data.won_byobject|nullMembro que registrou o ganho: {id, name}
data.valueinteger|nullValor do negócio em centavos
data.close_datestring|nullData de fechamento registrada
data.contactobject|nullContato vinculado com id, name, email, phone
data.companyobject|nullEmpresa vinculada: {id, name}

Exemplo de handler

if (event === 'deal.won') {
  const valueInReais = data.value / 100;

  // Atualizar CRM externo
  await salesforce.opportunities.close(data.id, 'Closed Won');

  // Notificar equipe
  await slack.notify('canal-vendas', {
    text: `🏆 NEGÓCIO GANHO! "${data.title}" — R$ ${valueInReais.toFixed(2)} — por ${data.won_by?.name}`
  });

  // Iniciar onboarding do cliente
  if (data.contact?.email) {
    await customerSuccess.startOnboarding({
      contactEmail: data.contact.email,
      contactName: data.contact.name,
      dealValue: data.value,
      accountManager: data.assigned_to?.name,
    });
  }

  // Registrar receita em analytics
  await analytics.track('deal_won', {
    dealId: data.id,
    value: data.value,
    currency: data.currency,
    pipeline: data.pipeline.name,
    closedBy: data.won_by?.id,
  });
}