Widgets de Intenção de Saída
Pro FeatureOs Widgets de Intenção de Saída são pop-ups definidos pelo cliente que disparam quando um visitante sinaliza que está prestes a sair da página, com análise integrada de cada impressão, clique e fechamento.
Os Widgets de Intenção de Saída estão disponíveis nos planos Pro, Scale e Enterprise. Atualize seu plano para ativar este recurso.
Visão Geral
Um widget é uma pequena sobreposição configurável renderizada pelo script de rastreamento da Zenovay quando um sinal de intenção de saída é detectado. Você desenha o conteúdo, define a segmentação, e a Zenovay cuida da entrega, do limite de frequência e da análise.
Quando os widgets disparam
O rastreador usa dois sinais de saída específicos por dispositivo:
| Dispositivo | Sinal |
|---|---|
| Desktop | Evento mouseleave com o cursor cruzando a borda superior do viewport |
| Mobile / tablet | Uma rolagem rápida para cima (gesto back-to-top) ou a página retornando da aba em background via visibilitychange |
Ambos os sinais têm anti-rebote e respeitam o limite de frequência por widget, para que o mesmo visitante não veja o mesmo widget duas vezes em uma sessão.
Os widgets exibidos pelo rastreador rodam no lado do cliente. No modo cookieless, o rastreador não persiste IDs de visitante entre carregamentos de página, então a desduplicação entre abas é apenas de melhor esforço — um único visitante que abrir a mesma página em duas abas pode ver o widget em cada uma.
Configuração
Os widgets são gerenciados inteiramente pelo painel da Zenovay — não são necessárias alterações de código além de ter o script de rastreamento instalado.
- Abra Domains e clique no site ao qual deseja adicionar um widget.
- Selecione a aba Widgets (sob Configure).
- Clique em New widget.
- Percorra o construtor de quatro etapas.
O construtor em 4 etapas
Etapa 1 — Conteúdo
Defina o que o widget exibe.
- Title — o cabeçalho (máx. 120 caracteres)
- Body — o texto de apoio (máx. 500 caracteres, texto puro)
- Primary CTA — rótulo do botão e URL de destino (ou um nome de
goal_eventse quiser registrar uma conclusão de meta rastreada em vez de um redirecionamento)
Etapa 2 — Segmentação
Defina quem vê o widget.
- Page pattern — em quais URLs o widget é executado (veja Semântica de segmentação)
- Country — lista de códigos ISO 3166-1 alfa-2 (ex:
US,DE,FR); deixe vazio para todos os países - Device — um ou mais entre
desktop,mobile,tablet - Frequency cap — número máximo de exibições por visitante em N dias (ex: uma vez a cada 7 dias)
- Min visit count — disparar apenas após a N-ésima visualização de página pelo visitante neste site (requer modo não-cookieless)
Etapa 3 — Design
Personalize o widget para combinar com sua marca.
- Position, width, border radius (veja Enums de design)
- Background, text, e button colors (hex)
- Image com posição selecionável (top, left, right, ou full-bleed background)
- Secondary button (opcional) — ou uma ação passiva
dismissou um secondarylink
Etapa 4 — Schedule
- Status —
draft,active, oupaused - Start date / End date (opcional) para campanhas com prazo
Clique em Save e o widget vai ao ar em menos de um minuto (o rastreador recarrega os widgets ativos no próximo carregamento de página).
Semântica de segmentação
Padrão de página
Por padrão, o campo de padrão de página é uma correspondência por substring com o pathname do visitante.
| Padrão | Corresponde a |
|---|---|
/blog | /blog, /blog/post-1, /de/blog/x, /team-blog/about |
/checkout | /checkout, /checkout/payment, /api/checkout/v2 |
* | todas as páginas |
Para correspondência mais precisa, use globs explícitos:
| Padrão | Corresponde a |
|---|---|
/blog/* | /blog/post-1, /blog/category/x (NÃO /de/blog/...) |
/checkout/*/payment | /checkout/abc/payment, /checkout/xyz/payment |
/products/[id] | /products/123, /products/abc-def |
Substring é o padrão porque a maioria dos clientes espera que "/blog" corresponda a todas as páginas de blog independentemente do prefixo de idioma. Use globs (*) quando precisar ancorar o início ou fim do caminho.
País
Códigos ISO 3166-1 alfa-2 separados por vírgula:
US,CA,GB,DE,FR
A detecção de país usa a geolocalização do IP do visitante no momento do carregamento de página. Visitantes da UE com GPC ativado não são enriquecidos, então a segmentação por país recai em "todos os países" para esses visitantes.
Dispositivo
Escolha um ou mais dos três grupos:
desktop
mobile
tablet
O rastreador classifica os dispositivos por User-Agent e largura do viewport, idêntico ao restante do painel.
Limite de frequência
Definido como max_shows_per_n_days. O rastreador armazena um timestamp de impressão por widget no registro do visitante (no servidor, nunca em cookies/localStorage). Quando frequency_cap_n_days ainda não tiver decorrido desde o último evento shown para esse par widget × visitante, o widget é suprimido.
Mínimo de visitas
Definir min_visit_count > 1 requer que o rastreador se lembre quantas vezes esse visitante carregou o site. Como o rastreador da Zenovay roda cookieless por padrão enquanto o consentimento não tiver sido dado, essa regra de segmentação recai silenciosamente em "dispara na primeira visita" para qualquer visitante em modo cookieless.
Se você depende dessa regra, garanta que o rastreador seja carregado com data-cookieless="false" (ou seja, após o consentimento); caso contrário, a regra é inócua para a vasta maioria do tráfego da UE.
Enums de design
Os campos de design são enums bloqueados por segurança — a API aceita apenas os valores abaixo. Isso protege todo widget servido pela Zenovay contra injeção de CSS.
Position
center
top-banner
bottom-banner
top-right
top-left
bottom-right
bottom-left
top-banner e bottom-banner são faixas de largura total. As quatro posições de canto são cartões menores e fixos.
Largura
sm (máx. 320px)
md (máx. 480px)
lg (máx. 640px)
xl (máx. 800px)
As larguras são responsivas — encolhem em viewports menores e nunca excedem a tela do visitante.
Raio de borda
none
sm
md
lg
full
full arredonda o widget em uma pílula (só faz sentido com uma posição em banner).
Posição da imagem
top
left
right
background
background coloca a imagem como fundo de página inteira com um véu de contraste sobre o texto.
Ação secundária
dismiss
link
dismiss fecha o widget sem registrar um clique. link registra um evento secondary_clicked e navega para a URL configurada.
Análise
Cada widget registra quatro tipos de eventos discretos:
| Evento | Quando dispara |
|---|---|
shown | O widget ficou visível no viewport |
clicked | O visitante clicou no CTA principal |
secondary_clicked | O visitante clicou no botão secundário (quando configurado como link) |
dismissed | O visitante fechou o widget sem clicar |
Vista detalhada
Abra qualquer widget em Domains → seu site → aba Widgets para ver:
- CTR —
clicked / shown, com comparação à média do site - Gráfico diário — barras diárias de impressão / clique / fechamento com sparklines
- Funil de conversão —
shown → clicked → goal completed(quando o CTA aponta para uma meta rastreada) - Páginas principais — as URLs em que o widget mais disparou, com CTR por página
- Divisão por dispositivo — divisão desktop / mobile / tablet para impressões vs cliques
Todas as métricas respeitam os mesmos filtros de data-range e segmento do restante do painel.
Privacidade
Os eventos de análise dos widgets usam o mesmo pipeline de eventos cookieless do restante da Zenovay:
- O ID do visitante é um hash SHA-256 com sal diário computado no servidor sobre (sub-rede IP + User-Agent + sal diário). Nenhum cookie e nenhum
localStorageé gravado no navegador do visitante. - A desduplicação entre abas (para que o mesmo visitante não veja o widget duas vezes em duas abas) é apenas de melhor esforço no modo cookieless — sem armazenamento persistente, duas abas são indistinguíveis de dois visitantes com a mesma impressão de fingerprint IP/UA.
- Visitantes com Global Privacy Control (
Sec-GPC: 1) não são enriquecidos — os campos de país e B2B são descartados no servidor, mas o widget continuará disparando se o page pattern, o device, e o frequency cap forem atendidos. - Nenhum conteúdo de widget, nenhum snapshot do DOM e nenhuma entrada de visitante é coletada. Apenas os quatro tipos de eventos listados acima.
Se precisar de segmentação mais estrita (ex: mostrar apenas para usuários autenticados), condicione o widget a um evento personalizado emitido a partir do código da sua própria aplicação em vez de confiar em persistência entre abas.
Limites do plano
| Plano | Widgets por site |
|---|---|
| Free | 0 (bloqueado) |
| Pro | 3 |
| Scale | 10 |
| Enterprise | Ilimitado |
Os limites são aplicados pela API no momento da criação e exibidos como erro no painel se você tentar excedê-los. Para aumentar seu limite, atualize seu plano.
Acesso à API
Gerencie widgets programaticamente:
# List widgets for a website
GET /api/popup-widgets/:websiteId
Authorization: Bearer YOUR_API_KEY
# Get a single widget
GET /api/popup-widgets/:websiteId/:widgetId
# Get analytics for a widget
GET /api/popup-widgets/:websiteId/:widgetId/stats
# Create
POST /api/popup-widgets/:websiteId
# Update
PATCH /api/popup-widgets/:websiteId/:widgetId
# Delete
DELETE /api/popup-widgets/:websiteId/:widgetId
O endpoint público utilizado pelo rastreador (GET /api/popup-widgets/active/:trackingCode) é chamado automaticamente pelo script de rastreamento e não requer autenticação.
Boas práticas
- Transmita valor, não pânico. "Economize 20% no seu primeiro pedido" supera em muito "Espere! Não vá!".
- Limite a uma vez por visitante por semana no mínimo. Um widget em cada visita vira isca para bloqueadores de anúncios.
- Teste em dispositivos móveis separadamente. Os sinais móveis (rolagem para cima + retorno de visibilidade) disparam de forma diferente do
mouseleavedo desktop. Um widget que converte no desktop pode ser invisível no mobile. - Vincule o CTA a um objetivo. Apontar o CTA principal para uma URL rastreada ou
goal_eventpermite ver o funil completoshown → clicked → convertedem vez de apenas cliques. - Pause antes de iterar. Não exclua um widget que está testando em A/B — pause-o para que os históricos de análise permaneçam vinculados.
Próximos passos
- Conversion Funnels - Rastreie caminhos de conversão de múltiplas etapas que o widget pode alimentar
- Goals - Defina os eventos que o CTA do seu widget deve concluir
- Conversion Incidents - Receba alertas quando conversões impulsionadas por widgets caírem