11 de setembro de 2026 · 6 min de leitura

O cliente aprovou o slide 3, mas o sistema só lembrou do 5: por que decisão de aprovação não pode se perder

O cliente aprovou o slide 3, mas o sistema só lembrou do 5: por que decisão de aprovação não pode se perder

O cliente disse "aprovado", mas o sistema discordou

Imagine a cena: você manda pro cliente o link de aprovação de um carrossel de 6 slides. Ele abre no celular, no elevador, entre uma reunião e outra. Slide 1: aprova. Slide 2: aprova. Slide 3: aprova rápido, quase sem olhar — já viu esse texto antes. Slide 4: pausa, comenta "trocar essa cor". Slide 5 e 6: aprova.

Na cabeça dele, seis decisões foram tomadas. No seu dashboard, quando você confere depois, o slide 3 aparece como se nunca tivesse sido revisado.

Não foi o cliente que esqueceu de clicar. Foi uma corrida entre duas requisições que chegaram perto demais uma da outra — e, até o dia 08/08/2026, o sistema simplesmente jogava fora a decisão que perdesse a corrida.

Por que "salvar o objeto inteiro de novo" é perigoso

A forma mais intuitiva de guardar "o cliente aprovou o slide X" é ler o estado atual de aprovação do carrossel (um JSON com uma entrada por slide), atualizar a entrada certa em memória, e escrever o objeto inteiro de volta no banco. Funciona perfeitamente — desde que só uma coisa aconteça por vez.

O problema é que "clicar rápido entre slides" e "duas abas abertas com a mesma página" não são casos raros de borda. São o comportamento normal de alguém revisando conteúdo pelo celular. E quando duas requisições de aprovação chegam perto o suficiente uma da outra, as duas podem ler o mesmo estado antigo do carrossel antes de qualquer uma delas escrever de volta. A que terminar por último vence — e o objeto que ela escreve não tem a decisão que a outra tinha acabado de registrar. Não é um erro visível, não trava a tela, não mostra mensagem nenhuma. A decisão simplesmente deixa de existir, como se aquele slide nunca tivesse sido revisado.

Pra quem está do lado da agência, isso é pior do que parece à primeira vista: você confia no link de aprovação exatamente pra não precisar ficar perguntando "mas você já viu todos os slides?" no WhatsApp. Se a resposta do sistema pode estar errada silenciosamente, a confiança que o link deveria te dar desaparece — e você volta a fazer manualmente o que a automação devia resolver.

A correção: parar de reescrever o objeto inteiro

A correção não foi adicionar uma trava genérica de "espera aí, uma coisa de cada vez" — isso deixaria a experiência do cliente mais lenta sem necessidade. Foi trocar a forma de gravar.

Em vez de ler o JSON inteiro, mexer nele em memória e escrever tudo de volta, o igency passou a usar uma atualização atômica direto no banco (jsonb_set), que mexe só na chave do slide que está sendo decidido, sem tocar nas demais. Duas decisões concorrentes deixam de disputar "quem escreve por último vence tudo" e passam a coexistir: cada uma grava só a sua própria entrada, não importa a ordem de chegada.

Na prática, isso quer dizer que o cliente pode revisar o carrossel do jeito que já revisa hoje — rápido, no celular, sem se preocupar em esperar cada clique "confirmar" antes do próximo — e cada decisão fica registrada de verdade, sem risco de uma sumir por causa da outra.

Confiabilidade não é feature, é pré-requisito

Esse tipo de correção nunca vai aparecer num changelog chamativo. Não é uma função nova, não muda nenhuma tela. É o tipo de trabalho que só existe pra garantir que o que a tela mostra é o que realmente aconteceu — e é exatamente por isso que ele importa tanto pra quem toca uma agência sozinho: você não tem tempo (nem deveria precisar) pra conferir manualmente se o sistema registrou certo cada aprovação de cliente. O link público de aprovação só vale a pena existir se ele for confiável até no caso de uso comum — cliente revisando rápido, de qualquer dispositivo, sem pensar duas vezes em cada clique.

Como o igency resolve isso na prática

O link de aprovação de carrossel já é público por cliente (/approval/<token-do-cliente>, gerado uma vez na seção 🔗 Link de aprovação do cadastro do cliente) — a correção acima muda só como cada decisão é gravada por baixo, não a tela que o cliente vê. Na prática, o fluxo fica assim:

  1. Você compartilha o link do lote com o cliente — pela lista de clientes ou pelo botão de WhatsApp do card da tarefa no Kanban.
  2. O cliente abre o link e navega slide por slide dentro do próprio carrossel. Cada slide tem os dois botões de sempre: ✓ Aprovar slide e ↩ Pedir revisão (com campo de comentário opcional pra aquele slide específico).
  3. Cada clique num slide dispara uma chamada própria para app/api/approval/[token]/route.ts (ação carousel_item), que grava só a entrada daquele slide no banco — não o carrossel inteiro. É essa gravação isolada por slide que elimina a race: aprovar o slide 3 e o slide 5 quase ao mesmo tempo não faz mais um sobrescrever o outro.
  4. Na sua tela, o contador "X/Y slides revisados" mostra o progresso em tempo real. O botão final — ✓ Confirmar aprovação — só libera depois que todos os slides foram revisados um a um; se algum ficou marcado como "pedir revisão", a única ação disponível é reenviar o carrossel inteiro pra ajuste, com o comentário de cada slide junto.

Nenhum passo novo pro cliente nem pra você — a mudança é só a agência não depender mais de sorte para que dois cliques próximos no tempo não apaguem um ao outro.

Quer um link de aprovação em que nenhuma decisão do cliente some sozinha?

Se você ainda manda carrossel pro cliente aprovar por print ou PDF anexado no WhatsApp, a dor que esse bastidor resolve é exatamente a que te fez cogitar isso: não dá pra confiar que "o cliente aprovou" é fato só porque ele disse que sim numa mensagem solta. No igency, cada slide de carrossel tem aprovação individual pelo link público — e cada clique é gravado como uma decisão própria no banco, sem depender de reler e reescrever tudo de novo, mesmo se o cliente revisar rápido demais ou abrir a mesma página em duas abas ao mesmo tempo.

Se você tem até 3 clientes, o plano Free já inclui aprovação por link e Kanban completos, sem pedir cartão de crédito. Se sua agência já passou disso, o Pro libera clientes ilimitados por R$19,90/mês (ou R$199/ano) — com 30 dias de teste grátis antes da primeira cobrança: o cartão é pedido no cadastro, mas nada sai até o trial terminar, e você cancela quando quiser enquanto isso.

Criar conta grátis no igency →

#aprovacao-de-conteudo#confiabilidade#carrossel#agencias-solo#igency-features#bastidores

Gerencie clientes, tarefas e cobrança sem planilha

Grátis para até 3 clientes. No Pro, 30 dias de teste antes da primeira cobrança.

Testar o igency Pro grátis →