07 de mar. de 2025·8 min de leitura

App de check-in de visitantes com crachás QR: modelo de dados e fluxos

Planeje o modelo de dados e os fluxos de um app de check-in com crachás QR: alertas ao anfitrião, perguntas de segurança, logs de emergência e histórico exportável.

App de check-in de visitantes com crachás QR: modelo de dados e fluxos

Que problema o fluxo de check-in precisa resolver

Um fluxo de check-in não é apenas um livro de visitas digital. Ele decide quem está dentro, quem vão encontrar e o que precisa acontecer em seguida. Quando bem feito, a recepção fica calma e você obtém registros confiáveis para depois.

Assinaturas em papel falham de maneira previsível: nomes escritos errado ou ilegíveis, horários faltando e pessoas esquecendo de fazer o checkout. Uma folha no balcão também pode expor informações privadas porque qualquer um vê entradas anteriores. E quando algo muda rápido (um anfitrião preso em reunião, um visitante responde uma pergunta de segurança com sinal vermelho), a equipe acaba correndo atrás por telefone.

Um bom resultado é simples: o check-in leva menos de um minuto, o crachá é claro e escaneável, e o anfitrião recebe o alerta certo sem ser bombardeado. Cada visita vira um registro limpo de quem, quando, onde, por quê e o que foi respondido, para que você possa exportar para auditorias ou investigações.

Antes de desenhar qualquer coisa, defina o escopo. A maioria das equipes começa com alguns tipos de visita: convidados presenciais, contratados (frequentemente com passos extras de segurança), entregas (às vezes sem crachá, mas ainda com registro de horário) e entrevistas (com mais necessidades de privacidade).

Decida também onde a experiência vai morar. Um tablet em quiosque é melhor para velocidade e consistência. Um app web para recepção é melhor para exceções, correções e reimpressões. Uma opção móvel pode ajudar anfitriões ou segurança a verificar check-ins via QR longe do balcão.

Papéis, permissões e os eventos que você deve rastrear

Um app de check-in sobrevive ou morre por duas coisas: papéis claros e um rastro de eventos limpo. Se qualquer um estiver confuso, você terá alertas perdidos, exports bagunçados e logs que ninguém confia.

Papéis a planejar

Mantenha os papéis simples inicialmente:

  • Visitante: fornece seus próprios dados e responde perguntas, mas não vê outras visitas.
  • Anfitrião: vê visitas atribuídas a ele, reconhece chegadas e pode solicitar ações como escolta.
  • Recepcionista (balcão): cria visitas, corrige erros óbvios durante o check-in, reimprime crachás e registra check-outs.
  • Segurança: visualiza quem está no local agora, apoia chamadas de presença em emergências e revisa notas de incidentes.
  • Admin: gerencia sites, políticas e exports, incluindo regras de retenção.

Limites de permissão são mais importantes quando envolvidos dados pessoais e relatórios. Decida cedo quem pode ver números de telefone, dados de identidade ou fotos de visitantes, e quem pode exportar o histórico. Uma regra comum: a recepção executa o fluxo, segurança vê presença atual no local, e somente admins exportam o histórico completo.

Eventos que você sempre deve registrar

Pense em eventos, não apenas em uma única linha de “visita” que é editada ao longo do tempo. Estes são os momentos que você precisará depois para auditorias e investigação:

  • Check-in concluído (timestamp, dispositivo, site)
  • Crachá emitido (ID do crachá, valor QR, impresso por)
  • Anfitrião notificado (canal usado, status de entrega)
  • Respostas de segurança enviadas (qual conjunto de perguntas ou versão foi mostrado)
  • Check-out (quem fez o checkout, como, quando)

Torne eventos críticos auditáveis e append-only (check-in, notificação, check-out). Permita edições limitadas apenas em campos que frequentemente erram (grafia do nome, empresa) e registre o que mudou e quem mudou.

Modelo de dados central: visitantes, visitas, crachás e sites

Um sistema confiável começa com um modelo limpo. A ideia chave é separar a pessoa do evento de ela vir ao local. Um visitante recorrente permanece um registro, enquanto cada chegada vira uma nova visita.

Comece com duas tabelas centrais: Visitantes e Visitas.

  • Um Visitante é a pessoa (nome, telefone, email, empresa, foto opcional ou nota de documento).
  • Uma Visita é uma ocorrência única (data, propósito, quem vai receber, para onde vai).

Um Visitante pode ter muitas Visitas.

Adicione Anfitriões e Sites para que seus logs reflitam como o negócio opera. Anfitriões são funcionários ou locatários que recebem alertas. Sites representam locais físicos (HQ, Armazém A). Se precisar de mais detalhe depois, você pode adicionar zonas (lobby, andar, área segura) sem quebrar o básico.

As tabelas de que você realmente precisa

Mantenha pequeno:

  • Visitantes
  • Visitas
  • Anfitriões
  • Sites
  • Crachás
  • Dispositivos (quiosque/tablet/impressora)

Crachás devem ser atribuídos a uma Visita, não permanentemente a um Visitante. Isso evita confusão quando o estoque de crachás é reutilizado, perdido ou impresso duas vezes.

Status e timestamps que dizem a verdade

Visitas precisam de timestamps e um status que corresponda ao que a equipe fala em voz alta. Armazene pelo menos created_at, checked_in_at, checked_out_at e canceled_at (ou uma flag de cancelamento). Combine isso com um status claro como agendado, chegou, registrado, saiu, no_show, cancelado.

Exemplo: alguém está agendado para 10:00, chega às 9:55 (status: chegou), completa perguntas e recebe um crachá QR (status: registrado). Se sair sem fazer checkout, você ainda tem checked_in_at e pode resolver depois com uma regra explícita.

Perguntas de segurança: como modelar perguntas e respostas

Perguntas de segurança só ajudam se você confiar no histórico depois. Um erro comum é armazenar respostas no perfil do visitante, o que sobrescreve o que disseram na última vez. Trate perguntas como templates e respostas como registros por visita, assim cada check-in guarda seu próprio snapshot.

Uma estrutura simples funciona bem:

  • Um Template de Pergunta define o que você pergunta.
  • Uma Resposta de Visita captura o que foi respondido em uma visita específica.

Templates de pergunta vs respostas por visita

Mantenha templates estáveis e armazene o texto exato mostrado (ou a versão do template) com a resposta. Se você atualizar a redação depois, visitas antigas ainda devem mostrar o que a pessoa realmente viu.

Conjuntos de perguntas permitem mostrar diferentes perguntas conforme contexto, como site, tipo de visitante, janela de tempo (regras temporárias), time do anfitrião ou idioma.

Tipos de resposta e flags de ação

Planeje mais do que sim/não. Tipos comuns incluem sim/não, texto curto, assinatura, foto e upload de documento (como certificado de seguro). Armazene metadados de arquivos (nome, tipo, timestamp) e quem os coletou.

Adicione uma flag “ação requerida” no template, junto com uma regra como “se resposta for SIM, criar alerta de segurança”. Exemplo: “Você está carregando um item restrito?” Se o visitante responder sim, a visita pode mudar para um estado de revisão e exigir aprovação antes de imprimir o crachá.

Alertas para anfitriões: gatilhos, canais e rastreamento de notificações

Notifique anfitriões via mensagens
Envie notificações para anfitriões por email, SMS ou Telegram usando módulos integrados.
Adicionar mensagens

Um alerta para o anfitrião deve responder rápido a uma pergunta: “Preciso agir agora?” Isso geralmente significa uma mensagem curta que inclua quem chegou, onde estão, por que estão ali e se algo precisa de aprovação.

O que deve disparar um alerta

Mantenha gatilhos previsíveis para que anfitriões confiem neles:

  • Um convidado se registra na recepção
  • Um visitante agendado está atrasado por um tempo definido (por exemplo, 10 minutos)
  • Uma resposta de segurança cria uma flag de segurança
  • Chegada VIP (frequentemente com prioridade diferente)

Faça gatilhos orientados por dados: vincule-os a site, tipo de visita e preferências do anfitrião para não codificar casos especiais.

Canais, dedupe e rastreamento

Use múltiplos canais, mas não dispare todos sempre. Um bom padrão é um canal primário, mais um aviso na tela da recepção se a entrega falhar.

Mantenha regras simples:

  • Chave de deduplicação: (visit_id + trigger_type + host_id) dentro de uma janela curta
  • Prioridade: normal vs urgente (urgente pode tentar um segundo canal)
  • Horário silencioso: respeitar horas de trabalho por anfitrião ou site

Rastreie cada notificação como seu próprio registro para auditoria. Armazene status (sent, delivered, failed), detalhes de erro, contagem de tentativas e tempo de nova tentativa. Se uma mensagem falhar, faça fallback para uma ação simples da recepção, como “Ligar para o anfitrião”.

Logs de emergência: capturando presença no local em que se pode confiar

Prepare-se para contagens de emergência
Congele um snapshot de quem está no local e registre confirmações sob pressão.
Criar simulação

Um log de emergência não é igual a um registro normal de visitante. É um snapshot com limite de tempo que você pode confiar durante um simulado, evacuação ou incidente real, mesmo se alguém esquecer de fazer checkout depois.

Defina tipos de entrada e regras desde o início. Um simulado pode ser planejado e iniciado pela equipe. Um incidente pode ser criado por usuários permitidos e depois confirmado por um líder de segurança. Vincule todo evento de emergência a um site (e opcionalmente a uma zona) para poder responder: “Quem deveria estar aqui agora?”

Para cada entrada de log de emergência, capture os campos mínimos que o tornem confiável:

  • Tipo de evento, site e zona opcional
  • Hora de início, hora de fim e status (aberto, fechado)
  • Quem estava no local no início (visitantes, contratados, funcionários)
  • Acknowledgements (quem confirmou as contagens, quando e de qual dispositivo)
  • Identidade do ator para cada mudança (criado por, fechado por, editado por)

Mantenha esses registros append-only. Se alguém corrigir um nome ou marcar uma pessoa como segura, escreva uma nova ação timestamped em vez de sobrescrever valores antigos.

O ganho mais rápido é um botão “Lista atual no local” que puxa todas as visitas ativas para um site e congela a lista no evento de emergência. Facilite o uso sob pressão: visualização com fonte grande, exportação CSV/PDF e filtros por zona e “ainda não confirmados”.

Passo a passo: fluxo completo de check-in e check-out

O fluxo deve funcionar tanto para walk-ins quanto para convidados pré-registrados, e deixar um rastro limpo: quem chegou, quem aprovou, quem ainda está no local e quando saiu.

Fluxo de check-in (do convite ao crachá)

Se puder, comece antes do visitante chegar. Pré-registro cria uma Visita vinculada a uma pessoa, site, anfitrião e janela de horário. Então envie um QR code vinculado especificamente a essa visita para que a recepção não precise adivinhar.

No quiosque, o visitante escaneia o QR ou a recepção busca por nome, empresa ou telefone. Mostre uma rápida confirmação de identidade (por exemplo, nome completo e empresa) antes de prosseguir, para evitar que o “João S.” errado seja registrado.

Em seguida, colete perguntas de segurança e confirmações. Salve cada resposta como seu próprio registro com timestamp e o texto exato mostrado.

Depois que os cheques obrigatórios passarem, emita um crachá e notifique o anfitrião. O crachá deve conter um token QR único mapeado para a Visita ativa, não para a pessoa. Então envie o alerta ao anfitrião e armazene status de entrega, tentativas e (se suportado) leitura ou confirmação.

Fluxo de check-out (incluindo checkout automático)

O checkout deve ser igualmente rápido: escaneie o QR do crachá, confirme a visita e defina check_out_time.

Para check-outs perdidos, use uma regra de fim de dia por site que marque visitas como auto checked-out e registre o motivo. Isso mantém as contagens de emergência mais confiáveis.

Cenário de exemplo: visita de contratado com flag de segurança

Obtenha exports limpos para auditorias
Gere relatórios CSV ou XLSX consistentes com permissões de exportação restritas.
Construir relatórios

Um contratado chamado Jordan chega 20 minutos mais cedo para trocar a unidade de HVAC. Na recepção, Jordan usa um quiosque e escaneia um QR (ou recebe um se for a primeira visita). O sistema cria uma nova Visita vinculada ao site, ao anfitrião esperado e ao ID do crachá.

Durante o check-in, Jordan responde um conjunto curto de perguntas de segurança. Uma pergunta é: “Você fez trabalhos com calor nas últimas 24 horas?” Jordan seleciona “Sim”. Essa resposta é sinalizada, então o status da visita vira “Pendente de aprovação” em vez de “Registrado”. O timestamp e a pergunta e resposta exatas ficam armazenados na visita.

A recepcionista vê três opções claras:

  • Permitir entrada (sobrescrever com um motivo)
  • Negar entrada (registrar o motivo)
  • Solicitar aprovação do anfitrião (recomendado para respostas sinalizadas)

Se for pedida aprovação, o anfitrião é notificado imediatamente com quem está esperando, por que foi sinalizado, onde estão e botões de decisão (aprovar ou negar). O anfitrião também pode ver um breve histórico da visita, como a última data de visita e se houve flags anteriores.

Uma vez aprovado, a visita muda para “Registrado” e o crachá fica ativo. Quando Jordan sai, a recepcionista (ou Jordan no quiosque) faz o checkout. O app registra horário de saída, status de devolução do crachá e uma nota curta, por exemplo “Trocou filtro do HVAC. Sem problemas.” Se o crachá não for devolvido, isso também é registrado.

Erros comuns que geram logs ruins e alertas perdidos

Dados ruins geralmente começam com um atalho no fluxo. O sistema é útil na medida em que o rastro de auditoria consegue responder à pergunta: “Quem esteve aqui, quando e quem aprovou?”

Um erro frequente é misturar identidade do visitante com histórico de visitas. A pessoa deve permanecer estável no tempo, enquanto cada chegada é um registro próprio. Se você sobrescrever um campo de “visita atual” no perfil do visitante, perde a capacidade de auditar visitas repetidas, anfitriões, respostas de segurança e reimpressões de crachá.

QR codes são outra armadilha. Se um código QR nunca expirar, vira um passe reutilizável que pode ser copiado de uma foto. Trate o QR como um token de curta duração ligado a uma emissão de crachá e visita, e invalide-o no checkout.

Edições sem rastreabilidade destroem a confiança silenciosamente. Se a equipe pode alterar respostas de segurança passadas, você precisa armazenar quem mudou o quê e quando, além do valor anterior.

Uma queda do quiosque não deve virar “só deixem entrar” sem registro. Planeje um fallback, como um fluxo por telefone da equipe, um backup em papel que seja digitado depois ou um modo offline que sincronize quando o dispositivo voltar.

Alertas perdidos costumam vir da complexidade do mundo real:

  • Múltiplos sites compartilhando um banco sem um campo Site claro nas visitas e crachás
  • Múltiplos anfitriões por visita (anfitrião primário, backup, caixa de equipe)
  • Mudanças de anfitrião no meio da visita sem log de reatribuição

Checagens rápidas antes do rollout

Adicione alertas para anfitriões que funcionam
Gere mensagens a partir de eventos de visita e armazene status de entrega para evitar faltas.
Configurar alertas

Isso só funciona se os dados se mantiverem consistentes em dias cheios. Antes de colocar no tablet da recepção, faça um teste de “dia bagunçado”: várias chegadas ao mesmo tempo, um crachá perdido e um anfitrião que não responde.

Comece pelo registro de visita. Cada visita deve ter um status claro (pré-registrado, registrado, saiu, negado, cancelado) e timestamps que batam com a vida real. Se alguém iniciar o check-in e sair, decida o que acontece após 5–10 minutos: expirar automaticamente a tentativa ou manter como “iniciado” mas não no local.

Valide o ciclo de vida do crachá de ponta a ponta. Um crachá QR deve ser fácil de auditar: quando foi emitido, quando virou ativo e quando foi devolvido ou expirou. Se um crachá for reimpresso, invalide o QR antigo imediatamente para não ter dois crachás ativos para uma visita.

Uma checklist curta é suficiente:

  • Exports batem com o que a equipe vê na tela (contagens, intervalos de data, filtros por site e anfitrião).
  • Reenviar um alerta não cria duplicatas.
  • Conteúdo do alerta é útil (nome do visitante, site, anfitrião, flags de segurança).
  • Falhas de entrega são visíveis (sent, delivered, failed) e retentativas são seguras.
  • Um simulado de emergência pode produzir uma lista de quem está no local em menos de dois minutos.

Histórico exportável de visitantes: relatórios, retenção e trilha de auditoria

Desenhe perguntas de segurança corretamente
Use templates e respostas por visita para nunca sobrescrever histórico.
Modelar perguntas

Os exports são onde um sistema de check-in vira útil para trabalho real: conformidade, revisões de incidentes e perguntas simples como “Quem esteve aqui na terça passada às 15h?” Decida cedo o que é a “verdade”, porque o export será tratado como o registro.

Suporte pelo menos CSV e XLSX. CSV é melhor para auditorias e imports. XLSX é mais fácil para muitas equipes não técnicas.

Defina um conjunto estável de campos e mantenha o significado consistente ao longo do tempo. Um mínimo prático inclui:

  • ID da Visita (único e nunca reutilizado)
  • Identidade do Visitante (nome mais uma chave estável de visitante)
  • Site e anfitrião
  • Timestamps de check-in e check-out (com timezone)
  • Identificador do crachá (valor QR ou número do crachá)

Mantenha a regra “quem pode exportar” apertada. Tipicamente, a recepção pode ver a lista do dia, segurança pode exportar por intervalo de datas e admins podem exportar tudo. Trate export como permissão própria, não apenas “pode ver visitas”.

Regras de retenção que sobrevivem ao mundo real

Escreva retenção em linguagem simples para que seja aplicada consistentemente. Regras comuns incluem manter logs completos de visita por 12 a 24 meses, anonimizar dados pessoais após o período de retenção (enquanto mantém totais e timestamps), manter logs de emergência por mais tempo se a política exigir e nunca deletar trilhas de auditoria mesmo se anonimizar um visitante.

Trilha de auditoria e pedidos de exclusão

Adicione campos de auditoria a cada registro de visita (created_by/at, edited_by/at) e às ações de export (exported_by/at, escopo do export, formato do arquivo, contagem de linhas).

Para pedidos de exclusão, evite deletes físicos que quebram relatórios. Uma abordagem mais segura é “privacidade por anonimização”: apagar ou hashear campos pessoais (nome, email, telefone), mantendo ID da visita, timestamps, site, anfitrião e códigos de motivo para que os relatórios ainda façam sentido.

Próximos passos: transformar o plano em um app funcional

Converta o modelo em três telas focadas: um check-in em quiosque (rápido, botões grandes), um painel de recepção (chegadas do dia, overrides, reimpressões) e uma visão do anfitrião (quem vem, quem está no local, quem precisa de atenção). Quando cada tela tem uma única função, as pessoas têm menos probabilidade de burlar o processo.

Depois, amarre automações a eventos, não a cliques de botão. Cada mudança de status deve ser algo em que você confia: criado, registrado, crachá emitido, anfitrião notificado, checkout e marcado como saiu durante uma varredura de emergência. Assim, alertas continuam disparando mesmo quando equipes usam dispositivos diferentes.

Uma primeira versão frequentemente suficiente para ir ao ar inclui um site, um quiosque, um painel de recepção, criação e reimpressão de crachás QR, alertas básicos para anfitriões com rastreamento de entrega, perguntas de segurança com uma regra de revisão e export de histórico de visitantes para um intervalo de datas escolhido.

Se preferir construir sem código, uma plataforma como AppMaster (appmaster.io) pode ajudar a configurar o modelo de banco, fluxos e múltiplas front-ends (quiosque, web, mobile) em torno de uma fonte única da verdade. Comece pequeno, pilote em um saguão e expanda quando os logs e alertas se mantiverem consistentes sob pressão real da recepção.

FAQ

How fast should a visitor check-in take in a good system?

Aponte para menos de um minuto para a maioria dos visitantes. Mantenha o caminho feliz em três etapas: identificar a visita (scan do QR ou busca rápida), responder às perguntas obrigatórias e então imprimir o crachá e notificar o anfitrião. Empurre exceções (correção de typos, aprovações, reimpressões) para a tela da recepção para que o quiosque continue rápido.

Should I store visitor info on the visit, or keep a separate visitor profile?

Separe a pessoa da visita. Armazene um registro estável de Visitante (identidade e contatos) e crie um novo registro de Visita para cada chegada, assim você pode auditar timestamps, anfitriões, respostas e emissões de crachá sem sobrescrever o histórico anterior.

How do I prevent QR badges from being reused or copied?

Trate QR codes como tokens de curta duração vinculados a uma emissão de crachá e a uma visita específica. Invalide o token no checkout e também quando reimprimir um crachá, para nunca ter dois crachás ativos para a mesma visita.

What events do I need to log so audits and investigations are trustworthy?

Use eventos append-only para os momentos que você vai precisar depois: check-in concluído, crachá emitido, anfitrião notificado, respostas de segurança salvas e checkout. Quando alguém corrige um erro comum como a grafia do nome, registre quem fez a alteração, quando e qual era o valor antigo.

Who should be allowed to view and export visitor history?

Comece com papéis simples: visitante, anfitrião, recepcionista, segurança e admin. Mantenha as permissões de exportação restritas; um bom padrão é que a recepção execute o fluxo do dia, a segurança veja quem está no local agora e apenas admins possam exportar o histórico completo.

How should I model safety questions so the history doesn’t get corrupted?

Armazene perguntas como templates e respostas por visita, incluindo o texto exato mostrado ou a versão do template. Assim, se você alterar as perguntas depois, visitas antigas ainda mostrarão o que o visitante realmente viu e respondeu.

How do I avoid spamming hosts while still making sure alerts get through?

Rastreie notificações como registros próprios com status como sent, delivered ou failed, além dos detalhes de retentativa. Use uma regra de deduplicação, por exemplo um alerta por anfitrião por gatilho por visita dentro de uma janela curta, e tenha um fallback claro quando a entrega falha (como um prompt para a recepção ligar).

What’s the simplest way to build an emergency onsite list that people trust?

Um log de emergência deve congelar um snapshot com limite de tempo de quem está no local, mesmo se alguém esquecer de dar checkout. Crie um evento de emergência para um site, copie todas as visitas ativas naquele momento e então registre confirmações e alterações como novas ações com timestamp em vez de editar registros.

How should I handle visitors who forget to check out?

Use uma regra previsível de fim de dia por site que marque visitas ainda ativas como auto checked out e registre o motivo. Mantenha o timestamp original do check-in intacto e torne a ação de auto-checkout visível nos logs para não dar a impressão de que a pessoa saiu mais cedo.

What should be in the first release of a visitor check-in app?

Comece com um site, um quiosque e um painel para recepção. Inclua impressão e reimpressão de crachás QR, alertas básicos para anfitriões com rastreamento de entrega, um pequeno conjunto de perguntas de segurança com uma regra de revisão, e exportação limpa em CSV/XLSX por intervalo de datas. Expanda depois que os logs permanecerem consistentes em dias ocupados.

Fácil de começar
Criar algo espantoso

Experimente o AppMaster com plano gratuito.
Quando estiver pronto, você poderá escolher a assinatura adequada.

Comece