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 › 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.
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.
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.
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.
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.
$ 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 servidorO 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.
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
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.
