Zelo · Backoffice
Meu painel

Psicólogos

Ver e chamar no WhatsApp
Ver e liberar em Cadastros não ativos
–
Psicólogos
–
Em trial
–
Ativas
–
Atrasadas
–
Cortesia
–
MRR (assinaturas ativas)
PsicólogoPlanoAssinaturaMensalidadeVencimentoPacientesConsultas (30d)Cadastro
Nenhum psicólogo cadastrado ainda.

Contas sem e-mail

Só você vê esta parte. A pessoa entra em agendazelo.com.br/login.html com o usuário e a senha, e não recebe e-mails do Zelo (os avisos chegam no sino e no celular).

NomeUsuárioTipoPsicólogoCriada em

Nenhuma conta sem e-mail ainda.

Cadastros não ativos

Só você vê esta parte. Quem criou conta e ainda não é psicólogo ativo: parou no meio do cadastro, está no teste, o teste acabou, atrasou ou cancelou. O botão abre o WhatsApp com uma mensagem pronta, que você pode mudar antes de enviar.

Pediram ajuda da equipe

Logo depois de criar a agenda, a Maria pergunta se a pessoa quer que a equipe do Zelo chame no WhatsApp. Estas disseram que sim. "Chamar" abre o WhatsApp com a mensagem pronta; depois toque em "Já chamei" para tirar daqui.

Essas contas foram criadas quando o e-mail de confirmação não chegava, e a pessoa ficou sem conseguir entrar. "Liberar" termina o cadastro por ela: a conta passa a entrar com o e-mail e a senha que ela escolheu e o psicólogo aparece na aba Psicólogos, no teste grátis. A pessoa recebe o e-mail "Sua conta no Zelo foi aprovada".

NomeWhatsAppSituaçãoCadastroÚltimo acesso

Ninguém parado no momento.

WhatsApp

Página inicial

O número que atende o botão flutuante "Quero agendar uma conversa" em agendazelo.com.br. Sem número, o botão não aparece. A mudança chega ao site em até 1 minuto.

Falta um passo no Supabase (uma vez só)

Abra o Supabase, vá em SQL Editor, cole o código abaixo e toque em Run. Depois recarregue esta página.

create table if not exists configuracoes (
  chave text primary key,
  valor jsonb not null default '{}'::jsonb,
  atualizado_em timestamptz not null default now(),
  atualizado_por uuid
);
alter table configuracoes enable row level security;
Testar o link

Suporte dentro do app

O botão "Suporte" no topo da tela do paciente e do psicólogo. A pessoa escolhe o motivo, descreve rapidinho e a conversa abre neste WhatsApp, já com o texto escrito. Sem número, o botão não aparece.

Uso do app

Quais ferramentas os psicólogos abrem no app e quem está usando. Conta só a abertura da tela: nada do que está escrito nela (notas, áudios, pacientes ou valores).

Falta um passo no Supabase (uma vez só)

Rode o arquivo 17-v1.111-uso.sql no SQL Editor do Supabase e recarregue esta página. Até lá o app funciona normal, só não conta o uso.

Carregando o uso...

Ferramentas mais usadas

Ordem: quantos psicólogos abriram cada uma. Toque num psicólogo lá embaixo para ver só as dele.

Psicólogos ativos por dia

Quantos entraram e abriram alguma ferramenta. Passe o dedo ou o mouse na barra.

Celular ou computador

Por psicólogo

Quem mais usou no período: dias em que entrou, último uso e as ferramentas que mais abre.

Fluxo do site

Como as pessoas andam pela página inicial até o cadastro de psicólogo: de onde vêm, até onde leem, em que botão tocam e quantas se cadastram. Cada visita conta uma vez. É anônimo: nenhum nome, e-mail, IP ou dado de paciente.

Falta um passo no Supabase (uma vez só)

Abra o Supabase, vá em SQL Editor, cole o código abaixo e toque em Run. Depois recarregue esta página. Até lá o site funciona normal, só não conta nada.

-- v1.77 — Fluxo da página comercial e pixel do Meta.
-- Rode uma vez no Supabase (SQL Editor → cole tudo → Run). Pode rodar de novo sem problema.
-- Deve aparecer "Success. No rows returned".

-- Configurações (já existe desde a v1.57; aqui só por garantia). O ID do pixel fica na chave 'meta_pixel'.
create table if not exists configuracoes (
  chave text primary key,
  valor jsonb not null default '{}'::jsonb,
  atualizado_em timestamptz not null default now(),
  atualizado_por uuid
);
alter table configuracoes enable row level security;

-- Eventos anônimos da página: nada de nome, e-mail, telefone, IP ou dado clínico.
-- "sessao" é um código sorteado no navegador que some quando a aba fecha.
create table if not exists eventos_site (
  id bigint generated always as identity primary key,
  criado_em timestamptz not null default now(),
  sessao text not null check (sessao ~ '^[a-z0-9]{16,40}$'),
  tipo text not null check (tipo in ('visita','secao','cta','whatsapp','cadastro_aberto','cadastro_concluido')),
  pagina text not null check (pagina in ('inicio','cadastro')),
  alvo text check (alvo is null or alvo ~ '^[a-z0-9_-]{1,40}$'),
  utm_source text check (char_length(utm_source) <= 80),
  utm_medium text check (char_length(utm_medium) <= 80),
  utm_campaign text check (char_length(utm_campaign) <= 80),
  utm_content text check (char_length(utm_content) <= 80),
  referencia text check (char_length(referencia) <= 100),
  anuncio_meta boolean not null default false,
  dispositivo text check (dispositivo is null or dispositivo in ('celular','computador'))
);
create index if not exists eventos_site_criado_em on eventos_site (criado_em);

-- Só o servidor (chave de serviço) lê e grava. Sem política = ninguém de fora acessa.
alter table eventos_site enable row level security;
Carregando o fluxo...

Funil

Quantas visitas chegaram a cada passo. Embaixo do número, quanto isso é do passo anterior: onde cai muito é onde a página precisa de ajuste.

Visitas por dia

Verde escuro: dia com pelo menos um cadastro. Passe o dedo ou o mouse na barra para ver o número.

De onde vieram

"anúncio" = veio de anúncio pago (utm_medium=pago ou link do Meta).

Celular ou computador

Em que botão tocaram

Botões "Criar minha agenda" de cada parte da página.

Até onde leram

Das visitas, quantas chegaram a cada parte da página, na ordem em que aparecem.

Campanhas

Pelo utm_campaign do link (nome da campanha no Meta).

Anúncios

Pelo utm_content do link (nome do anúncio no Meta).

Link dos anúncios

No Gerenciador de Anúncios, em cada anúncio: Rastreamento › Parâmetros de URL, cole o texto abaixo. O Meta troca as partes entre chaves pelo nome real, e aqui aparece de qual campanha e anúncio veio cada cadastro.

utm_source={{site_source_name}}&utm_medium=pago&utm_campaign={{campaign.name}}&utm_content={{ad.name}}

Na bio e nos posts do Instagram, use: agendazelo.com.br/?utm_source=instagram&utm_medium=bio

Pixel do Meta

Desligado

Liga o pixel na página inicial e no cadastro. Ele só carrega para quem toca em "Aceitar" no aviso de cookies (LGPD). Eventos enviados ao Meta: PageView, CliqueCriarAgenda, Contact (WhatsApp) e CompleteRegistration (cadastro concluído, o melhor para otimizar a campanha).

Onde pego o ID do pixel
  1. Abra business.facebook.com › Gerenciador de Eventos.
  2. Toque em Conectar fontes de dados › Web › Conectar. Dê o nome "Zelo site".
  3. Quando ele perguntar como instalar, escolha Instalar o código manualmente e pode fechar: o código já está no site.
  4. Copie o ID (só números, aparece embaixo do nome do conjunto de dados), cole aqui e salve.
  5. Em Configurações do conjunto, adicione o domínio agendazelo.com.br. Depois abra o site, aceite os cookies e veja o PageView chegar em Testar eventos.

Este aparelho

Para as suas visitas de teste não entrarem nos números. Vale só para este navegador.

Mensalidades

—

Quem pagou e quem não pagou a mensalidade do mês (o mês do vencimento), da plataforma inteira. Quem pagou fora do app, pelo link do cartão ou num Pix sem comprovante, você marca como pago aqui.

Comprovantes

O psicólogo paga a mensalidade pelo Pix na aba Financeiro do painel e manda o comprovante. Confira no extrato se o dinheiro caiu e confirme aqui: a assinatura fica em dia por mais um mês e ele recebe o aviso.

Falta um passo no Supabase (uma vez só)

Abra o Supabase, vá em SQL Editor, cole o conteúdo do arquivo sql/v1.62-financeiro.sql e toque em Run. Depois recarregue esta página.

Comprovantes para conferir

Preço dos planos

O preço padrão de cada plano, em reais por mês. Vale para todos os psicólogos, inclusive os que entrarem depois, e é o valor que já vem no Pix (quem está no teste grátis paga o Plus). Para alguém pagar diferente, ou não pagar, abra a ficha da pessoa em Psicólogos e mude a mensalidade ou marque cortesia; quem tem mensalidade própria paga só o mensal.

O semestral e o anual são pagos de uma vez, pelo período inteiro, e têm fidelidade: quem cancelar antes recebe de volta o que falta usar menos 30%, como está nos termos de uso. A página comercial mostra estes preços, sem falar da fidelidade; a pessoa vê e aceita os termos do plano no app, antes do Pix. Deixe o semestral ou o anual vazio para não oferecer.

Plus

Pro

Pix e cartão

Pix da mensalidade

A conta que recebe. O nome e a cidade aparecem no app do banco de quem paga: escreva como estão no seu banco. O valor sai do preço do plano (aba Preço dos planos) ou da mensalidade própria na ficha do psicólogo.

Teste antes de ligar

Leia este QR Code no app do seu banco: é um Pix de R$ 1,00 para a conta acima. Confira se o nome e a chave estão certos (não precisa pagar).

WhatsApp do financeiro (cartão de crédito)

Enquanto o cartão não está ligado, quem escolhe "Cartão de crédito" é levado a este WhatsApp com a mensagem "Desejo fazer o pagamento por cartão de crédito", o nome, o e-mail e o plano. A equipe responde com o link de pagamento.

Avisos e e-mails

Lembretes, confirmação de presença e avisos de atraso que o Zelo manda sozinho, a cada minuto. Aqui aparece se está tudo ligado e o que falhou.

Falta um passo no Supabase (uma vez só)

Abra o Supabase, vá em SQL Editor, cole o código abaixo e toque em Run. Depois recarregue esta página.

-- v1.57 — processo contra faltas. Rodar uma vez no Supabase (SQL Editor).
-- Pode rodar de novo sem problema: tudo é "if not exists".

-- Presença: o paciente confirma pelo e-mail ou pelo app, e a tela da
-- sessão registra quando cada um entrou na sala.
alter table consultas
  add column if not exists presenca_confirmada_em timestamptz,
  add column if not exists remarcar_pedido_em timestamptz,
  add column if not exists paciente_entrou_em timestamptz,
  add column if not exists psicologo_entrou_em timestamptz;

-- Registro de cada aviso que o Zelo manda (e-mail, app, e futuramente
-- WhatsApp). A chave única garante que nenhum aviso sai duas vezes, e o
-- status mostra no back-office o que falhou.
create table if not exists envios (
  id bigserial primary key,
  chave text not null unique,
  consulta_id uuid references consultas(id) on delete cascade,
  psicologo_id uuid,
  tipo text not null,
  canal text not null,
  destinatario text not null,
  status text not null default 'enviando',
  detalhe text,
  criado_em timestamptz not null default now(),
  atualizado_em timestamptz not null default now()
);
create index if not exists envios_criado_em_idx on envios (criado_em desc);
alter table envios enable row level security;

-- Já criada na v1.56 (WhatsApp do site); repetida aqui por segurança.
create table if not exists configuracoes (
  chave text primary key,
  valor jsonb not null default '{}'::jsonb,
  atualizado_em timestamptz not null default now(),
  atualizado_por uuid
);
alter table configuracoes enable row level security;

Últimas falhas

QuandoAvisoCanalParaErro

Testar os avisos

Manda cada aviso do Zelo com dados de exemplo, com "[Teste]" no assunto: o e-mail para o endereço abaixo e o push para os aparelhos da sua conta. Nenhum paciente ou psicólogo recebe nada, e nenhuma consulta de verdade é usada.

Ver a janela de ativar avisosMostra a janela e a seta como aparecem em cada aparelho. É só demonstração: nada é ativado e o aviso do sistema é desenhado.

—

—

Assinatura

Para usar a cortesia, rode no Supabase o arquivo sql/v1.63-cortesia.sql (uma vez só) e recarregue.

Uso

Pacientes
–
Consultas (30d)
–
CRP
–
Código de convite
–
Cliente desde
–

Notas de suporte (interno, o psicólogo não vê)

Nenhuma nota ainda.