Em breve no Salesforce AppExchange

Como evitar reservas duplicadas no Salesforce

Regras de validação não enxergam outros registros. Essa única limitação explica por que a maioria dos sistemas de reserva no Salesforce descobre seus conflitos com um dia de atraso.

Publicado em 21 de julho de 2026 · Atualizado em 21 de outubro de 2026 · MultiDatePick

Reserva duplicada é um problema de momento. Quando qualquer recurso do Salesforce padrão consegue avisar que a sala está ocupada, o usuário já a escolheu, preencheu o resto do formulário e seguiu em frente.

Por que as ferramentas óbvias não resolvem

FerramentaO que ela fazOnde ela falha
Regra de validaçãoVerifica campos do registro que está sendo salvoNão consegue consultar nenhum outro registro
Regra de duplicidadeCompara campos com valores iguais9:00 às 10:00 e 9:30 às 10:30 se chocam, mas não são iguais
Fluxo acionado por registroConsulta e bloqueia ao salvarDispara depois que o usuário confirmou; falha em massa se for escrito de forma ingênua
Código personalizadoControle total, lógica de sobreposição corretaContinua rejeitando ao salvar, e agora o código é seu para manter

Todas têm o mesmo formato: rejeitam o usuário depois da escolha. Mesmo uma solução personalizada correta resulta em "esse horário está ocupado, tente de novo", uma experiência pior do que nunca oferecer o horário.

Sobreposição não é igualdade

As regras de duplicidade são tentadoras, então aqui vai a regra. Duas reservas entram em conflito quando uma começa antes de a outra terminar e termina depois de a outra começar. Uma reserva das 9:00 às 10:00 e outra das 9:30 às 10:30 se sobrepõem por meia hora sem ter nenhum valor de campo idêntico. Qualquer abordagem baseada em comparar valores vai deixar isso passar todas as vezes.

Conflito e capacidade são problemas diferentes

Muitas vezes são tratados como uma coisa só.

Um conflito

Duas coisas disputando um recurso que comporta uma. Uma sala, um entrevistador, um veículo.

Capacidade

Um recurso que comporta várias. A pergunta é quantas vagas sobram. Uma turma com vinte lugares, um plantão que precisa de quatro enfermeiros, uma área de mesas com sessenta posições.

Tratar um recurso de capacidade como recurso de conflito significa que você nunca consegue reservar a segunda pessoa. Tratar um recurso de conflito como capacidade de um tecnicamente funciona, mas perde as contagens que você provavelmente quer ver nos relatórios.

Demo animada do mapa de calor de ocupação do MultiDatePick no Salesforce: consultores na lateral mostrando a capacidade reservada por dia, mouse sobre um dia lotado e, com um clique, a semana daquele consultor se abre
Capacidade de uma equipe inteira: reservas sobre a capacidade por dia, com os dias acima do limite circulados em laranja.

Três comportamentos sensatos

"Bloquear" nem sempre é o certo. Quando alguém seleciona doze datas e duas delas têm conflito, rejeitar o envio inteiro é hostil. Sistemas úteis oferecem uma escolha:

Bloquear

Recusa a gravação e informa o conflito. Certo quando cada data importa.

Pular

Salva as dez livres e informa as duas que não estavam. Normalmente o padrão mais humano para seleção em massa.

Permitir

Aceita a sobreposição de propósito. Algumas empresas trabalham com overbooking deliberadamente.

Calendário de reservas no Salesforce com indicadores de capacidade e detecção de conflitos evitando reservas duplicadas em cada horário
Contagem de capacidade ao vivo em cada horário, para o conflito ficar visível antes de qualquer clique.

A solução de verdade vem antes

Todos os mecanismos acima atuam na hora de salvar. A solução é levar a verificação para a hora da seleção: consultar o que já existe quando o calendário carrega, desenhar isso na grade e nunca oferecer um horário que já foi tomado. As verificações ao salvar continuam rodando como rede de segurança para a corrida real em que duas pessoas olham o mesmo horário livre, mas deixam de ser a defesa principal.

Como o MultiDatePick faz. Ele lê os registros existentes quando o calendário é exibido, mostra os horários ocupados como ocupados, conta a capacidade com um indicador ao vivo de reservas sobre a capacidade e verifica conflitos de novo ao salvar. Conflict Behavior (Comportamento de Conflito) define bloquear, pular ou permitir. Em um fluxo de tela (Screen Flow), as saídas Conflict Dates e Successful Bookings Count dizem à próxima tela exatamente o que aconteceu.

Acabe com as reservas duplicadas no momento da escolha

Reserve um horário na demo ao vivo e veja os horários ocupados saírem da grade.

  • US$ 20/usuário/mês, todos os recursos
  • Teste grátis de 30 dias, sem cartão
  • 100% nativo do Salesforce
  • Sem Apex
  • Em breve no Salesforce AppExchange