Customers · People

A ficha de cada pessoa, do primeiro toque ao pagamento.

Tudo o que a pessoa fez chega por eventos de qualquer sistema, o estágio sai do que ela fez, e agentes propõem o próximo passo. Onde é falar com ela, o passo espera você.

Você entra com um código que chega no e-mail. Uma base por conta, sem workspace e sem seletor de contexto.

Por que isso existe

Saber quem é a pessoa é fácil. Difícil é saber EM QUE MOMENTO ELA ESTÁ.

Lead, prospect e customer são a mesma pessoa em três momentos, e o mercado vende uma ferramenta para cada um. O resultado é a mesma história partida em três lugares, com um estágio que alguém precisa lembrar de digitar.

  • A coluna "estágio" da planilha está certa no dia em que alguém atualiza
  • A mesma pessoa aparece duas vezes, com e-mails diferentes
  • Quem pagou e não começou a usar só aparece quando pede o dinheiro de volta

O caminho inteiro

Eventos entram, a ficha se monta, o agente propõe.

Quatro blocos, e só o primeiro pede você no painel.

1 · Criar a fonte

Cada sistema seu ganha um endereço e um segredo

A fonte nasce no painel com um nome e a base legal declarada: contrato, interesse legítimo ou consentimento. O segredo aparece uma vez; trocar mantém o anterior valendo por 24 horas, para nada parar no meio.

painel
Painel › Dados › Fontes › Nova fonte

nome         Plataforma de aulas
base legal   contrato

-> endereço   https://people.worker.mycustomers.click
             /events/<id-da-fonte>
-> segredo    whsec_…   (aparece uma vez)

2 · Mandar o evento assinado

Qualquer linguagem que calcule um HMAC envia para o People

Standard Webhooks com os cabeçalhos x-ccm, e o corpo é sempre {type, timestamp, data}. Fora da janela de 5 minutos, a entrega é recusada; o mesmo id de novo é reenvio e não duplica. O tipo é o vocabulário do seu sistema.

javascript
import { createHmac, randomUUID } from 'node:crypto'

const id = randomUUID()
const timestamp = Math.floor(Date.now() / 1000)
const body = JSON.stringify({
  type: 'aula.concluida',
  timestamp: new Date().toISOString(),
  data: {
    person: { email: 'ana@escola.exemplo' },
    channel: 'web',
    properties: { aula: 'Primeira aula' },
  },
})
const key = Buffer.from(SECRET.slice(6), 'base64')
const sig = createHmac('sha256', key)
  .update(`${id}.${timestamp}.${body}`)
  .digest('base64')

await fetch(SOURCE_URL, {
  method: 'POST',
  headers: {
    'x-ccm-id': id,
    'x-ccm-timestamp': String(timestamp),
    'x-ccm-signature': `v1,${sig}`,
  },
  body,
})

-> 200 { accepted: 1, duplicates: 0,
        events: [{ personId, stage: 'lead',
          type: 'aula.concluida',
          translated: false, … }] }

3 · Ou importar a planilha

A lista que você já tem entra como está

Uma fonte do tipo importação recebe CSV pelo painel, com cabeçalhos em português ou em inglês. Cada linha vira o primeiro toque da pessoa, com identidade, empresa e origem.

csv
nome,email,telefone,empresa,utm_source
Ana Souza,ana@escola.exemplo,,Escola Exemplo,instagram
Bruno Lima,,+55 11 90000-0000,,indicacao
Carla Dias,,,,

-> 2 pessoas, cada uma com o primeiro toque
-> linha 4 pulada: sem e-mail nem telefone
-> importar de novo: nada muda

4 · Conferir na ficha

O objeto que você confere: a ficha, com a linha do tempo

Cada evento cai na ficha da pessoa certa e o estágio se recalcula. Escolhida a primeira aula como ativação, a primeira vez que ela acontece vira account.activated naquele momento.

ficha
Ana Souza                        prospect
ana@escola.exemplo · Escola Exemplo

linha do tempo
  person.touched      importação   lead
  account.created     web          prospect
  aula.concluida      web
  account.activated   1ª aula      ativou

próximo passo
  Ajuda com o segundo módulo
  [Feito]  [Trocar]

O que você ganha

Cinco trabalhos que ninguém do seu time escreve.

Não é que fiquem mais fáceis. Cada item é código que já existe no People, não uma estimativa de esforço.

Já vem escrito

  • O estágio de cada pessoa lead no primeiro evento, prospect no cadastro, customer só com pagamento confirmado. Cancelou depois de pagar, volta a prospect sem ninguém lembrar.
  • Uma ficha por pessoa um evento só entra numa ficha por identidade igual, em tipo e valor. Quando aponta para duas, a fusão vira sugestão.
  • A empresa de cada um pelo domínio que a fonte informa ou pelo e-mail corporativo. E-mail de provedor gratuito nunca vira empresa.
  • A tradução do vocabulário o seu sistema fala aula.concluida ou pedido.pago, e a fonte guarda a tradução. Tipo sem tradução é guardado como chegou e marcado "a traduzir"; traduzir relê o que já tinha chegado.
  • A trava contra contar duas vezes o mesmo x-ccm-id é a mesma entrega, e a mesma linha do CSV é a mesma pessoa.

Repare que nenhum deles é sobre mandar mensagem todos são sobre saber, com certeza, quem é a pessoa e em que momento ela está. Mandar vem depois, e passa pela sua aprovação.

Integrações

Qualquer Sistema Entra Pelo Mesmo Webhook Assinado

O vocabulário é de quem manda. A tradução fica na fonte, como dado, e nada do que chega assinado é jogado fora.

Para dentro: um protocolo só

A sua loja, a sua plataforma de aulas, o seu app ou um agente: todos falam Standard Webhooks com o prefixo x-ccm. Não há conector preso a ferramenta nenhuma, e qualquer sistema que assine a entrega entra.

Para fora: pela sua conta

A mensagem aprovada sai por e-mail com a chave e o domínio verificado da sua conta no Messages, ou para um destino seu, assinado no mesmo protocolo. Três falhas seguidas pausam o destino, e as mensagens esperam com o motivo.

Para o seu agente: o MCP

O seu agente lê a lista de pessoas, a ficha e a linha do tempo, e propõe na mesma fila. Com o mesmo login do painel, por OAuth. Não há chave de API de leitura.

Não há conector preso a uma ferramenta: o protocolo é aberto, e o que acontece do outro lado de cada destino é decisão sua.

O que o agente pode, e o que não pode

O agente propõe. A PRIMEIRA MENSAGEM É SUA.

Três agentes, um por estágio: Recepção, Acompanhamento e Ativação. Rodam com o modelo da plataforma, sem chave sua para cadastrar, e só propõem. Toda ação, de quem quer que venha, passa por regras puras antes de existir.

  • A oferta de preço é sempre de uma pessoa, barrada no código
  • Data e "em breve" são sempre barrados, diga o Manual o que disser
  • O que o seu Manual proíbe prometer, o opt-out e o horário de silêncio entram na conta
  • Nada some: o que não pode sair espera, com o motivo na tela

A escada de confiança

Uma Checagem Sem IA Antes de Toda Ação

A política é sua, tipo por tipo. As linhas abaixo dizem o que nenhuma política muda.

Cada tipo de ação

Livre, pede confirmação ou bloqueado

A política é sua, tipo por tipo. Nota começa livre; etiqueta, estágio, fusão e mensagens começam pedindo confirmação.

Falar com a pessoa

Começa pedindo confirmação

A escada sugere liberar um tipo depois de 50 pedidos com 95% de aprovação em 30 dias, e nunca sugere isso para mensagens.

Primeira mensagem para quem nunca escreveu

Sempre você

Seja qual for a política, ela espera a sua aprovação.

Oferta de preço

Sempre você

Barrada para agentes no código, sem exceção de política.

Data e "em breve"

Sempre barrados

A checagem sem IA recusa antes de sair. Negar não é prometer.

Limite de contato

Duas por semana, se você não mudar

Conta só o que você inicia; responder a quem escreveu não gasta. Fora do limite ou no horário de silêncio, a mensagem espera.

Apagar

Nunca é ação de agente

Excluir uma pessoa é seu, digitando o nome dela.

Aprovação, saída e resultado são estados da mesma ação: o evento esperado chegou no prazo ou não chegou, e a ficha mostra.

Model Context Protocol

O seu agente lê a ficha e propõe. Nenhuma ferramenta envia nada.

São cinco ferramentas, autenticadas por OAuth 2.1 com o mesmo login do painel. Com leitura, people_list_people, people_get_person e people_get_timeline. Com escrita, people_add_note e people_propose_action, que entram na mesma fila e passam pela mesma checagem.

O que o servidor NÃO oferece

  • Nenhuma ferramenta fala com uma pessoa não há envio pelo MCP, e não haverá: um agente propõe, e a mensagem sai só depois da checagem e da sua aprovação.
  • A conta nunca é argumento ela vem do token. Um texto malicioso que o agente leia não consegue apontar uma ferramenta para a base de outra conta.
  • Apagar não existe como ferramenta nem criar fonte, nem ler segredo. Excluir uma pessoa continua sendo seu, no painel, digitando o nome dela.

Em Equipe, o painel mostra quem está conectado todo cliente MCP que a conta já viu, com revogar e restaurar. Revogado, cada chamada dele responde 401 até alguém permitir de novo.

Como o agente entra

Nenhuma chave no arquivo.

O token nasce no navegador e vale só para este servidor.

OAuth 2.1

Você aprova no navegador, uma vez

Sem chave nenhuma no comando. Na primeira chamada o servidor responde 401, o cliente descobre o servidor de autorização sozinho e abre o navegador, onde você entra com o código do e-mail. O token vale só para este servidor.

bash
$ claude mcp add --transport http \
    customers-people \
    https://people.worker.mycustomers.click/mcp

-> 401 WWW-Authenticate
-> descobre o servidor de autorização
-> abre o navegador
-> você cola o código que chegou no e-mail
-> token com aud = este servidor

O que muda na prática

A pergunta que hoje é uma tarde de planilha

O agente filtra a base pelos mesmos filtros da tela Pessoas, lê a linha do tempo de quem interessa e propõe o próximo passo, dizendo o evento esperado e o prazo. A proposta entra na fila e passa pela checagem.

conversa
Você: "quem se cadastrou e ainda
não assistiu à primeira aula?"

-> people_list_people
  stage: prospect

-> people_get_timeline
  account.created, sem ativação

-> people_propose_action
  kind: email · expects: account.activated
  -> pendente: espera a sua aprovação

O que ele não faz

Dito Antes, Para Ninguém Descobrir Depois

As linhas que pesam contra continuam na tabela. É o que faz as outras valerem alguma coisa.

Mensagem por celular, ligação ou conversa ao vivo

Não

A mensagem sai por e-mail pela sua conta, ou para um destino seu por webhook assinado. O que acontece do outro lado é decisão sua.

Conector pronto para outra ferramenta

Não. Um protocolo aberto

Nenhuma ferramenta de terceiro é "integrada". Qualquer sistema que assine a entrega entra, e o vocabulário dele fica traduzido na fonte.

Nota de interesse ou dado comprado de fora

Não

O estágio vem dos eventos; não há pontuação calculada por modelo, dado comprado de terceiro nem fingerprint.

Chave de API de leitura

Não

A leitura é pelo painel e pelo MCP, com o login de uma pessoa.

Fusão automática de fichas

Nunca

Vira sugestão de fusão, e quem decide é você.

Agente que manda a primeira mensagem ou uma oferta

Nunca

Barrado no código, sem exceção de política.

Se alguma destas linhas não bater com o que você encontrou na prática, conte nos canais da página de contato. A linha é conferida e corrigida.

Sendo justo

Onde um CRM grande já resolve sozinho.

O CRM grande

Onde ele já resolve sozinho

Pipeline visual de oportunidades

Ele tem

Suíte de marketing no mesmo produto

Ele tem

Agentes de atendimento e prospecção

Ele tem

Vários vendedores, assento por pessoa

Feito para isso

Servidor MCP oficial

Ele tem

Vá direto nele se

Você tem um time de vendas

HubSpot, RD Station e Pipedrive são produtos maduros. Para um time de vendas, são a escolha óbvia.

People

A pessoa no centro

Não competimos em quantidade de recurso: eles têm mais. O desenho é outro: a unidade é a pessoa, e o estágio vem do que ela fez, não de um card que alguém arrasta.

  • O estágio sai dos eventos, não do que alguém digitou
  • Customer só com pagamento confirmado
  • Qualquer sistema entra pelo mesmo webhook assinado
  • Agentes que só propõem, com uma checagem sem IA antes
  • A mensagem sai com o seu domínio, pela sua conta
  • Uma base por conta, sem seletor de contexto

Perguntas

As objeções, na ordem em que elas aparecem

Achou um limite que não está escrito aqui?

Os canais estão na página de contato. Se você encontrou onde quebra, a linha entra nesta página antes do próximo visitante descobrir sozinho.

Crie a primeira fonte e veja a primeira ficha se montar.

Você entra com um código que chega no e-mail. A fonte, a importação, o Manual e a fila de aprovação estão no painel.