Pular para o conteúdo

Pessoas e identidade

Uma pessoa é o perfil durável por trás dos eventos: um ser humano (até onde o Kilden consegue saber), com traits mutáveis e um ou mais distinct ids apontando para ele.

Todo evento nomeia seu ator pelo distinct_id. Dois tipos:

  • Anônimo: anon_ + UUID v7, gerado pelo SDK antes de você saber quem é o usuário.
  • Identificado: seu próprio id de usuário, definido via identify() ou enviado server-side.

O formato tem significado: qualquer coisa que não se pareça com anon_<uuid7> é tratada como usuário identificado — e é isso que torna os níveis de confiança baratos de computar.

Uma pessoa pode ter muitos distinct ids (vários dispositivos, ids pré e pós-cadastro), até um limite de 100.

Traits são o estado atual da pessoa — plano, email, empresa — atualizados por identify(id, traits), setPersonProperties() ou propriedades $set/$set_once em qualquer evento:

  • $set sobrescreve.
  • $set_once escreve apenas chaves que ainda não existem.
  • Traits assinados (dentro de um token de identidade verificado) vencem valores não assinados no mesmo evento.

Atualizações de traits nunca tocam eventos passados; eventos fotografam suas propriedades para sempre.

Quando um identify() revela que duas pessoas são o mesmo ser humano (seu id de usuário já existia e acabou de ser vinculado a partir de uma nova sessão anônima), elas fazem merge:

  • A pessoa mais antiga sobrevive; os distinct ids da mais nova são reapontados para ela.
  • Em conflitos de traits, a sobrevivente mantém seus valores; a pessoa absorvida só preenche lacunas.
  • Eventos históricos não são reescritos (imutabilidade) — as queries resolvem ids de pessoa antigos para a sobrevivente no momento da leitura, então as contagens permanecem corretas.

Merges são unidirecionais e conservadores: dois ids identificados nunca fazem merge automaticamente (esse padrão é quase sempre um bug de instrumentação), e o SDK web não expõe alias()identify cobre o caso do navegador por completo.

As queries de analytics leem eventos com a pessoa resolvida em tempo de consulta (“person on events” mais uma tabela de overrides de merge), então um merge que aconteceu ontem unifica retroativamente todo o histórico de um usuário sem nenhum job de backfill.