Skip to main content
Nesta página:

Visão geral

A UserIn expõe quatro superfícies de API para diferentes cenários de integração:

Tracker JavaScript

Roda no navegador do visitante. Identifica usuários, captura eventos e configura comportamento do tracker.Objeto global: window.__SmartTrack

Journey Engine

Roda no navegador do visitante. Controla jornadas InSite: dispara triggers manuais, consulta perfil e gerencia estado.Objeto global: window.__JourneyInsiteEngine

REST API (Ingestion)

API server-to-server para enviar dados de identificação, eventos e objetos via HTTP. Ideal para integração backend.Base URL: configurável por ambiente

Offsite API

API server-to-server para disparar jornadas OffSite (email, SMS, push) para usuários específicos via HTTP.Base URL: configurável por ambiente
APIs JavaScript (Tracker e Journey Engine) carregam de forma assíncrona. Se precisar garantir que estão disponíveis antes de chamar métodos, verifique typeof __SmartTrack !== 'undefined' ou typeof __JourneyInsiteEngine !== 'undefined'.

Tracker JavaScript

O Tracker é instalado via tag <script> no site e expõe o objeto global window.__SmartTrack. Ele é responsável por identificar visitantes, capturar eventos e enviar dados para a UserIn.
<script
  src="https://smarttrack.userin.ai/tracker.js"
  api-key="SUA_API_KEY"
></script>
Após o carregamento, todos os métodos ficam disponíveis em __SmartTrack.

Identificação

setExternalUserContext(userId, properties)

Identifica o visitante atual com dados do seu sistema. Vincula o perfil anônimo (criado pelo tracker) ao ID real, unificando todo o histórico de navegação.
__SmartTrack.setExternalUserContext('user_123', {
  email: 'maria@empresa.com',
  name: 'Maria Silva',
  plan: 'premium'
});
ParâmetroTipoObrigatórioDescrição
userIdstringSimID único do usuário no seu sistema
propertiesobjectNãoPropriedades do perfil (email, name, campos customizados)
Chame setExternalUserContext o mais cedo possível após o login do usuário. Quanto antes a identificação, mais completo o perfil unificado.

Eventos customizados

customEvent(eventType, metadata)

Envia um evento customizado para a UserIn. Eventos customizados aparecem na timeline do visitante e podem ser usados como critério em regras, segmentos e jornadas.
__SmartTrack.customEvent('purchase_completed', {
  orderId: 'ORD-789',
  total: 299.90,
  currency: 'BRL'
});
ParâmetroTipoObrigatórioDescrição
eventTypestringSimNome do evento (ex: purchase_completed, add_to_cart)
metadataobjectNãoDados adicionais do evento

track(eventType, metadata)

Método alternativo para enviar eventos, usado internamente pelo Journey Engine. Funciona de forma equivalente a customEvent.
__SmartTrack.track('button_clicked', { buttonId: 'cta-hero' });

Eventos comportamentais

events(config)

Configura quais eventos comportamentais avançados o tracker deve capturar. Por padrão, apenas eventos básicos (pageview, click, scroll) são capturados.
__SmartTrack.events('all');

__SmartTrack.events({
  idle: true,
  rageClick: true,
  keyboardUsage: true,
  hoverFrequency: true,
  clipboardUsage: true
});
EventoDescrição
idleDetecta inatividade do usuário na página
rageClickDetecta cliques frustrados (múltiplos cliques rápidos no mesmo elemento)
keyboardUsagePadrões de uso do teclado (frequência, velocidade)
hoverFrequencyFrequência de hover sobre elementos interativos
clipboardUsageUso de copiar/colar na página
Passe 'all' para ativar todos, ou um objeto com os eventos desejados.

Formulários

forms(config)

Configura a estratégia de captura de formulários. O tracker pode capturar automaticamente dados de formulários enviados, respeitando as regras de exclusão.
__SmartTrack.forms({
  strategy: 'whitelist',
  include: ['#form-contato', '#form-lead'],
  excludeFields: ['password', 'cvv'],
  trigger: 'submit'
});
ParâmetroTipoPadrãoDescrição
strategystring'auto''auto' (todos), 'whitelist' (só os listados), 'blacklist' (todos exceto listados), 'disabled'
includestring[][]Seletores CSS dos formulários a capturar (quando strategy = whitelist)
excludestring[][]Seletores CSS dos formulários a ignorar (quando strategy = blacklist)
excludeFieldsstring[]['password', 'cvv']Nomes de campos a nunca capturar (independente da strategy)
triggerstring'submit'Quando capturar: 'submit' (ao enviar), 'change' (ao alterar) ou 'blur' (ao sair do campo)
Campos sensíveis como password e cvv são excluídos por padrão. Adicione outros campos sensíveis do seu contexto (ex: cpf, card_number) na lista excludeFields.

Getters

Métodos de leitura que retornam informações sobre o visitante atual.

getLocalStorageId()

Retorna o ID persistente do visitante, armazenado no localStorage. Este ID sobrevive entre sessões.
const visitorId = __SmartTrack.getLocalStorageId();
// "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

getSessionId()

Retorna o ID da sessão atual. Muda a cada nova sessão.
const sessionId = __SmartTrack.getSessionId();

getExternalId()

Retorna o ID externo do usuário (definido via setExternalUserContext). Retorna null se o visitante não foi identificado.
const externalId = __SmartTrack.getExternalId();

getCompanyId()

Retorna o ID do projeto (extraído da API Key configurada no script).
const companyId = __SmartTrack.getCompanyId();

Insights AI

O Insights AI adiciona uma camada de inteligência artificial ao tracker. Para ativá-lo, use o atributo buyer-agent no script ou o método JavaScript.

Ativação via script

<script
  src="https://smarttrack.userin.ai/tracker.js"
  api-key="SUA_API_KEY"
  buyer-agent="true"
></script>

Ativação via JavaScript

__SmartTrack.setBuyerAgent(true);
Quando ativado, o Insights AI analisa o comportamento do visitante em tempo real e gera diagnósticos e oportunidades acessíveis na seção Insights da plataforma.

Dados enviados automaticamente

Cada evento enviado pelo tracker inclui automaticamente os seguintes campos:
CampoDescrição
deviceFingerprintIdentificador único do dispositivo
localstorageIdID persistente do visitante
sessionIdIdentificador da sessão atual
companyIdID do projeto (extraído da API Key)
eventTipo do evento (pageview, click, custom, form_submit, etc.)
metadataDados específicos do evento
timestampData/hora do evento (ISO 8601)
urlURL da página atual
referrerURL de origem (página anterior ou fonte externa)

Journey Engine

O Journey Engine é carregado automaticamente junto com o tracker e expõe o objeto global window.__JourneyInsiteEngine. Ele controla a execução de jornadas InSite no navegador do visitante.

triggerJourney(journeyId, options)

Dispara manualmente uma jornada configurada com o gatilho Trigger Manual. Use quando quiser controlar via código o momento exato em que uma jornada inicia.
__JourneyInsiteEngine.triggerJourney('journey-id-123');

__JourneyInsiteEngine.triggerJourney('journey-id-123', {
  triggerNodeId: 'node-id',
  userData: { promoCode: 'WELCOME10' }
});
ParâmetroTipoObrigatórioDescrição
journeyIdstringSimID da jornada a disparar
options.triggerNodeIdstringNãoID do nó de trigger específico (quando há múltiplos triggers)
options.userDataobjectNãoDados adicionais passados ao contexto da jornada
O ID da jornada está disponível na URL do Construtor de Fluxos: /journey-builder/{journeyId}. O nome do trigger é configurado no bloco Trigger Manual da jornada.

listJourneys()

Retorna a lista de jornadas disponíveis e seus triggers.
const journeys = __JourneyInsiteEngine.listJourneys();
console.log(journeys);

getProfile()

Retorna o perfil completo do visitante atual, incluindo atributos, segmentos e sinais computados.
const profile = __JourneyInsiteEngine.getProfile();
console.log(profile);

getUserAttribute(path)

Retorna o valor de um atributo específico do perfil usando notação de ponto.
const intentionLevel = __JourneyInsiteEngine.getUserAttribute('intention.level');
// "high"

const email = __JourneyInsiteEngine.getUserAttribute('contact.email');
// "maria@empresa.com"
ParâmetroTipoObrigatórioDescrição
pathstringSimCaminho do atributo em notação de ponto

hasTag(tag)

Verifica se o visitante atual possui um segmento/tag específico.
const isVIP = __JourneyInsiteEngine.hasTag('vip_customer');
// true ou false

reset()

Reseta o estado de todas as jornadas para o visitante atual. Útil para debug e testes.
__JourneyInsiteEngine.reset();

resetJourney(journeyId)

Reseta o estado de uma jornada específica para o visitante atual.
__JourneyInsiteEngine.resetJourney('journey-id-123');
Os métodos reset() e resetJourney() são ferramentas de debug. Não use em produção para controlar o fluxo de jornadas. Para controlar reentrada, configure a opção de reentrada no bloco de gatilho da jornada.

REST API (Ingestion)

A API de ingestão permite enviar dados para a UserIn via HTTP, sem depender do tracker JavaScript. Ideal para integrações backend, importação de dados e sincronização com sistemas externos. Todas as requisições exigem autenticação via API Key no header Authorization.
Authorization: Bearer SUA_API_KEY
Content-Type: application/json

Identify

Identifica ou atualiza o perfil de um usuário.
POST /ingest/identify
{
  "identifier": {
    "externalId": "user_123"
  },
  "properties": {
    "email": "joao@empresa.com",
    "name": "João Silva",
    "plan": "enterprise"
  },
  "context": {
    "source": "api"
  }
}
CampoTipoObrigatórioDescrição
identifier.externalIdstringSimID único do usuário no seu sistema
propertiesobjectNãoAtributos do perfil (email, name, campos customizados)
context.sourcestringNãoOrigem da identificação (ex: api, crm, import)

Track

Envia um evento para o perfil de um usuário.
POST /ingest/track
{
  "identifier": {
    "externalId": "user_123"
  },
  "event": "purchase_completed",
  "properties": {
    "orderId": "ORD-456",
    "total": 599.90,
    "currency": "BRL"
  }
}
CampoTipoObrigatórioDescrição
identifier.externalIdstringSimID do usuário
eventstringSimNome do evento
propertiesobjectNãoDados adicionais do evento

Objects

Envia dados de objetos definidos na Ontologia.
POST /ingest/objects
{
  "identifier": {
    "externalId": "user_123"
  },
  "objectType": "order",
  "data": {
    "orderId": "ORD-456",
    "status": "completed",
    "items": 3
  }
}
CampoTipoObrigatórioDescrição
identifier.externalIdstringSimID do usuário
objectTypestringSimTipo do objeto (conforme definido na Ontologia)
dataobjectSimDados do objeto

Batch

Envia múltiplos registros em uma única requisição. Suporta até 10.000 itens por chamada.
POST /ingest/batch
{
  "items": [
    {
      "type": "identify",
      "identifier": { "externalId": "user_1" },
      "properties": { "name": "João" }
    },
    {
      "type": "track",
      "identifier": { "externalId": "user_1" },
      "event": "login",
      "properties": {}
    },
    {
      "type": "identify",
      "identifier": { "externalId": "user_2" },
      "properties": { "name": "Maria" }
    }
  ]
}
CampoTipoObrigatórioDescrição
itemsarraySimLista de operações (identify, track ou objects)
items[].typestringSimTipo da operação: identify, track ou objects
Use o endpoint batch para importações em massa. Enviar 10.000 registros em uma chamada é muito mais eficiente do que 10.000 chamadas individuais.

Offsite API

A API Offsite permite disparar jornadas OffSite (email, SMS, push) para usuários específicos via HTTP, sem depender de um evento no site.

Disparar jornada para um usuário

POST /api/journeys/offsite/trigger
{
  "journeyId": "journey-id-123",
  "identifier": {
    "externalId": "user_123"
  }
}
CampoTipoObrigatórioDescrição
journeyIdstringSimID da jornada OffSite a disparar
identifier.externalIdstringSimID do usuário que deve entrar na jornada

Disparar jornada em lote

POST /api/journeys/offsite/trigger-batch
{
  "journeyId": "journey-id-123",
  "identifiers": [
    { "externalId": "user_1" },
    { "externalId": "user_2" },
    { "externalId": "user_3" }
  ]
}
CampoTipoObrigatórioDescrição
journeyIdstringSimID da jornada OffSite
identifiersarraySimLista de usuários a incluir na jornada
A Offsite API é ideal para integrações com CRMs e sistemas de automação externos. Exemplo: quando um evento no seu ERP indica que um cliente está inativo, use a API para disparar uma jornada de reativação com email e SMS.

Storage Keys

O tracker utiliza o localStorage e sessionStorage do navegador para persistir dados entre sessões. Estas chaves podem ser úteis para debug ou integração com outros scripts no site.

localStorage (persistente)

ChaveDescrição
userin_lsidID persistente do visitante (principal)
userin_visitor_idID do visitante (alias)
userin_extidID externo do usuário (após identificação)
userin_external_idID externo (alias)

sessionStorage (por sessão)

ChaveDescrição
userin_session_idID da sessão atual
userin_profileCache do perfil do visitante
userin_loginEstado de autenticação
__userin_policy_queue__Fila de Regras Gerais pendentes de avaliação
Nunca manipule essas chaves diretamente em produção. Elas são gerenciadas internamente pelo tracker. Para ler valores, use os métodos getters (getLocalStorageId(), getSessionId(), getExternalId()).

Próximos passos

Instalar o Tracker

Guia passo a passo para instalar o tracker no seu site.

Conectando Dados

Configure identificação, formulários e eventos após a instalação.

Jornadas

Crie automações que usam triggers manuais e dados da API.

Ontologia de Dados

Configure os objetos e campos customizados usados na API de ingestão.