Widgets Incorporáveis
Zenovay oferece widgets prontos para uso que você pode incorporar no seu site para exibir contagens de visitantes em tempo real, linhas do tempo de atividade e detalhamentos geográficos. Nenhuma autenticação necessária; basta usar seu código de rastreamento.
Tipos de Widget
| Widget | Descrição | Caso de Uso |
|---|---|---|
| Realtime | Contagem de visitantes ao vivo | Mostrar visitantes online agora |
| Preview | Linha do tempo de atividade de 24 horas | Exibir atividade de visitantes no último dia |
| Recent | Detalhamento por país nos últimos 30 minutos | Mostrar locais de visitantes recentes |
URL Base
Todos os endpoints de widget estão disponíveis em:
https://api.zenovay.com/widgets/{trackingCode}
Substitua {trackingCode} pelo código de rastreamento do seu site (por exemplo, ZV_XXXXXXXXXXX).
Widget Realtime
Exibe o número atual de visitantes ativos no seu site:
/widgets/:trackingCode/realtimeWidget de contagem de visitantes ao vivo
Parâmetros de Consulta:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
mainTextSize | string | 48px | Tamanho da fonte para a contagem de visitantes |
primaryColor | string | #e78468 | Cor de destaque primária (hex) |
theme | string | system | Tema: light, dark ou system |
hideBranding | boolean | false | Ocultar rodapé "Powered by Zenovay" (Enterprise) |
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/realtime?theme=dark&primaryColor=%236366f1"
width="200"
height="120"
frameborder="0"
style="border-radius: 12px; overflow: hidden;"
></iframe>Visualização do Widget:
O widget realtime exibe:
- Número grande de contagem de visitantes
- Rótulo "visitantes online agora"
- Indicador de pulso animado
- Rodapé de branding opcional
Widget Preview (Linha do Tempo de 24 Horas)
Exibe a atividade de visitantes nas últimas 24 horas como um gráfico de linha do tempo:
/widgets/:trackingCode/previewWidget de linha do tempo de atividade de 24 horas
Parâmetros de Consulta:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
mainTextSize | string | 36px | Tamanho da fonte para a contagem total |
primaryColor | string | #e78468 | Cor da linha do gráfico (hex) |
secondaryColor | string | #8dcdff | Cor de preenchimento do gráfico (hex) |
theme | string | system | Tema: light, dark ou system |
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/preview?theme=light&primaryColor=%236366f1"
width="400"
height="200"
frameborder="0"
style="border-radius: 12px; overflow: hidden;"
></iframe>Visualização do Widget:
O widget preview exibe:
- Total de visitantes nas últimas 24 horas
- Gráfico de detalhamento por hora
- Indicador de hora de pico
- Seta de tendência (para cima/para baixo versus dia anterior)
Widget Recent (Detalhamento por País)
Exibe a atividade de visitantes dos últimos 30 minutos detalhada por país:
/widgets/:trackingCode/recentDetalhamento por país dos últimos 30 minutos
Parâmetros de Consulta:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
mainTextSize | string | 32px | Tamanho da fonte para a contagem |
primaryColor | string | #e78468 | Cor de destaque primária (hex) |
theme | string | system | Tema: light, dark ou system |
hideBranding | boolean | false | Ocultar rodapé de branding (Enterprise) |
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/recent?theme=dark"
width="300"
height="250"
frameborder="0"
style="border-radius: 12px; overflow: hidden;"
></iframe>Visualização do Widget:
O widget recent exibe:
- Contagem de visitantes dos últimos 30 minutos
- Principais países com bandeiras
- Detalhamento de percentual por país
- Atualização ao vivo a cada 30 segundos
Exemplos de Estilo
Tema Escuro com Cores Personalizadas
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/realtime?theme=dark&primaryColor=%2310b981&mainTextSize=64px"
width="220"
height="140"
frameborder="0"
style="border-radius: 16px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);"
></iframe>Tema Claro para Painéis
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;">
<!-- Visitantes ao Vivo -->
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/realtime?theme=light"
width="100%"
height="120"
frameborder="0"
></iframe>
<!-- Linha do Tempo de 24h -->
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/preview?theme=light"
width="100%"
height="120"
frameborder="0"
></iframe>
<!-- Países -->
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/recent?theme=light"
width="100%"
height="120"
frameborder="0"
></iframe>
</div>Carregamento Dinâmico com JavaScript
Carregue widgets dinamicamente com JavaScript:
function loadZenovayWidget(trackingCode, type, options = {}) {
const defaults = {
theme: 'system',
primaryColor: '#e78468',
mainTextSize: '48px'
};
const settings = { ...defaults, ...options };
const params = new URLSearchParams(settings).toString();
const iframe = document.createElement('iframe');
iframe.src = `https://api.zenovay.com/widgets/${trackingCode}/${type}?${params}`;
iframe.width = options.width || '200';
iframe.height = options.height || '120';
iframe.frameBorder = '0';
iframe.style.borderRadius = '12px';
return iframe;
}
// Uso
const widget = loadZenovayWidget('ZV_XXXXXXXXXXX', 'realtime', {
theme: 'dark',
primaryColor: '#10b981',
width: '250',
height: '150'
});
document.getElementById('widget-container').appendChild(widget);Componente React
Incorpore widgets em aplicações React:
interface ZenovayWidgetProps {
trackingCode: string;
type: 'realtime' | 'preview' | 'recent';
theme?: 'light' | 'dark' | 'system';
primaryColor?: string;
width?: number;
height?: number;
}
function ZenovayWidget({
trackingCode,
type,
theme = 'system',
primaryColor = '#e78468',
width = 200,
height = 120
}: ZenovayWidgetProps) {
const params = new URLSearchParams({
theme,
primaryColor
}).toString();
return (
<iframe
src={`https://api.zenovay.com/widgets/${trackingCode}/${type}?${params}`}
width={width}
height={height}
frameBorder="0"
style={{ borderRadius: '12px', overflow: 'hidden' }}
title={`Zenovay ${type} widget`}
/>
);
}
// Uso
<ZenovayWidget
trackingCode="ZV_XXXXXXXXXXX"
type="realtime"
theme="dark"
primaryColor="#10b981"
width={250}
height={150}
/>Componente Vue
Incorpore widgets em aplicações Vue:
<template>
<iframe
:src="widgetUrl"
:width="width"
:height="height"
frameborder="0"
:style="{ borderRadius: '12px', overflow: 'hidden' }"
:title="`Zenovay ${type} widget`"
/>
</template>
<script setup lang="ts">
import { computed } from 'vue';
interface Props {
trackingCode: string;
type: 'realtime' | 'preview' | 'recent';
theme?: 'light' | 'dark' | 'system';
primaryColor?: string;
width?: number;
height?: number;
}
const props = withDefaults(defineProps<Props>(), {
theme: 'system',
primaryColor: '#e78468',
width: 200,
height: 120
});
const widgetUrl = computed(() => {
const params = new URLSearchParams({
theme: props.theme,
primaryColor: props.primaryColor
}).toString();
return `https://api.zenovay.com/widgets/${props.trackingCode}/${props.type}?${params}`;
});
</script>Marca Branca (Enterprise)
Clientes Enterprise podem remover a marca Zenovay:
<iframe
src="https://api.zenovay.com/widgets/ZV_XXXXXXXXXXX/realtime?hideBranding=true&primaryColor=%23your-brand-color"
width="200"
height="100"
frameborder="0"
></iframe>O parâmetro hideBranding está disponível apenas no plano Enterprise. Entre em contato com a equipe Zenovay para habilitar widgets de marca branca em sua conta.
Cache e Desempenho
Os widgets são otimizados para desempenho:
- Cache na CDN: HTML do widget é armazenado em cache na borda para carregamento rápido
- Atualizações de Dados: Dados ao vivo são atualizados a cada 5-30 segundos automaticamente
- Leve: HTML independente sem dependências externas
- Responsivo: Widgets se adaptam ao tamanho do contêiner
Considerações de Segurança
Os widgets exibem apenas dados de análises somente leitura. Seu código de rastreamento foi projetado para ser público e não pode ser usado para modificar ou acessar dados sensíveis.
- Os widgets usam seu código de rastreamento público, não sua chave API
- Nenhuma autenticação é necessária para exibir widgets
- Os dados exibidos são limitados a estatísticas agregadas
- Nenhuma informação pessoal identificável é exposta
Próximos Passos
- API Externa - Acesso completo à API com autenticação
- Dados em Tempo Real - Endpoints JSON para integrações personalizadas
- Eventos Personalizados - Rastrear ações de usuários personalizadas